Le traitement par lots informatisé est une méthode d'exécution automatique de programmes logiciels appelés tâches par lots. Bien que les utilisateurs soient tenus de soumettre les tâches, aucune autre interaction de leur part n'est requise pour traiter le lot. Les lots peuvent être exécutés automatiquement à des heures programmées ou en fonction de la disponibilité des ressources informatiques.
Histoire
Le terme « traitement par lots » trouve son origine dans la classification traditionnelle des méthodes de production en production à la tâche (production unique), production par lots (production d'un « lot » de plusieurs articles à la fois, une étape à la fois) et production en flux (production de masse, toutes les étapes du processus en même temps).
Histoire ancienne
Les premiers ordinateurs ne pouvaient exécuter qu'un seul programme à la fois. Chaque utilisateur avait le contrôle exclusif de la machine pendant une période de temps programmée. Il arrivait à l'ordinateur avec le programme et les données, souvent sur des cartes perforées et des bandes magnétiques ou papier, et chargeait son programme, l'exécutait et le corrigeait, puis envoyait son résultat une fois terminé.
Les ordinateurs devenant plus rapides, le temps de configuration et de démontage représentait un pourcentage plus important du temps informatique disponible. Des programmes appelés moniteurs , précurseurs des systèmes d'exploitation , ont été développés pour traiter une série, ou « lot », de programmes, souvent à partir d' une bande magnétique préparée hors ligne. Le moniteur était chargé dans l'ordinateur et exécutait la première tâche du lot. À la fin de la tâche, il reprenait le contrôle et chargeait et exécutait le suivant jusqu'à ce que le lot soit terminé. Souvent, la sortie du lot était écrite sur une bande magnétique et imprimée ou perforée hors ligne. Parmi les exemples de moniteurs, citons le Fortran Monitor System d'IBM , le SOS (Share Operating System) et enfin l'IBSYS pour les systèmes 709x d'IBM en 1960.
Systèmes de troisième génération
Les ordinateurs de troisième génération capables de multiprogrammation ont commencé à apparaître dans les années 1960. Au lieu d'exécuter un travail par lots à la fois, ces systèmes peuvent avoir plusieurs programmes par lots exécutés en même temps afin de maintenir le système aussi occupé que possible. Un ou plusieurs programmes peuvent attendre une entrée, l'un s'exécutant activement sur le processeur et les autres générant une sortie. Au lieu d'une entrée et d'une sortie hors ligne, des programmes appelés spoolers lisent les travaux à partir de cartes, de disques ou de terminaux distants et les placent dans une file d'attente de travaux à exécuter. Afin d'éviter les blocages, le planificateur de travaux doit connaître les besoins en ressources de chaque travail (mémoire, bandes magnétiques, disques montables , etc.). Différents langages de script ont donc été développés pour fournir ces informations de manière structurée. Le plus connu est probablement le langage de contrôle des travaux (JCL) d'IBM. Les planificateurs de travaux sélectionnent les travaux à exécuter en fonction de divers critères, notamment la priorité, la taille de la mémoire, etc. Le traitement par lots à distance est une procédure permettant de soumettre des travaux par lots à partir de terminaux distants, souvent équipés d'un lecteur de cartes perforées et d'une imprimante ligne par ligne . Parfois, le multitraitement asymétrique est utilisé pour traiter les entrées et les sorties par lots pour un ou plusieurs grands ordinateurs à l'aide d'un système plus petit et moins coûteux, comme dans le processeur de support attaché IBM System/360 .
Histoire ultérieure

Le premier système de partage de temps à usage général, le système de partage de temps compatible (CTSS), était compatible avec le traitement par lots. Cela a facilité la transition du traitement par lots vers l'informatique interactive .
À partir de la fin des années 1960, les calculs interactifs, comme ceux effectués via des interfaces de terminaux informatiques textuelles (comme dans les shells Unix ou les boucles de lecture-évaluation-impression ), et plus tard les interfaces utilisateur graphiques, sont devenus courants. Les calculs non interactifs, à la fois les tâches ponctuelles telles que la compilation et le traitement de plusieurs éléments par lots, ont été rétrospectivement appelés traitement par lots , et le terme de travail par lots (au début, souvent « lot de tâches ») est devenu courant. On en trouve une utilisation précoce notamment à l' Université du Michigan , autour du Michigan Terminal System (MTS).
Bien que le partage du temps ait existé, son utilisation n'était pas suffisamment robuste pour le traitement des données d'entreprise ; rien de tout cela n'était lié à l' équipement d'enregistrement unitaire antérieur , qui était exploité par l'homme.
En cours
Le calcul non interactif reste omniprésent en informatique, à la fois pour le traitement général des données et pour les tâches de « maintenance » du système (utilisant un logiciel système ). Un programme de haut niveau (exécutant plusieurs programmes, avec une logique de « collage » supplémentaire) est aujourd'hui le plus souvent appelé script et écrit dans des langages de script , en particulier des scripts shell pour les tâches système ; dans IBM PC DOS et MS-DOS, on parle plutôt de fichier batch . Cela inclut les ordinateurs basés sur UNIX , Microsoft Windows , macOS (dont la base est le noyau Unix BSD ) et même les smartphones . Un script en cours d'exécution, en particulier celui exécuté à partir d'une session de connexion interactive , est souvent appelé tâche , mais ce terme est utilisé de manière très ambiguë.
« Il n'existe pas d'équivalent direct au traitement par lots z/OS sur les systèmes PC ou UNIX. Les tâches par lots sont généralement exécutées à une heure programmée ou selon les besoins. La comparaison la plus proche est peut-être celle avec les processus exécutés par une commande at ou cron sous UNIX, bien que les différences soient importantes. »
Systèmes modernes
Les applications par lots sont toujours essentielles dans la plupart des organisations, en grande partie parce que de nombreux processus commerciaux courants peuvent être traités par lots. Bien que les systèmes en ligne puissent également fonctionner lorsque l'intervention manuelle n'est pas souhaitée, ils ne sont généralement pas optimisés pour effectuer des tâches répétitives à volume élevé. Par conséquent, même les nouveaux systèmes contiennent généralement une ou plusieurs applications par lots pour la mise à jour des informations en fin de journée, la génération de rapports, l'impression de documents et d'autres tâches non interactives qui doivent être exécutées de manière fiable dans certains délais commerciaux.
Certaines applications sont adaptées au traitement par flux, notamment celles qui n'ont besoin que de données provenant d'une seule entrée à la fois (pas de totaux, par exemple) : démarrez l'étape suivante pour chaque entrée lorsqu'elle termine l'étape précédente. Dans ce cas, le traitement par flux réduit la latence des entrées individuelles, ce qui permet de les terminer sans attendre la fin du lot entier. Cependant, de nombreuses applications nécessitent des données provenant de tous les enregistrements, notamment des calculs tels que les totaux. Dans ce cas, le lot entier doit être terminé avant d'obtenir un résultat exploitable : les résultats partiels ne sont pas exploitables.
Les applications par lots modernes utilisent des frameworks de traitement par lots modernes tels que Jem The Bee, Spring Batch ou des implémentations de JSR 352 écrites pour Java , ainsi que d'autres frameworks pour d'autres langages de programmation, afin de fournir la tolérance aux pannes et l'évolutivité requises pour le traitement à haut volume. Afin de garantir un traitement à grande vitesse, les applications par lots sont souvent intégrées à des solutions de calcul en grille pour partitionner un travail par lots sur un grand nombre de processeurs, bien que cela pose des défis de programmation importants. Le traitement par lots à haut volume impose également des exigences particulièrement lourdes aux architectures système et applicative. Les architectures qui présentent de fortes performances d'entrée/sortie et une évolutivité verticale, y compris les ordinateurs centraux modernes , ont tendance à offrir de meilleures performances par lots que les alternatives.
Les langages de script sont devenus populaires à mesure qu'ils ont évolué avec le traitement par lots.
Fenêtre de traitement par lots
Une fenêtre de traitement par lots est « une période d'activité en ligne moins intense » lorsque le système informatique est capable d'exécuter des tâches par lots sans interférence de ou avec des systèmes interactifs en ligne.
Les tâches de fin de journée (EOD) d'une banque nécessitent le concept de coupure , où les transactions et les données sont coupées pour l'activité par lots d'un jour particulier (« les dépôts après 15 heures seront traités le lendemain »).
À mesure que les exigences en matière de disponibilité des systèmes en ligne se sont développées pour prendre en charge la mondialisation , Internet et d'autres besoins commerciaux, la fenêtre de traitement par lots s'est rétrécie et l'accent a été mis de plus en plus sur les techniques qui nécessiteraient que les données en ligne soient disponibles pendant une durée maximale.
Taille du lot
La taille du lot fait référence au nombre d'unités de travail à traiter dans une opération de lot. Voici quelques exemples :
- Le nombre de lignes d'un fichier à charger dans une base de données avant de valider la transaction.
- Le nombre de messages à retirer d'une file d'attente.
- Le nombre de requêtes à envoyer dans une charge utile.
Utilisation courante du traitement par lots
- Mises à jour efficaces des bases de données en masse et traitement automatisé des transactions , contrairement aux applications de traitement interactif des transactions en ligne (OLTP). L' étape d'extraction, de transformation et de chargement (ETL) dans le remplissage des entrepôts de données est par nature un processus par lots dans la plupart des implémentations.
- Effectuer des opérations en masse sur des images numériques telles que le redimensionnement, la conversion, le filigrane ou toute autre modification d'un groupe de fichiers image.
- Conversion de fichiers informatiques d'un format à un autre. Par exemple, un travail par lots peut convertir des fichiers propriétaires et hérités en formats standard courants pour les requêtes et l'affichage des utilisateurs finaux.
- Entraînement de modèles d'apprentissage automatique . Par exemple, un site de commerce électronique peut vouloir traiter les transactions des clients par lots horaires pour mettre à jour le modèle qui génère des recommandations de produits associés , afin d'économiser des ressources informatiques .
Environnements notables de planification et d'exécution de lots
Le système d'exploitation ou la plate-forme mainframe IBM z/OS possède sans doute l'ensemble de fonctions de traitement par lots le plus perfectionné et le plus évolué en raison de ses origines, de sa longue histoire et de son évolution continue. Aujourd'hui, ces systèmes prennent généralement en charge des centaines, voire des milliers de tâches en ligne et par lots simultanées au sein d'une seule image de système d'exploitation . Les technologies qui facilitent le traitement par lots et en ligne simultané comprennent le langage de contrôle des travaux (JCL), les langages de script tels que REXX , le sous-système d'entrée de travaux ( JES2 et JES3 ), le gestionnaire de charge de travail (WLM), le gestionnaire de redémarrage automatique (ARM), les services de récupération des ressources (RRS), le partage de données IBM Db2 , Parallel Sysplex , les optimisations de performances uniques telles que HiperDispatch , l'architecture de canal d'E/S et plusieurs autres.
Les programmes Unix cron, at, et batch(aujourd'hui batchune variante de at) permettent une planification complexe des tâches. Windows dispose d'un planificateur de tâches . La plupart des clusters de calcul hautes performances utilisent le traitement par lots pour maximiser l'utilisation du cluster.