Aller au contenu
Réussir mon BTS SIO

Tape une notion, une commande ou le nom d'une épreuve.

Par exemple

Chapitre 219 minIntermédiaire

Architecture d'un service : composants, dépendances et flux

Par Josselyn C., prof de BTS SIO. Mis à jour le .

À la fin de ce chapitre, tu sauras

  • décomposer un service en composants ;
  • recenser ses dépendances et prévoir son mode dégradé ;
  • écrire la matrice des flux d'un service ;
  • repérer les points uniques de défaillance et calculer la disponibilité d'une chaîne.

4 exercices corrigés1 schéma

L'architecture d'un service est la description de tout ce dont il a besoin pour fonctionner : ses composants (application, base de données, serveurs, réseau), les autres services dont il dépend (annuaire, DNS, messagerie, sauvegarde) et les flux réseau qui les relient. La dessiner avant de déployer, c'est savoir ce qu'il faut installer, ce qu'il faut ouvrir sur le pare-feu, ce qu'il faut tester et ce qui peut tomber en panne. Ce chapitre décompose un service, recense ses dépendances, écrit sa matrice des flux et calcule la disponibilité d'une chaîne de composants.

Les composants d'un service

Un service vu par l'utilisateur, c'est une adresse dans un navigateur ou une icône sur un poste. Derrière, on retrouve presque toujours les mêmes familles de composants, quel que soit le service. Les lister une par une est la meilleure façon de ne rien oublier.

FamilleRôlePrêt'Matos (application web)GLPI (outil d'assistance)
Accès utilisateurCe que l'utilisateur ouvreNavigateur des postes du VLAN 10 et des commerciaux en VPNNavigateur ; agent d'inventaire sur chaque poste
RéseauCe qui transporte les requêtesVLAN 10 POSTES vers VLAN 21 APPLIS, à travers le pare-feu pfSenseVLAN 10 vers VLAN 20 SERVEURS, à travers pfSense
Point d'entréeLe nom, le certificat, le frontalpretmatos.ad.sorbier.example, certificat de l'autorité interne Sorbier-AC, reverse proxy Caddyglpi.ad.sorbier.example, certificat de Sorbier-AC, Nginx
ApplicationLe code qui rend le serviceAPI Node.js 24 (Express 5) et interface React, en conteneursGLPI 12 sur PHP-FPM
DonnéesCe qui doit survivre à toutBase MySQL 8.4 dans un volume DockerBase MariaDB, dossier des pièces jointes
HébergementCe qui fait tourner le resteVM srv-pretmatos (Debian 13) sur l'hyperviseur Proxmox VEVM srv-glpi (Debian 13) sur Proxmox VE
Services d'infrastructureLes services techniques utilisésAnnuaire en LDAPS, DNS, NTP, relais de courriel srv-intranetAnnuaire en LDAPS, DNS, NTP, relais de courriel, boîte aux lettres du support
ExploitationCe qui protège et surveilleSauvegarde vers srv-partages, Zabbix et Wazuh sur srv-journauxLes mêmes
Fournisseurs externesCe qui vient de l'extérieurRegistre d'images ghcr.io, dépôts DebianSite de l'éditeur pour les mises à jour, dépôts Debian

Trois vues d'une même architecture

Selon la personne à qui tu parles, tu ne dessines pas la même chose. On distingue trois vues, de la plus proche du métier à la plus technique :

