Read in English · Leer en español · Auf Deutsch lesen
Chapitre 0 sur 12 · Débutant
Pour commencer : comment fonctionne un logiciel
Ce chapitre est la porte d’entrée du cours. Il part du principe que vous avez déjà utilisé des applications et des sites web sans jamais programmer, et il explique depuis la base ce qu’est un logiciel, comment il représente et traite les données, comment le code est organisé, comment les ordinateurs communiquent en réseau, où les données sont stockées, comment des systèmes distincts collaborent grâce aux API, ce que sont les serveurs et le cloud, et comment les équipes construisent et mettent en production les logiciels. Les ingénieurs expérimentés peuvent le parcourir rapidement comme un vocabulaire commun ; tous les autres devraient le lire avant le chapitre 1, car chaque chapitre suivant s’appuie sur ces idées.
Introduction vidéo au chapitre 0
6 min · narré en anglais, avec sous-titresÉcouter seulement (audio)
Lire la transcription
Bienvenue dans Be Software Architecture Wise, et dans le chapitre zéro : Commencez ici, comment fonctionnent les logiciels. Ce chapitre est la porte d’entrée de tout le cours. Il part du principe que vous avez déjà utilisé des applications et des sites web, mais que vous n’avez jamais écrit de programme. À la fin, vous aurez le vocabulaire sur lequel s’appuie chaque chapitre suivant.
L’architecture logicielle porte sur les grandes décisions d’un système logiciel : quelles sont ses parties principales, comment elles communiquent entre elles, où vivent les données, et quelles qualités, comme la rapidité, la fiabilité et la sécurité, la conception doit atteindre. Ces décisions se prennent dans un vocabulaire : processus et threads, index et caches, interfaces et dépendances, transactions, API et conteneurs. Les architectes emploient ces mots avec précision, il vous faut donc savoir ce que chacun signifie vraiment, et ce qu’il coûte. Ce chapitre est écrit pour quelqu’un qui n’a jamais programmé. Chaque section commence par une analogie de la vie quotidienne avant d’expliquer le mécanisme réel. Si vous êtes déjà ingénieur, vous pouvez le parcourir rapidement comme un vocabulaire commun.
Ce chapitre ne s’appuie sur rien du tout. Il ne suppose aucune formation technique, ce qui en fait le bon point de départ. Il mène directement au chapitre 1, qui utilise ces briques de base pour expliquer ce qu’est l’architecture logicielle, et pourquoi les grandes décisions comptent autant. Lorsqu’un sujet mérite plus de profondeur, le chapitre renvoie à la section ultérieure qui le traite correctement.
Le chapitre compte huit sections, réparties en trois groupes. Les trois premières restent à l’intérieur d’une seule machine. La section zéro point un explique comment le code écrit par des personnes devient des instructions qu’un processeur peut exécuter, et pourquoi les données en mémoire disparaissent au redémarrage. La section zéro point deux présente les structures de données courantes, comme les listes, les dictionnaires et les files. À l’aide de la notation grand O, elle explique pourquoi une façon de retrouver un client reste rapide avec un million de clients, alors qu’une autre s’effondre. La section zéro point trois monte des fonctions aux modules, aux objets et aux interfaces. Elle explique la différence entre une bibliothèque et un framework, met en garde contre le coût caché des dépendances et donne un premier aperçu du couplage et de la cohésion.
Les trois sections suivantes quittent la machine unique. La section zéro point quatre explique comment le DNS transforme des noms en adresses, et comment fonctionnent les requêtes et les réponses HTTP. Elle montre aussi que le délai du réseau a un plancher fixé par la vitesse de la lumière. La section zéro point cinq couvre les fichiers et les bases de données : tables, requêtes SQL, index et transactions, illustrées par un virement bancaire qui ne doit jamais se faire à moitié. Elle présente aussi les principales bases de données non relationnelles, et les cas où chacune convient. La section zéro point six explique comment des systèmes distincts coopèrent grâce aux API. Une API est un contrat. Vous verrez la différence entre attendre une réponse et envoyer un message par une file, et pourquoi casser une API pénalise tous ceux qui en dépendent.
Les deux dernières sections portent sur l’endroit où s’exécutent les logiciels et sur la façon dont on les construit. La section zéro point sept montre ce qu’est vraiment un serveur, comment les machines virtuelles et les conteneurs permettent à de nombreuses charges de travail de partager une même machine physique, et ce que vendent les fournisseurs de cloud. La section zéro point huit passe de la technologie à la pratique : exigences, gestion de versions, tests, intégration et livraison continues, et méthodes de travail. Elle se termine en suivant un appui sur « Commander » dans une app de livraison de repas à travers chaque partie du chapitre.
Ce parcours mérite un premier coup d’œil dès maintenant, car il montre où mène tout le chapitre. Un client a rempli son panier et appuie sur « Commander ». Suivez les numéros. D’abord, le téléphone demande au DNS l’adresse de l’entreprise. Puis il envoie la commande en HTTPS à un équilibreur de charge situé dans la région cloud de l’entreprise, où la connexion sécurisée se termine. L’équilibreur de charge transmet la requête au service des commandes. Ce service appelle un prestataire de paiement externe par son API, puis enregistre la commande dans sa base de données au sein d’une transaction. Ensuite, il dépose un message OrderPlaced dans une file. Un service de notifications le récupère et demande au service push d’Apple ou de Google d’envoyer une notification sur le téléphone du client. Remarquez les flèches en pointillés : cette dernière partie est asynchrone. Si le service de notifications est en panne, les commandes sont quand même prises, et les messages attendent simplement dans la file. Quelqu’un a dû décider cela, et prendre des décisions de ce genre, c’est de l’architecture.
Voici l’idée à retenir de tout le chapitre. Chaque système qu’il présente est construit à partir de parties qui cachent leurs détails derrière une frontière convenue : un module derrière son interface, une base de données derrière SQL, un prestataire de paiement derrière son API. C’est aux frontières que se situent les compromis importants. Un appel de fonction est rapide et fiable, alors qu’un appel à travers le réseau est plus lent et peut échouer. Une dépendance épargne des efforts mais apporte des risques. Un cache fait gagner du temps mais peut servir des données périmées. Décider où placer ces frontières, ce qui les traverse, et quels compromis accepter, c’est cela, l’architecture logicielle. Chaque section se termine par une courte note sur l’importance de son sujet pour l’architecture, alors guettez-les.
Comment l’étudier ? Si le sujet est nouveau pour vous, lisez les sections dans l’ordre, car chacune s’appuie sur la précédente. Si vous en connaissez déjà une partie, piochez dans les sections dont vous avez besoin. La lecture du chapitre entier prend environ trois heures. Chaque section se termine par quelques questions d’autoévaluation. Répondez-y de tête avant de regarder les réponses. Elles vous montrent vite ce que vous avez retenu, et ce qui mérite d’être relu. Quand vous êtes prêt, vous pouvez passer le test facultatif du chapitre : vingt questions à choix multiples et deux réponses rédigées. Comptez environ quarante-cinq minutes. La note de réussite est de quatre-vingts pour cent. Avant de commencer le test, vérifiez que vous savez répondre aux questions d’autoévaluation de chaque section, et relisez le résumé de toute section qui vous semble encore floue.
Voilà la carte du chapitre zéro. Commencez par la section zéro point un, où nous verrons ce qu’est un logiciel, et ce qui se passe réellement quand un ordinateur exécute un programme. À très vite.
En un coup d’œil
Vous apprendrez à
- Expliquer ce qui se passe, étape par étape, quand un programme s’exécute, du code source jusqu’au processeur en passant par le système d’exploitation.
- Distinguer les structures de données courantes et utiliser la notation grand O pour prévoir comment une opération ralentit quand les données augmentent.
- Décrire comment les fonctions, les modules, les objets et les interfaces découpent le code, et la différence entre une bibliothèque et un framework.
- Suivre ce qui se passe quand quelqu’un saisit une adresse web, en nommant DNS, TCP, TLS et HTTP et l’apport de chacun.
- Comparer les fichiers, les bases de données relationnelles et les principales familles NoSQL, et expliquer ce que garantit une transaction.
- Expliquer ce qu’est une API, comment fonctionne un appel REST sur HTTP et quand un message asynchrone convient mieux qu’un appel synchrone.
- Distinguer les serveurs physiques, les machines virtuelles, les conteneurs et les principaux modèles de services cloud.
- Suivre une seule action d’un utilisateur à travers toutes les couches d’un système réel, et reconnaître les décisions qui composent son architecture.
Avant de commencer
Aucun. Savoir utiliser des applications et des sites web suffit.
Durée
Environ 3 heures de lecture ; 45 minutes pour le test.
Termes clés
Processus · Compilateur et interpréteur · Structure de données · Notation grand O (Big-O) · Interface · Framework · Dépendance · Adresse IP et port · DNS · HTTP et HTTPS · Latence · Base de données et transaction · API · Conteneur et cloud
Pourquoi commencer ici
L’architecture logicielle porte sur les grandes décisions d’un système logiciel : quelles sont ses parties principales, comment elles communiquent entre elles, où vivent les données et quelles qualités, comme la rapidité, la fiabilité et la sécurité, la conception doit atteindre. Ces décisions se prennent dans un vocabulaire : processus et threads, index et caches, interfaces et dépendances, HTTP et DNS, transactions, API, conteneurs et pipelines. Les architectes emploient ces mots avec précision, et une grande partie du cours suppose de savoir ce que chacun signifie vraiment et ce qu’il coûte.
Ce chapitre fournit ce vocabulaire. Il est écrit pour quelqu’un qui n’a jamais programmé, et chaque section commence par une courte analogie de la vie quotidienne avant d’expliquer le mécanisme réel. Il se veut aussi assez exact pour qu’un ingénieur expérimenté qui le lit soit d’accord avec chaque affirmation. Lorsqu’un sujet mérite beaucoup plus de profondeur, le chapitre l’introduit et renvoie à la section ultérieure qui le traite correctement.
Un programme sur un ordinateur
Les trois premières sections restent à l’intérieur d’une seule machine. Ce qu’est un logiciel explique la différence entre le matériel et le logiciel, comment le code source écrit par des personnes devient des instructions qu’un processeur peut exécuter (grâce aux compilateurs, aux interpréteurs et aux machines virtuelles), ce que fait le système d’exploitation, et pourquoi les données en mémoire disparaissent au redémarrage alors que les données sur disque sont conservées. La section se termine en suivant un programme Python de neuf lignes à chaque étape de sa vie.
Données et algorithmes montre comment les ordinateurs représentent les nombres et le texte, et présente les structures de données courantes : listes, dictionnaires, ensembles, files, piles, arbres et graphes. À l’aide de la notation grand O, elle explique pourquoi une façon de retrouver un client reste rapide avec un million de clients alors qu’une autre s’effondre, et pourquoi les index et les caches existent. Organiser le code monte ensuite des fonctions aux modules, aux objets et aux interfaces, explique la différence entre une bibliothèque et un framework, met en garde contre le coût caché des dépendances et donne un premier aperçu du couplage et de la cohésion, les deux idées qui traversent toute la conception logicielle.
Plusieurs ordinateurs qui travaillent ensemble
Les trois sections suivantes quittent la machine unique. Comment les ordinateurs communiquent explique les paquets, les adresses IP et les ports, TCP et UDP, comment le DNS transforme des noms en adresses, et comment fonctionnent les requêtes et les réponses HTTP, sécurisées par TLS. Elle souligne aussi un point qui surprend beaucoup de gens : la latence a un plancher fixé par la vitesse de la lumière, si bien qu’un aller-retour entre Londres et Sydney ne peut jamais être rapide, quelle que soit la bande passante que vous achetez.
Stocker les données couvre les fichiers et les bases de données : tables, clés et requêtes SQL, index, transactions et garanties ACID (illustrées par un virement bancaire qui ne doit jamais se faire à moitié), ainsi que les principales familles NoSQL et les cas où chacune convient. API et intégration explique comment des systèmes distincts coopèrent : l’API comme contrat, REST et JSON sur HTTP, clés et jetons, webhooks, la différence entre attendre une réponse et envoyer un message par une file, et pourquoi les changements incompatibles d’une API pénalisent tous ceux qui en dépendent.
Où s’exécutent les logiciels et comment on les construit
Les serveurs et le cloud montre ce qu’est vraiment un serveur, comment les machines virtuelles et les conteneurs permettent à de nombreuses charges de travail de partager une même machine physique, et ce que vendent les fournisseurs de cloud : de la location de machines brutes jusqu’à l’exécution de votre code uniquement à l’arrivée d’un événement. Elle présente les régions, les zones de disponibilité, les réseaux de diffusion de contenu et les deux façons de faire face à la croissance : une machine plus grosse ou davantage de machines. Comment on construit un logiciel passe de la technologie à la pratique : exigences, gestion de versions avec Git, pyramide des tests, environnements, intégration et livraison continues, méthodes agiles et DevOps. Elle se termine en suivant un appui sur « Commander » dans une app de livraison de repas à travers chaque partie du chapitre, du téléphone au DNS, au HTTPS, à un équilibreur de charge, aux services, à une transaction en base de données, à un prestataire de paiement, à une file et à une notification push.
L’idée à retenir
Chaque système de ce chapitre est construit à partir de parties qui cachent leurs détails derrière une frontière convenue : le système d’exploitation derrière les appels système, un module derrière son interface, un serveur web derrière HTTP, une base de données derrière SQL, un prestataire de paiement derrière son API, une plateforme cloud derrière ses services. Les frontières permettent de construire de grands systèmes sans comprendre chaque détail, et c’est là que se situent les compromis importants : un appel de fonction est rapide et fiable, alors qu’un appel à travers le réseau est plus lent et peut échouer ; une dépendance épargne des efforts mais apporte des risques ; un cache fait gagner du temps mais peut servir des données périmées.
Décider où placer ces frontières, ce qui les traverse et quels compromis accepter, c’est cela, l’architecture logicielle. Chaque section se termine par une courte note sur l’importance de son sujet pour l’architecture, et le chapitre 1 commence exactement là où celui-ci s’arrête.
Les 8 sections
Test du chapitre
Vérifiez votre compréhension du chapitre 0
Facultatif : 20 questions à choix multiples et 2 courtes réponses rédigées, tirées à chaque fois d’une banque de 72 questions. Note de réussite : 80 %. Réussir tous les tests de chapitre, puis l’évaluation finale, donne droit au Certificat de fin de formation Be Wise.
Passer le test du chapitre 0 dans l’appLectures complémentaires
- Code: The Hidden Language of Computer Hardware and Software (2nd edition), Charles Petzold (2022), Microsoft Press. Construit un ordinateur à partir d’interrupteurs et de codes, par étapes faciles à suivre ; la meilleure explication non technique de la façon dont le matériel exécute le logiciel.
- Grokking Algorithms (2nd edition), Aditya Y. Bhargava (2024), Manning. Une introduction illustrée et en douceur aux structures de données, aux algorithmes et à la notation grand O, idéale après la section sur les données et les algorithmes.
- The Python Tutorial, Python Software Foundation, docs.python.org. L’introduction officielle et gratuite au langage utilisé dans les exemples de code de ce chapitre, y compris les fonctions, les modules et les classes.
- Learn web development, MDN Web Docs contributors, Mozilla. Des guides gratuits et soigneusement tenus à jour sur le fonctionnement du web, HTTP, HTML et JavaScript, écrits pour les débutants.
- Computer Networking: A Top-Down Approach (9th edition), James F. Kurose and Keith W. Ross (2025), Pearson. Le manuel de référence sur les réseaux, qui part du web pour descendre jusqu’aux paquets ; à lire de façon sélective une fois les bases acquises.
- Pro Git (2nd edition), Scott Chacon and Ben Straub (2014), Apress (free online at git-scm.com). Le livre officiel et gratuit sur Git : commits, branches, fusions et collaboration, tels qu’ils sont présentés dans la dernière section.
- The NIST Definition of Cloud Computing (SP 800-145), Peter Mell and Timothy Grance (2011), National Institute of Standards and Technology. Une définition courte et très citée du cloud computing, de ses modèles de service et de ses modèles de déploiement.
- Designing Data-Intensive Applications (2nd edition), Martin Kleppmann and Chris Riccomini (2026), O'Reilly Media. La meilleure étape suivante une fois ce chapitre bien assimilé : comment les bases de données, les réseaux et les systèmes distribués se comportent réellement, et pourquoi c’est important.