Aller au contenu

Mainframes et centralisation

L'ere ou tout tournait sur une seule machine — et pourquoi ce modèle refuse de mourir.


Le contexte historique

Dans les années 1960, l'informatique d'entreprise naissait autour d'une évidence : une seule machine puissante servait tous les utilisateurs. IBM dominait le marche avec le System/360, lance en 1964 — une famille de machines compatibles entre elles, ce qui constituait une revolution. Avant le System/360, chaque modèle avait son propre jeu d'instructions, ses propres périphériques, son propre système d'exploitation. Changer de machine signifiait reecrire tout le logiciel.

Le System/360 a introduit un principe fondamental qui nous parait évident aujourd'hui : la compatibilité ascendante. On pouvait écrire un programme sur un modèle d'entree de gamme et le faire tourner sur un modèle plus puissant sans modification. Ce principe a permis aux entreprises d'investir dans le logiciel en sachant que cet investissement survivrait au remplacement du matériel.

Note

La compatibilité ascendante du System/360 a créé un verrouillage si puissant qu'IBM continue de vendre des mainframes z16 en 2025, toujours compatibles avec du code écrit en 1964.


Architecture centralisee

L'architecture mainframe repose sur un modèle radicalement centralise. Toute la puissance de calcul, toute la mémoire, tout le stockage se trouvent dans une seule machine physique. Les utilisateurs interagissent via des terminaux passifs — de simples écrans relies au mainframe par des lignes dédiées.

graph TB
    MF["Mainframe central<br/>CPU + Memoire + Stockage"]
    T1["Terminal 3270"]
    T2["Terminal 3270"]
    T3["Terminal 3270"]
    T4["Terminal 3270"]
    IMP["Imprimante"]
    DISK["Disques<br/>DASD"]
    TAPE["Bandes<br/>magnetiques"]

    T1 --SNA/SDLC--> MF
    T2 --SNA/SDLC--> MF
    T3 --SNA/SDLC--> MF
    T4 --SNA/SDLC--> MF
    MF --- DISK
    MF --- TAPE
    MF --- IMP

Le terminal 3270 d'IBM est l'exemple type du terminal passif. Il n'effectue aucun traitement local. Il envoie des frappes clavier au mainframe et affiche les écrans que le mainframe lui renvoie. Toute la logique — de la validation d'un champ de saisie au calcul d'un solde bancaire — s'exécuté sur le mainframe.

Caractéristiques du terminal passif

Aspect Description
Traitement local Aucun — tout est délégué au mainframe
Affichage Écran a caractères, pas de graphique
Protocole SNA (Systems Network Architecture)
Autonomie Inutilisable sans connexion au mainframe
Coût Faible par poste — la puissance est centralisee

Ce modèle a un avantage majeur que l'on sous-estime souvent : la simplicité opérationnelle. Il n'y a qu'une seule machine a administrer. Les mises à jour se font en un seul endroit. Il n'y a pas de problème de cohérence entre des copies distribuées. La sécurité est centralisee. Le déploiement est instantané — on change le programme sur le mainframe et tous les utilisateurs voient immédiatement la nouvelle version.


Batch processing

Le traitement par lots (batch) est le mode d'exécution originel des mainframes. On soumet un ensemble de travaux (jobs) qui s'exécutent sequentiellement sans interaction utilisateur. Chaque job est défini par un langage de contrôle — JCL (Job Control Language) chez IBM.

//PAIEJOB  JOB (COMPTA),'PAIE MENSUELLE',CLASS=A
//STEP1    EXEC PGM=CALCPAIE
//INPUT    DD DSN=RH.EMPLOYES.DATA,DISP=SHR
//OUTPUT   DD DSN=COMPTA.PAIE.RESULT,DISP=(NEW,CATLG)
//SYSOUT   DD SYSOUT=A

Ce JCL définit un job de paie. Il prend en entree le fichier des employes, exécuté le programme CALCPAIE, et produit un fichier de résultats. Si le job échoué, il peut être relance sans effet de bord — les fichiers intermédiaires sont nettoyes automatiquement.

Le batch processing n'a rien de primitif. Il résout elegamment plusieurs problèmes :

  • Optimisation des ressources : les jobs tournent la nuit quand les terminaux sont inactifs
  • Reproductibilite : le même job avec les mêmes données produit le même résultat
  • Auditabilite : chaque exécution est tracee, horodatee, archivee
  • Planification : les dépendances entre jobs sont declarees explicitement

Tip

Les pipelines CI/CD modernes, les DAGs Airflow, les jobs Spark — tous descendent conceptuellement du batch processing mainframe. On a change les outils, pas le paradigme.


Transaction monitors

L'arrivee du traitement transactionnel en ligne (OLTP) a transforme le mainframe. Au lieu d'attendre la nuit pour traiter les opérations, on pouvait désormais les exécuter en temps réel — retrait bancaire, reservation de vol, mise à jour de stock.

Deux systèmes ont domine cette ere :

CICS (Customer Information Control System)

CICS est un moniteur transactionnel qui géré les interactions utilisateur en temps réel. Il prend en charge la gestion des terminaux, le routage des transactions, la gestion de la mémoire et la coordination avec les bases de données. Un programme CICS reçoit une requête, effectue le traitement, met à jour la base et renvoie un écran de réponse — le tout en quelques millisecondes.