VueElle répond àElle montrePour qui
FonctionnelleQue fait le service, pour qui ?Les acteurs (salarié, logistique), leurs actions (réserver, enregistrer un retour), les échanges avec d'autres services (rappel par courriel)La MOA, les utilisateurs, la commission en début d'oral
ApplicativeQuelles briques logicielles, et comment se parlent-elles ?Le front, l'API, la base, l'annuaire, le relais de courriel, avec les protocoles (HTTPS, LDAPS, SMTP)Les développeurs, l'équipe d'exploitation
Technique (ou d'infrastructure)Où tourne chaque brique ?Les serveurs, les VLAN, les adresses IP, les ports, le pare-feu, la sauvegardeLes administrateurs, le support de niveau 2

Dans un portfolio, une vue technique lisible est souvent la plus utile ; pour une application, ajoute la vue applicative, qui montre comment les briques logicielles se parlent. Voici la vue technique de Prêt'Matos, où l'on voit aussi les briques applicatives dans la machine virtuelle.

Postes, VLAN 10192.168.10.64/26Commerciaux en VPNOpenVPN, 10.8.1.0/24Pare-feu pfSensepasserelle des VLANInternetregistre ghcr.io,dépôts Debian (HTTPS)VLAN 21 APPLIS · 192.168.21.0/24srv-pretmatos .130VM 130, Debian 13, DockerproxyCaddy, TCP 443apiNode.js 24bddMySQL 8.4frontinterface React/api vers l'api, le restevers le front ; la base n'estjoignable que par l'apisrv-intranet .10relais de courrielreçoit les rappelsSMTP, port 25HTTPS 443(F1, F2)mises à jour,images (F9)VLAN 20 SERVEURS · 192.168.10.176/28srv-ad .177srv-ad2 .181LDAPS 636 (F3)DNS, heure (F4)srv-journaux .180Zabbix : agent 10050,scénario web (F7)Wazuh 1514, 1515 (F8)srv-partages .185sauvegarde nocturnede la baseNFS 2049 (F6)à travers le pare-feu
Prêt'Matos : une VM dans le VLAN 21, quatre conteneurs, et cinq services dont il dépend

Les dépendances et le mode dégradé

Une dépendance est un autre service ou composant sans lequel le tien ne fonctionne pas, ou fonctionne moins bien. Pour chacune, pose trois questions : qu'est-ce qui se passe si elle tombe ? Le service peut-il continuer en mode dégradé, c'est-à-dire en rendant l'essentiel avec des fonctions en moins ? Qui faut-il prévenir ?

Dépendance de Prêt'MatosSi elle tombeMode dégradé possibleQui la gère
Base MySQLPlus rien ne fonctionne : ni lecture ni réservationAucun : c'est une dépendance forteMoussa (exploitation)
Annuaire (LDAPS)Plus personne ne peut se connecter ; les sessions ouvertes continuent jusqu'à leur expirationAucun pour les nouvelles connexions ; la logistique note les sorties sur papierChloé et Moussa (Active Directory)
Relais de courriel srv-intranetLes rappels ne partent plus ; le reste fonctionneOui : l'application garde les courriels en file et les renvoie au retour du relais, et la logistique consulte la liste des retours du lendemainMoussa
DNSLe nom ne se résout plus ; l'application elle-même ne trouve plus l'annuaireNon pour les utilisateurs (on ne leur donne pas l'adresse IP : le certificat ne la couvre pas)Chloé et Moussa
Certificat Sorbier-ACÀ son expiration, les navigateurs affichent une alerte de sécuritéNon : on n'apprend pas aux salariés à cliquer sur « continuer »Moussa, avec une alerte 30 jours avant
Sauvegarde, supervisionRien de visible tout de suite ; c'est la prochaine panne qui coûtera cherLe service tourne, mais sans filetMoussa
Registre ghcr.ioImpossible de déployer une nouvelle version ; la version en service continueOui : on reporte le déploiementLina et Yanis

Ce tableau prépare trois choses : les tests d'intégration (on vérifie chaque liaison, chapitre 4), la supervision (on surveille chaque dépendance forte, chapitre 7) et la documentation du support (le niveau 1 sait quoi répondre quand un utilisateur ne reçoit plus ses rappels).

La matrice des flux

La matrice des flux liste toutes les communications réseau dont le service a besoin : qui ouvre la connexion (la source), vers qui (la destination), avec quel protocole et quel port, et pourquoi. C'est le document que l'administrateur du pare-feu attend pour écrire ses règles, et celui que tu relis quand un flux est bloqué.

N°SourceDestinationProtocole et portRaisonPasse par pfSense ?
F1Postes, VLAN 10 (192.168.10.64/26)srv-pretmatos (192.168.21.130)TCP 443 (HTTPS)Les salariés utilisent l'applicationOui, règle sur l'interface POSTES
F2Commerciaux en VPN OpenVPN (10.8.1.0/24)srv-pretmatosTCP 443Réserver depuis un déplacementOui, règle sur l'onglet OpenVPN ; ajouter aussi 192.168.21.0/24 aux réseaux locaux (IPv4 Local Network) du serveur OpenVPN, qui ne pousse que 192.168.10.0/24
F3srv-pretmatossrv-ad, srv-ad2 (.177, .181)TCP 636 (LDAPS)Vérifier l'identifiant et le mot de passe, lire les groupesOui, interface APPLIS
F4srv-pretmatossrv-ad, srv-ad2TCP et UDP 53, UDP 123Résolution des noms, heureOui, interface APPLIS
F5srv-pretmatossrv-intranet (192.168.21.10)TCP 25 (SMTP)Déposer les rappels au relaisNon : même VLAN
F6srv-pretmatossrv-partages (192.168.10.185)TCP 2049 (NFS)Sauvegarde nocturne de la baseOui, interface APPLIS
F7srv-journaux (192.168.10.180)srv-pretmatosTCP 10050 ; TCP 443Agent Zabbix en contrôle passif ; scénario webOui, interface SERVEURS
F8srv-pretmatossrv-journauxTCP 1514 et 1515Agent Wazuh : envoi des journaux, enrôlementOui, interface APPLIS
F9srv-pretmatosInternet (ghcr.io, dépôts Debian)TCP 443Télécharger les images et les mises à jourOui, interface APPLIS, NAT sortant
F10Bastion (192.168.10.210)srv-pretmatosTCP 22 (SSH)AdministrationOui ; déjà couvert par la règle du bastion

Quatre règles pour une matrice juste :

  1. La source est celle qui ouvre la connexion. Zabbix interroge l'agent (F7) : la source est srv-journaux. Le pare-feu à états laisse passer les réponses sans règle de retour (pare-feu à états).
  2. Un flux par besoin, avec sa raison. Une ligne « srv-pretmatos vers tout, tous ports » n'est pas une matrice, c'est un aveu d'ignorance.
  3. Rien vers la base de données depuis l'extérieur de la VM. Le conteneur MySQL n'est joignable que par l'API, sur un réseau Docker interne : aucun flux 3306 dans la matrice.
  4. Le chemin compte. Un flux à l'intérieur d'un même VLAN (F5) ne passe pas par pfSense : il ne se filtre qu'avec le pare-feu de la machine. Un flux entre deux VLAN se règle sur l'interface d'entrée de la source (de la matrice des flux aux règles).

Les ports qui reviennent le plus souvent dans les services du BTS :

PortProtocoleService
22TCPSSH, SFTP
25, 587TCPSMTP (relais), soumission authentifiée
53TCP, UDPDNS
123UDPNTP
389, 636TCPLDAP, LDAPS
443TCP (et UDP pour HTTP/3)HTTPS
445TCPSMB (partages Windows)
993TCPIMAPS
1514, 1515TCPAgent Wazuh
2049TCPNFS v4
3306TCPMySQL, MariaDB
3389TCPBureau à distance (RDP)
10050, 10051TCPAgent Zabbix (passif), serveur Zabbix (actif)

Les points uniques de défaillance

Un point unique de défaillance (single point of failure, SPOF) est un composant dont la panne arrête tout le service, parce que rien ne le remplace. Dans l'architecture de Prêt'Matos, il y en a plusieurs : l'hôte Proxmox (s'il n'est pas en cluster), la VM srv-pretmatos, le conteneur MySQL, le pare-feu. L'annuaire, lui, n'en est pas un : deux contrôleurs de domaine se remplacent.

Supprimer tous les SPOF coûte cher : un deuxième serveur, une base répliquée, un pare-feu de secours. Pour un service interne utilisé aux heures de bureau, on accepte souvent un SPOF à condition de savoir le réparer vite : une sauvegarde testée, une procédure de restauration écrite, un délai annoncé. C'est ce que dit la fiche service : 4 h ouvrées pour restaurer. Le cours Haute disponibilité montre comment supprimer un SPOF quand le besoin le justifie.

La disponibilité d'une chaîne de composants

La disponibilité est la part du temps où le service fonctionne : 99 % sur un mois de 30 jours, c'est 7 h 12 min d'arrêt au plus. Quand un service a besoin de plusieurs composants à la fois (montés en série), sa disponibilité est le produit des leurs. Quand deux composants se remplacent (montés en parallèle), l'ensemble n'est indisponible que si les deux le sont en même temps.

text
En série    : A = A1 × A2 × … × An
En parallèle : A = 1 − (1 − A1) × (1 − A2)

Pour Prêt'Matos, en prenant pour chaque composant une disponibilité estimée (constatée sur l'année passée pour l'existant) :

ComposantDisponibilitéMontage
Pare-feu pfSense99,9 %Série
Hôte Proxmox99,8 %Série
VM et application99,5 %Série
Annuaire : deux contrôleurs à 99 % chacun1 − 0,01 × 0,01 = 99,99 %Parallèle, puis en série avec le reste
text
A = 0,999 × 0,998 × 0,995 × 0,9999
  ≈ 0,99192, soit environ 99,19 %

Le service est moins disponible que son composant le plus faible (99,5 %) : chaque maillon retire un peu. Sur 30 jours (720 heures), cela laisse environ 5 h 49 min d'arrêt. Avec un seul contrôleur de domaine à 99 %, on tomberait à 98,21 % : environ 12 h 53 min d'arrêt par mois. Le second contrôleur fait gagner plus que n'importe quel réglage de l'application. Les calculs détaillés et les pièges (plage de service, maintenances prévues) sont dans le cours Supervision.

Documenter l'architecture

Le dossier d'architecture technique (DAT) rassemble tout ce chapitre en un document que l'équipe d'exploitation garde à jour. Pour un service de PME, quelques pages suffisent :

RubriqueContenu
PrésentationLa fiche service du chapitre 1
SchémasVue applicative et vue technique, datées, avec les adresses et les ports
ComposantsChaque serveur, conteneur ou logiciel, avec sa version et son support (date de fin de maintenance)
DépendancesLe tableau des dépendances et des modes dégradés
Matrice des fluxCelle de ce chapitre, avec la référence des règles du pare-feu
Comptes et secretsLes comptes de service (svc-pretmatos pour l'annuaire), où sont rangés les secrets, qui y a accès ; jamais les mots de passe eux-mêmes
Sauvegarde et restaurationQuoi, quand, où, combien de temps on garde, comment restaurer
SupervisionCe qui est surveillé, les seuils, qui reçoit les alertes

La date de fin de maintenance de chaque composant compte autant que sa version : Node.js 24 est maintenu jusqu'à fin avril 2028, MySQL 8.4 est une version à support long. Un composant hors maintenance ne reçoit plus de correctifs de sécurité. Le cours Documentation technique apprend à rédiger ce type de dossier.

Exercices

Exercice 1 sur 4 La matrice des flux de GLPI Réussi À revoir

GLPI est installé sur srv-glpi (192.168.10.184, VLAN 20 SERVEURS). Les salariés l'ouvrent en HTTPS depuis le VLAN 10. GLPI authentifie les salariés auprès des deux contrôleurs de domaine en LDAPS, relève la boîte support@sorbier.example, hébergée chez le fournisseur de messagerie en ligne de Sorbier, en IMAPS, et envoie ses notifications par un relais Postfix installé sur srv-glpi lui-même, qui les transmet à ce fournisseur (smtp.sorbier.example) en SMTP authentifié sur le port 587. L'agent GLPI de chaque poste envoie son inventaire en HTTPS. La base est sauvegardée chaque nuit vers srv-partages en NFS.

  1. Écris la matrice des flux (source, destination, protocole et port, raison).
  2. Quels flux ne passent pas par le pare-feu ?
Voir la réponseMasquer la réponse de l'exercice 1
  1. Une matrice possible :
N°SourceDestinationProtocole et portRaison
G1Postes, VLAN 10srv-glpiTCP 443Portail et interface des techniciens
G2Agents GLPI des postes, VLAN 10srv-glpiTCP 443Envoi de l'inventaire
G3srv-glpisrv-ad, srv-ad2TCP 636Authentification LDAPS
G4srv-glpisrv-ad, srv-ad2TCP et UDP 53, UDP 123Noms et heure
G5srv-glpiFournisseur de messagerie (Internet)TCP 993Collecteur : relève de la boîte du support
G6srv-glpismtp.sorbier.example (Internet)TCP 587Notifications, transmises par le relais local
G7srv-glpisrv-partages (192.168.10.185)TCP 2049Sauvegarde NFS

On y ajoute la supervision (srv-journaux vers srv-glpi en TCP 10050 et 443, srv-glpi vers srv-journaux en TCP 1514 et 1515 pour Wazuh) et l'administration par le bastion (TCP 22).

  1. G3, G4, G7 et les flux de supervision restent dans le VLAN 20 : srv-glpi, les contrôleurs, srv-partages et srv-journaux y sont tous. Ils ne passent pas par pfSense. Les flux qui le traversent : G1 et G2 (VLAN 10 vers VLAN 20), G5 et G6 (VLAN 20 vers Internet), et l'administration (VLAN 99 vers VLAN 20).

Tu avais trouvé ?

Exercice 2 sur 4 Que se passe-t-il si… ? Réussi À revoir

Pour Prêt'Matos, décris l'effet visible pour un salarié, et le mode dégradé s'il existe.

  1. Le relais de courriel srv-intranet est arrêté pendant deux jours.
  2. Le contrôleur srv-ad est en panne, srv-ad2 fonctionne.
  3. La règle F3 a été oubliée sur le pare-feu.
  4. Le certificat du site a expiré ce matin.
Voir la réponseMasquer la réponse de l'exercice 2
  1. Rien de visible dans l'application, mais les rappels de la veille du retour ne partent plus. Mode dégradé : la logistique consulte la liste des retours prévus et prévient les retardataires ; les courriels en file partent au retour du relais, en retard. À annoncer aux utilisateurs si la panne dure.
  2. Rien de visible si l'application est configurée avec les deux contrôleurs (ou avec le nom du domaine, qui résout les deux) : c'est l'intérêt du montage en parallèle. Si elle ne connaît que srv-ad, plus personne ne peut se connecter : une erreur de configuration qui transforme un composant redondé en SPOF.
  3. Personne ne peut se connecter : l'application n'arrive pas à interroger l'annuaire. La page de connexion s'affiche (F1 fonctionne), mais toute tentative échoue, souvent avec un message trompeur (« identifiants incorrects »). C'est typiquement le défaut que révèle un test d'intégration.
  4. Le navigateur affiche une alerte de sécurité et bloque l'accès. Il n'y a pas de mode dégradé acceptable : on renouvelle le certificat. La supervision doit alerter bien avant l'échéance.

Tu avais trouvé ?

Exercice 3 sur 4 Disponibilité d'une chaîne Réussi À revoir

Un service web interne dépend en série d'un pare-feu (99,9 %), d'un hôte de virtualisation (99,5 %), de sa VM applicative (99,6 %) et d'une base de données sur une autre VM (99,6 %).

  1. Calcule sa disponibilité.
  2. On met la base de données sur deux VM répliquées, chacune à 99,6 %, en supposant que la bascule de l'une à l'autre est immédiate. Nouvelle disponibilité ?
  3. Sur un mois de 30 jours, combien de temps d'arrêt dans chaque cas ?
Voir la réponseMasquer la réponse de l'exercice 3
  1. 0,999 × 0,995 × 0,996 × 0,996 ≈ 0,98607, soit environ 98,61 %.
  2. Base en parallèle : 1 − 0,004 × 0,004 = 0,999984. Puis 0,999 × 0,995 × 0,996 × 0,999984 ≈ 0,99001, soit environ 99,00 %.
  3. Un mois de 30 jours compte 720 h. Cas 1 : (1 − 0,98607) × 720 ≈ 10,03 h, soit environ 10 h 02 min. Cas 2 : (1 − 0,99001) × 720 ≈ 7,19 h, soit environ 7 h 11 min. Redonder la base fait gagner près de trois heures par mois ; l'hôte de virtualisation, à 99,5 %, devient le maillon faible.

Tu avais trouvé ?

Exercice 4 sur 4 La dépendance oubliée Réussi À revoir

En recette, Prêt'Matos fonctionne parfaitement sur srv-recette. Le jour de la mise en production, la page s'affiche, la connexion fonctionne, mais la création d'une réservation renvoie une erreur 500. Le journal de l'API indique : Error: connect ECONNREFUSED 192.168.21.186:3306.

  1. Que s'est-il passé ?
  2. Quel document aurait évité l'erreur, et quel test l'aurait détectée avant l'ouverture ?
Voir la réponseMasquer la réponse de l'exercice 4
  1. L'API de production essaie de joindre une base MySQL sur 192.168.21.186, l'adresse de srv-recette : la configuration de recette a été recopiée en production. Sur srv-recette, le port 3306 n'est pas publié, d'où le refus de connexion. La lecture a l'air de fonctionner (cache, ou page sans données), mais pas l'écriture.
  2. Le dossier d'architecture, qui dit que la base est le conteneur bdd de la même VM, et le principe « même version, configuration propre à chaque environnement » du chapitre 3. Le test qui l'aurait détectée : un test de fumée qui crée et annule une réservation de test juste après le déploiement (chapitre 5), avant d'annoncer l'ouverture.

Tu avais trouvé ?

Chapitre terminé !

Fais les 4 exercices avant de passer à la suite : c'est en t'entraînant que tout se fixe.

chapitres
–
de série
–
du cours
–
Chapitre suivant : Préparer une mise en production : environnements, plan de déploiement et retour arrièreRevoir le sommaire du cours