IMS (Information Management System)

IMS combine une base de données hierarchique et un moniteur transactionnel. Développé pour le programme Apollo de la NASA, il gerait l'inventaire des pieces du module lunaire. Sa base hierarchique navigable est un ancêtre direct des bases de données document comme MongoDB.

sequenceDiagram
    participant T as Terminal 3270
    participant CICS as CICS Region
    participant PGM as Programme COBOL
    participant DB as DB2 / IMS DB

    T->>CICS: Transaction (ex: INQC)
    CICS->>PGM: Routing vers programme
    PGM->>DB: SQL / DL/I
    DB-->>PGM: Resultats
    PGM-->>CICS: Ecran de reponse
    CICS-->>T: Affichage BMS

Le concept clé introduit par CICS et IMS est la transaction ACID : atomique, cohérente, isolee, durable. Si une opération échoué a mi-chemin, tout est annule. Si le mainframe tombe en panne pendant une transaction, celle-ci est automatiquement annulee au redémarrage. Ce niveau de garantie reste un standard que les systèmes distribués modernes peinent a atteindre.


Pourquoi les mainframes survivent

Un chiffre revient souvent : les mainframes traitent encore environ 70% des transactions financieres mondiales. Ce n'est pas de l'inertie — c'est un choix rationnel. Les tentatives de migration ont souvent échoué ou coute plus cher que le maintien.

Facteur Explication
Fiabilité Disponibilité de 99,999% — 5 minutes d'arrêt par an
Performance I/O Architecture optimisee pour les E/S massives, pas le calcul pur
Sécurité Certification EAL5+, chiffrement matériel intégré
Capacité transactionnelle Des milliards de transactions par jour sans dégradation
Coût par transaction Paradoxalement bas malgre le prix d'achat élevé
Base de code existante Des millions de lignes de COBOL qui fonctionnent

Le problème n'est pas technique — il est humain. Les développeurs COBOL partent à la retraite. La formation sur ces systèmes a quasiment disparu des universites. Le risque principal du mainframe en 2025 n'est pas la panne matérielle, c'est la perte de compétences.

Warning

Avant de proposer une migration off-mainframe, on doit chiffrer le coût réel : reecriture du code, migration des données, validation reglementaire, risque opérationnel. La plupart des projets de migration mainframe depassent leur budget initial d'un facteur 3 a 5.


Héritage : concepts qui survivent

Le mainframe a forge des concepts que l'on retrouve partout dans l'informatique moderne, souvent sans en connaître l'origine :

Transactions

Les propriétés ACID définies par les moniteurs transactionnels mainframe restent la référence. Chaque base de données relationnelle les implémenté. Les systèmes distribués modernes (Saga, 2PC) sont des tentatives de reproduire ces garanties dans un contexte où elles ne sont plus gratuites.

Files de messages

Les mainframes utilisaient déjà des files de messages pour découpler les producteurs des consommateurs. MQSeries (devenu IBM MQ) est ne sur mainframe avant d'être porte sur d'autres plateformes. Kafka, RabbitMQ, SQS — tous reposent sur le même principe.

Scheduling et orchestration

Le JES (Job Entry Subsystem) du mainframe géré la soumission, la priorisation et l'enchainement des jobs batch. C'est exactement ce que font aujourd'hui Kubernetes Jobs, Airflow, Temporal ou Step Functions — avec plus de flexibilite mais les mêmes concepts fondamentaux.

Time-sharing et multi-tenancy

Le mainframe a été le premier système multi-utilisateur à grande échelle. Les mécanismes d'isolation entre utilisateurs (RACF pour la sécurité, partitions logiques) sont les ancêtres directs de la virtualisation et du multi-tenancy cloud.

graph LR
    subgraph "Concepts mainframe"
        A["Transactions ACID"]
        B["Files de messages"]
        C["Scheduling batch"]
        D["Multi-tenancy"]
    end

    subgraph "Equivalents modernes"
        E["Saga / 2PC"]
        F["Kafka / RabbitMQ"]
        G["Airflow / K8s Jobs"]
        H["Cloud / Conteneurs"]
    end

    A --herite--> E
    B --herite--> F
    C --herite--> G
    D --herite--> H

La leçon du mainframe

Le mainframe nous enseigne une vérité inconfortable : la centralisation fonctionne remarquablement bien quand on peut se la permettre. Un seul point de déploiement, une seule source de vérité, une seule équipe d'exploitation — c'est infiniment plus simple à opérer qu'un système distribué.

On a quitte le mainframe non pas parce qu'il etait mauvais, mais parce qu'il ne pouvait pas répondre a deux exigences nouvelles : l'interface graphique riche que les utilisateurs reclamaient, et la decentralisation du pouvoir de décision informatique vers les départements métier. Le PC et le client/serveur ont apporte ces deux choses — au prix d'une complexité opérationnelle que le mainframe n'avait jamais connue.

Chaque fois qu'on construit un système distribué, on devrait se demander : est-ce que la distribution est vraiment nécessaire, ou est-ce qu'on pourrait résoudre le problème avec un système plus simple et plus centralise ?


Chapitre suivant : Client-serveur — la decentralisation commence, avec ses promesses et ses pieges.