- 1. Introduction
- 2. Non statué
- 3. Contraintes
- 3.1. Contraintes sur la disponibilité
- 3.2. Hébergement
- 3.3. Contraintes réseau
- 3.4. Contraintes de déploiement
- 3.5. Contraintes liées au cycle de vie des composants d’infrastructure
- 3.6. Contraintes liées aux journaux
- 3.7. Contraintes de sauvegardes et restaurations
- 3.8. Coûts
- 4. Exigences
- 5. Architecture cible
- 5.1. Principes
- 5.2. Disponibilité
- 5.3. Déploiement en production
- 5.4. Versions des composants d’infrastructure
- 5.5. Matrice des flux techniques
- 5.6. Environnements
- 5.7. Écoconception
- 5.8. Régulation de la charge
- 5.9. Gestion des timeouts
- 5.10. Exploitation
- 5.11. Supervision
- 5.12. Migrations
- 5.13. Décommissionnement
Dernière modification : 2025-02-25
Date de la dernière revue globale : <Faire régulièrement des revues complètes de la vue (au moins une fois par an tant que le projet est actif) et mentionner la date ici>
Statut du document : <Indiquer ici le statut de la vue, par exemple 'DRAFT', 'FINALISÉ',…>
La vue infrastructure décrit le déploiement des modules applicatifs dans leur environnement d’exécution cible et l’ensemble des dispositifs assurant leur bon fonctionnement.
Les autres vues du dossier sont accessibles d’ici.
Le glossaire du projet est disponible ici. Nous ne reprendrons pas ici les termes fonctionnels ou techniques déjà définis.
Tip
|
Cette vue est aussi souvent appelé « vue technique » et concerne l’infrastructure : serveurs, réseaux, systèmes d’exploitation, bases de données, intergiciels, … Bref, elle porte sur tout ce qui est externe à l’application et nécessaire à son exécution. |
Tip
|
Mentionner ici les documents d’architecture de référence (mutualisés). Ce document ne doit pas reprendre leur contenu sous peine de devenir rapidement obsolète et non maintenable. |
N° | Version | Titre/URL du document | Détail |
---|---|---|---|
1 |
Regles_sauvegardes.pdf |
Règles concernant les sauvegardes |
ID | Détail | Statut | Porteur du sujet | Échéance |
---|---|---|---|---|
EI1 |
Le choix technique de la solution d’API Management reste soumise à étude complémentaires |
EN_COURS |
Équipe Archi Technique |
AVANT 2040 |
Tip
|
Les contraintes définissent les limites applicables aux exigences du projet. Il est intéressant de les expliciter pour obtenir des exigences réalistes. Par exemple, il ne serait pas valide d’exiger une disponibilité incompatible avec le niveau de sécurité Tier du datacenter qui l’hébergera. |
Tip
|
Les éléments ici fournis pourront servir de base au SLO (Service Level Objective). Idéalement, ce dossier devrait simplement pointer sur un tel SLO sans plus de précision. Ce chapitre a une vocation pédagogique car il rappelle la disponibilité plafond envisageable : la disponibilité finale de l’application ne pourra être qu’inférieure. |
Tip
|
Détailler les éléments permettant d’estimer le temps moyen de détection d’incident (Mean Time To Detect). |
Exemple 1 : Le SI est supervisé en 24/7/365.
Exemple 2 : Le service support production est disponible durant les heures de bureau mais une astreinte est mise en place avec alerting par e-mail et SMS en 24/7 du lundi au vendredi.
Tip
|
Fournir ici les outils et normes de supervisions imposés au niveau du SI et les éventuelles contraintes liées. |
Exemple 1 : L’application sera supervisée avec Zabbix.
Exemple 2 : Les batchs doivent pouvoir se lancer via un endpoint REST.
Exemple 3 : un batch en erreur ne doit pas pouvoir se relancer sans un acquittement humain.
Tip
|
Fournir les éléments permettant d’estimer le temps moyen de réparation (Mean Time To Repair). A noter qu’il est important de distinguer le MTTD du MTTR. En effet, ce n’est pas parce qu’une panne est détectée que les compétences ou ressources nécessaires à sa correction sont disponibles. Préciser les plages de présence des exploitants en journée et les possibilités d’astreintes. Si vous disposez de statistiques ou de post-mortems, mentionnez les durées effectives moyennes déjà observées. Lister ici les durées d’intervention des prestataires matériels, logiciels, électricité, télécom… Nous subdivisons de façon indicative cette section en sous-sections "Hardware", "Système et virtualisation", "Réseau", et "Restauration de données". D’autres catégories sont possibles. |
Tip
|
Décrire ici les éléments permettant de prévoir le MTTR des éléments hardware (serveurs / baies / équipements réseau / systèmes électriques, etc.). Lister par exemple ici les durées d’intervention des prestataires matériels, électricité…. |
Exemple 1 : Cinq serveurs physiques de spare sont disponibles à tout moment.
Exemple 2 : Le contrat de support Hitashi prévoit une intervention sur les baies SAN en moins de 24h.
Exemple 3 : le remplacement de support matériel IBM sur les lames BladeCenter est assuré en 4h de 8h à 17h, jours ouvrés uniquement.
Tip
|
Lister ici les éléments permettant d’estimer le temps de correction d’un problème lié à l’OS ou à une éventuelle solution de virtualisation. |
Exemple 1 : Au moins un expert de chaque domaine principal (système et virtualisation, stockage, réseau) est présent durant les heures de bureau.
Exemple 2 : Comme toute application hébergée au datacenter de la région X, l’application disposera de la présence d’exploitants de 7h à 20h jours ouvrés. Aucune astreinte n’est possible.
Exemple 3 : Le temps de restauration observé d’une sauvegarde Veeam de VM de 40 Gio est de 45 mins.
Tip
|
Lister ici les éléments liés au réseau permettant d’estimer les durées d’intervention des prestataires ou fournisseurs Telecom… |
Exemple 1 : un ingénieur réseau est d’astreinte chaque week-end.
Exemple 2 : Le SLA d’Orange prévoit un rétablissement de la connexion à Internet en conditions nominales en moins de 24H.
Tip
|
Lister ici les éléments permettant d’évaluer la durée de restauration de données (fichiers / objets / base de données). Les exigences de RTO listées plus bas devront prendre en compte ce MTTR. |
Exemple 1 : Le temps de restauration Barman d’une base PostgreSQL est d’environ x/V + y*T/P
heures avec x
, la taille de la base en Gio, V
la vitesse de lecture/écriture (Go/h), y
le nombre de jours de journaux à rejouer, T
le temps moyen pour rejouer un 1 jour de WAL et P
le niveau de parallélisme de la restauration.
Exemple 2 : La restauration d’une sauvegarde offline (sur bandes) nécessite au minimum 4H de préparation supplémentaire.
Tip
|
Fournir ici la liste et la durée des interruptions programmées standards dans le SI. |
Exemple 1 : On estime l’interruption de chaque serveur à 5 mins par mois. Le taux de disponibilité effectif des serveurs en prenant en compte les interruptions programmées système est donc de 99.99 %.
Exemple 2 : suite aux mises à jour de sécurité de certains packages RPM (kernel, libc…), les serveurs RHEL sont redémarrés automatiquement la nuit du mercredi suivant la mise à jour. Ceci entraînera une indisponibilité de 5 mins en moyenne 4 fois par an.
Tip
|
Fournir ici le niveau de sécurité du datacenter (DC) selon l’échelle Uptime Institute (Tier de 1 à 4).
|
Exemple : Le datacenter de Paris est de niveau Tier III et celui de Toulouse Tier II.
Tip
|
En prenant en compte les éléments précédents, estimer la disponibilité plancher (maximale) d’une application (hors catastrophe). Toute exigence devra être inférieure à celle-ci. Dans le cas d’un cloud, se baser sur le SLA du fournisseur. Dans le cas d’une application hébergée en interne, prendre en compte la disponibilité du datacenter et des indisponibilité programmées. |
Exemple : Disponibilité effective application = <disponibilité datacenter> * <plage de fonctionnement effective> * <disponibilité système > * <disponibilité hardware> = 99.8 x 99.99 x 99.6 x 99.99 =~ 99.4%.
Tip
|
Les catastrophes peuvent être classées en trois catégories:
Disaster Recovery (DR) est l’ensemble des stratégies et solutions mises en place pour restaurer un système informatique après une catastrophe, minimisant ainsi les pertes de données et le temps d’arrêt. DR peut inclure des solutions comme :
PRA (Plan de Reprise d’Activité) et PCA (Plan de Continuité d’Activité) sont des stratégies spécifiques de DR répondant à un risque de catastrophe sur le SI :
Un architecte n’utilise pas les mêmes technologies suivant qu’on vise un PRA ou un PCA :
Notes:
Note: La gestion des catastrophes est un sujet complexe. C’est l’un des points forts des Clouds publics (OVH, GCP, Azure, AWS, etc.) que de gérer une partie de cette complexité pour vous. Des solutions Cloud spécifiques existent (Disaster Recovery as a Service (DRaaS)). Décrire entre autres :
|
Exemple de PRA : Pour rappel (voir [doc xyz]), les VM sont répliquées dans le DC de secours via la technologie vSphere Metro Storage Cluster utilisant SRDF en mode asynchrone pour la réplication inter-baies. En cas de catastrophe, la VM répliquée sur le site de secours est à jour et prête à démarrer. Le RPO est de ~0 secs et le RTO de 30 mins.
Autre exemple de PRA (PME avec son propre DC à Paris) : Stockage de deux serveurs de spare dans les locaux de Lille. Sauvegarde à chaud toutes les quatre heures des données principales de l’entreprise et envoi (avec chiffrement client) sur BackBlaze.com. Le RPO est de 4h, le RTO de 2H.
Exemple de PCA avec élasticité: Les applications s’exécutent sous forme de POD Kubernetes sur au moins trois clusters situées dans des zones géographiquement distantes. Les données MongoDB sont shardées et synchronisées entre zones via un système de ReplicatSet. Le système est auto-régulé par Kubernetes et tout plantage d’un DC sera compensé en quelques secondes par la création de nouveaux POD dans les deux clusters restants. Ainsi, non seulement les utilisateurs n’auront pas de perte de disponibilité mais ils ne verront pas non plus leurs performances dégradées.
-
Où sera hébergée cette application ? DC "on premises" ? Cloud interne ? Cloud IaaS ? PaaS ? autre ?
-
Qui administrera cette application ? en interne ? Sous-traité ? Pas d’administration (PaaS) … ?
Exemple 1: Cette application sera hébergée en interne dans le DC de Nantes (seul à assurer la disponibilité de service exigée) et il sera administré par l’équipe X de Lyon.
Exemple 2 : Étant donné le niveau de sécurité très élevé de l’application, la solution devra être exploitée uniquement en interne par des agents assermentés. Pour la même raison, les solutions de cloud sont exclues.
Exemple 3 : Étant donné le nombre d’appels très important de cette application vers le référentiel PERSONNE
, elle sera colocalisée avec le module COMPTA-API
dans le VLAN XYZ
.
Tip
|
Lister les contraintes liées au réseau, en particulier le débit maximum théorique et les découpages en zones de sécurité. |
Exemple 1 : Le LAN dispose d’un débit maximal de 10 Gbps.
Exemple 2 : Les modules applicatifs intranet doivent se trouver dans une zone de confiance inaccessible d’Internet.
Tip
|
Lister les contraintes liées au déploiement des applications et services d’infrastructure. |
Exemple 1 : Une VM ne doit héberger qu’une unique instance PostgreSQL.
Exemple 2 : Les applications Java doivent être déployées sous forme de .jar exécutables et non de .war.
Exemple 3 : Toute application doit être publiée sous forme d’image OCI et déployable sur Kubernetes via un ensemble de manifests structurés au format Kustomize.
Tip
|
Lister les contraintes liées aux mises à jour et maintenance des composants d’infrastructure (systèmes d’exploitation, intergiciels, bases de données, etc.). |
Exemple 1 : Toute mise à jour de système d’exploitation doit être validée en environnement de recette avant déploiement en production.
Exemple 2 : Les mises à jour des bases de données doivent être appliquées en mode rolling upgrade pour éviter toute interruption de service.
Exemple 3 : Les versions de noyau Linux utilisées en production doivent être exclusivement des versions LTS validées par l’équipe infrastructure.
Exemple 4 : Tout correctif de sécurité critique doit être appliqué dans un délai de 72 heures suivant sa publication.
Exemple 5 : Les images OCI utilisées en production doivent être mises à jour tous les trimestres avec les dernières versions validées des dépendances.
Exemple 6 : Un calendrier de mise à jour des composants critiques sera établi afin d’éviter les failles de sécurité et d’assurer la compatibilité avec les dépendances.
Tip
|
Lister les contraintes liées aux journaux |
Exemple 1 : Une application ne doit pas produire plus de 1 Tio de journaux / mois.
Exemple 2 : La durée de rétention maximale des journaux est de 3 mois.
Tip
|
Lister les contraintes liées aux sauvegardes. Une contrainte courante est le respect de la méthode 3-2-1 :
|
Exemple 1 : L’espace disque maximal pouvant être provisionné par un projet pour les backups est de 100 Tio sur HDD.
Exemple 2 : La durée de retentions maximale des sauvegardes est de deux ans.
Exemple 3 : Compter 1 min / Gio pour une restauration NetBackup.
Tip
|
Contrairement aux contraintes qui fixaient le cadre auquel toute application devait se conformer, les exigences non fonctionnelles sont données par les porteurs du projet (Product Owner, MOA, client, etc.). Prévoir des interviews pour les recueillir. Si certaines exigences ne sont pas réalistes, le mentionner dans le document des points non statués. Les exigences liées à la disponibilité devraient être précisées via une étude de risque (type EBIOS Risk Manager) |
Tip
|
On liste ici les plages de fonctionnement principales (ne pas trop détailler, ce n’est pas un plan de production). Penser aux utilisateurs situés dans d’autres fuseaux horaires. Les informations données ici serviront d’entrants au SLA de l’application. |
No plage | Heures | Détail |
---|---|---|
1 |
De 8H00-19H30 heure de Paris , 5J/7 jours ouvrés |
Ouverture Intranet aux employés de métropole |
2 |
De 21h00 à 5h00 heure de Paris |
Plage batch |
3 |
24 / 7 / 365 |
Ouverture Internet aux usagers |
4 |
De 5h30-8h30 heure de Paris, 5J/7 jours ouvrés |
Ouverture Intranet aux employés de Nouvelle Calédonie |
Tip
|
Nous listons ici les exigences de disponibilité. Les mesures techniques permettant de les atteindre seront données dans l’architecture technique de la solution. Les informations données ici serviront d’entrants au SLA de l’application. Attention à bien cadrer ces exigences car un porteur de projet a souvent tendance à demander une disponibilité très élevée sans toujours se rendre compte des implications. Le coût et la complexité de la solution augmente exponentiellement avec le niveau de disponibilité exigé. L’architecture physique, technique voire logicielle change complètement en fonction du besoin de disponibilité (clusters d’intergiciels ou de bases de données, redondances matériels coûteuses, architecture asynchrone, caches de session, failover, etc.). Ne pas oublier également les coûts d’astreinte très importants si les exigences sont très élevées. De la pédagogie et un devis permettent en général de modérer les exigences. On estime en général que la haute disponibilité (HA) commence à deux neufs (99%), soit environ 90h d’indisponibilité par an. Détailler la disponibilité demandée par plage. La disponibilité exigée ici devra être en cohérence avec les Contraintes sur la disponibilité du SI. |
No Plage | Indisponibilité maximale |
---|---|
1 |
24h, maximum 7 fois par an |
2 |
4h, 8 fois dans l’année |
3 |
4h, 8 fois dans l’année |
Tip
|
Préciser les modes dégradés applicatifs envisagés. |
Exemple 1 : Le site monsite.com
devra pouvoir continuer à accepter les commandes en l’absence du service de logistique.
Exemple 2 : Si le serveur SMTP ne fonctionne plus, les mails seront stockés en base de données puis soumis à nouveau suite à une opération manuelle des exploitants.
Tip
|
La robustesse du système indique sa capacité à ne pas produire d’erreurs lors d’événements exceptionnels comme une surcharge ou la panne de l’un de ses composants d’infrastructure. Cette robustesse s’exprime en valeur absolue par unité de temps : nombre d’erreurs (techniques) par mois, nombre de messages perdus par an… Attention à ne pas être trop exigeant sur ce point car une grande robustesse peut impliquer la mise en place de systèmes à tolérance de panne complexes, coûteux et pouvant aller à l’encontre des capacités de montée en charge, voire même de la disponibilité. |
Exemple 1 : Pas plus de 0.001% de requêtes en erreur.
Exemple 2 : L’utilisateur ne devra pas perdre son panier d’achat même en cas de panne (attention, ce type d’exigence impacte l’architecture en profondeur, voir la section [Disponibilite]).
Exemple 3 : Le système devra pouvoir tenir une charge trois fois supérieure à la charge moyenne avec un temps de réponse de moins de 10 secondes au 95e centile.
Tip
|
La sauvegarde (ou backup) consiste à recopier les données d’une système sur un support dédié en vue d’une restauration en cas de perte. Ces données sont nécessaires au système pour fonctionner. Fournir ici le Recovery Point Objective (RPO) de l’application (en heures). Il peut être utile de restaurer suite à :
|
Exemple : On ne doit pas pouvoir perdre plus d’une journée de données applicatives.
Tip
|
Le Recovery Time Objective (en heures) est l’objectif de temps maximal autorisé pour la réouverture du service suite à un incident. Cette exigence doit être compatible (inférieure ou égale) au MTTR donné en contrainte plus haut. Il est en effet inutile d’exiger un RTO de 1H si les exploitants on mesuré un MTTR effectif de 2H. Elle doit également être compatible avec l’exigence de disponibilité. Ne préciser cette valeur que pour expliciter un objectif de restauration précis, sinon, ne pas remplir cette rubrique et faire référence à la contrainte de MTTR plus haut. |
Exemple : On doit pouvoir restaurer et remettre en ligne les 3 Tio de la base XYZ en 1h maximum.
Tip
|
Préciser ici comment l’application devra être déployée coté serveur. Par exemple :
|
Tip
|
Préciser ici comment l’application devra être déployée coté client :
Coté client, pour une application Java :
Coté client, pour une application client lourd :
|
Tip
|
|
Exemple: L’application sera déployée sur un mode blue/green, c’est-à-dire complètement installée sur un ensemble de machines initialement inaccessibles puis une bascule DNS permettra de pointer vers les machines disposant de la dernière version.
Tip
|
L’écoconception consiste à limiter l’impact environnemental des logiciels et matériels utilisés par l’application. Les exigences dans ce domaine s’expriment généralement en wattheures ou équivalent CO2. A noter que la loi française (voir loi du n°2020-105 du 10 février 2020, ou loi AGEC) exige de réduire le gaspillage lié au numérique, notamment concernant l’obsolescence matérielle (art. 19). Prendre également en compte les impressions et courriers. Selon l’ADEME (estimation 2014), les émissions équivalent CO2 d’un KWH en France continentale pour le tertiaire est de 50 g/KWH. |
Exemple 1 : Le Power Usage Effectiveness (PUE) du site devra être de 1.5 ou moins.
Exemple 2 : La consommation d’encre et de papier devra être réduite de 10% par rapport à 2024.
Tip
|
Quels sont les grands principes d’infrastructure de notre application ? |
Exemples :
-
Les modules applicatifs exposés à Internet dans une DMZ protégée derrière un pare-feu puis un reverse-proxy et sur un VLAN isolé.
-
Concernant les interactions entre la DMZ et l’intranet, un pare-feu ne permet les communications que depuis l’intranet vers la DMZ.
-
Les clusters actifs/actifs seront exposés derrière un LVS + Keepalived avec direct routing pour le retour.
Tip
|
La disponibilité mesure le pourcentage de temps pendant lequel un système est utilisable dans des conditions acceptables, c’est-à-dire accessible et opérationnel selon les critères définis (temps de réponse, capacité de traitement, etc.). Il est exprimé en % (exemple: 99.9% = ~8h45 d’indisponibilité/an). Fournir ici les dispositifs permettant d’atteindre les Exigences de disponibilité. Les mesures permettant d’atteindre la disponibilité exigée sont nombreuses et devront être choisies par l’architecte en fonction de leur apport et de leur coût (financier, en complexité, etc.). Les indisponibilités peuvent-être de deux natures :
Les indisponibilité programmées sont en général prises en compte dans le calcul de la disponibilité globale (sauf si le SLA prévoit le contraire) puisque le service aux utilisateurs n’est alors pas rendu. Nous regroupons ici les dispositifs de disponibilité en cinq grandes catégories :
|
Tip
|
Principes de disponibilité et de redondance:
|
Tip
|
Quelques mots sur les répartiteurs de charge :
|
Tip
|
Clustering:
|
Tip
|
Failover (basculement automatique) : Le failover est la capacité d’un cluster de s’assurer qu’en cas de panne, les requêtes ne sont plus envoyées vers le nœud défectueux mais vers un nœud opérationnel. Ce processus est automatique. Sans failover, c’est au client de détecter la panne et de se reconfigurer pour rejouer sa requête vers un nœud actif. Dans les faits, ceci est rarement praticable et les clusters disposent presque toujours de capacités de failover. Une solution de failover peut être décrite par les attributs suivants :
|
Tip
|
La tolérance de panne : La tolérance de panne (FT = Fault Tolerance) ne doit pas être confondue avec la Haute Disponibilité. Il s’agit d’une version plus stricte de HA visant une disponibilité quasi absolue (99.999% ou plus) et une absence de perte de données dans des conditions normales de fonctionnement (Wikipédia: "La tolérance aux pannes est la propriété qui permet à un système de continuer à fonctionner correctement en cas de défaillance d’un ou de certains de ses composants d’infrastructure"). Seuls les systèmes critiques (santé, militaires, transport, industrie…) ont en général besoin d’un tel niveau de disponibilité. Historiquement, cela signifiait une redondance matérielle complète. Dans un monde de micro-services, cela peut également être réalisé au niveau logiciel avec des clusters actifs-actifs. De plus, un véritable système de tolérance aux pannes devrait éviter une dégradation significative des performances vue par les utilisateurs finaux. Par exemple, un lecteur RAID 1 offre une tolérance aux pannes transparente : en cas de panne, le processus écrit ou lit sans erreur après le basculement automatique sur le disque sain. Ou encore, un cache distribué mémoire en cluster peut éviter de perdre une session HTTP. Certains systèmes critiques nécessitent un niveau élevé de tolérance de panne, par exemple :
Pour permettre la tolérance de panne d’un cluster, il faut obligatoirement disposer d’un cluster actif/actif avec fort couplage dans lequel les données de contexte sont répliquées à tout moment. Une autre approche intéressante est d’éviter autant que possible les données de contexte côté serveur en favorisant leur stockage côté client (ex: dans le navigateur via localStorage ou les jetons JWT). Cependant, cette solution peut être limitée par des contraintes de sécurité et de volumétrie. Alternativement, un stockage en base de données ou en cache distribué peut être envisagé, en tenant compte des compromis entre fiabilité, performance et latence. Un système tolérant aux pannes (FT) peut rendre une erreur totalement invisible pour le client si un mécanisme de rejeu automatique, de réplication synchrone ou de reprise transactionnelle est en place (ex: Oracle RAC, PostgreSQL avec réplication synchrone, Kafka avec rejeu des messages) ; sinon, une requête en cours peut échouer et nécessiter une nouvelle soumission (ex: failover manuel en PostgreSQL, crash d’un serveur Redis non répliqué, perte d’une transaction financière en cours), ce qui peut poser un risque d’incohérence si l’opération n’est pas idempotente (ex: double facturation d’un paiement, duplication d’un message non contrôlé en MQ, insertion partielle en base de données). Attention à bien qualifier les exigences avant de construire une architecture FT car en général ces solutions :
|
Tip
|
La Haute Disponibilité (HA) : Un système est généralement considéré comme hautement disponible (HA) à partir de 99.9% de disponibilité (~8h45 d’indisponibilité/an). Un système HA repose généralement sur :
La Tolérance de Panne (FT) inclut toujours la Haute Disponibilité (HA), mais la HA ne garantit pas nécessairement la FT. |
Solution | Coût | Complexité de mise en œuvre | Amélioration de la disponibilité |
---|---|---|---|
Disques en RAID 1 |
XX |
X |
XXX |
Disques en RAID 10 |
X |
X |
XX |
Redondance des alimentations et autres composants d’infrastructure |
XX |
X |
XX |
Bonding des cartes Ethernet |
XX |
X |
X |
Cluster actif/passif |
XX |
XX |
XX |
Cluster actif/actif (souvent avec LB) |
XXX |
XXX |
XXX |
Serveurs/matériels de spare |
XX |
X |
XX |
Bonne supervision système |
X |
X |
XX |
Bonne supervision applicative |
XX |
XX |
XX |
Systèmes de test de vie depuis un site distant |
X |
X |
XX |
Astreintes dédiées à l’application, 24/7/365 |
XXX |
XX |
XXX |
Réplication asynchrone des bases de données (ex: PostgreSQL Streaming) |
XX |
XX |
XX |
Réplication synchrone des bases (ex: Galera, Oracle Data Guard) |
XXX |
XXX |
XXX |
Réplication des données sur baie SAN pour restauration rapide |
XX |
X |
XX |
Auto-scaling et orchestration dynamique (Kubernetes, Serverless) |
XXX |
XXX |
XXX |
Stockage distribué HA (Ceph, GlusterFS, MinIO) |
XXX |
XXX |
XXX |
CDN avec mise en cache distribué (Cloudflare, Akamai) |
XX |
XX |
XX |
Exemple 1 : Pour atteindre la disponibilité de 98 % exigée, les dispositifs de disponibilité envisagés sont les suivants :
-
Tous les serveurs en RAID 10 ou RAID 6 + alimentations redondées.
-
Répartiteur HAProxy + keepalived actif/passif mutualisé avec les autres applications.
-
Cluster actif/actif de deux serveurs Apache + mod_php.
-
Serveur MariaDB en réplication asynchrone avec un basculement manuel en moins de 2h.
Exemple 2 : Pour atteindre la disponibilité de 99.97 % exigée, les dispositifs de disponibilité envisagés sont les suivants (pour rappel, l’application sera hébergée dans un DC de niveau Tier 3) :
-
Tous les serveurs en RAID 1 + alimentations redondées + interfaces en bonding.
-
Répartiteur HAProxy + keepalived actif/passif dédié à l’application.
-
Cluster actif/actif de 4 serveurs (redondance N+N) Apache + mod_php.
-
Instance Oracle en RAC sur deux machines avec interconnexion Fibre Channel (FC) dédiée, latence <1 ms.
Tip
|
Fournir ici le modèle de déploiement des modules et composants d’infrastructure en environnement cible sur les différents intergiciels et nœuds physiques (serveurs). Ne représenter les équipements réseau (pare-feu, switchs, routeurs, etc.) que s’ils aident à la compréhension. On le documentera de préférence avec un diagramme de déploiement UML2 ou (mieux) un diagramme de déploiement C4. Pour les clusters, donner le facteur d’instanciation de chaque nœud. Préciser au besoin les contraintes d’affinité (deux modules doivent s’exécuter sur le même nœud ou le même intergiciel) ou d’anti-affinité (deux modules ne doivent pas s’exécuter sur le même nœud ou dans le même intergiciel). Exemple : Les bases de données et les serveurs d’application doivent être sur des nœuds séparés pour éviter la contention CPU et garantir l’isolation des ressources. Identifier clairement le matériel dédié à l’application (et éventuellement à acheter). |
Tip
|
Lister ici OS, bases de données, MOM, serveurs d’application, etc. Ne détailler la version précise (le |
Composant d’infrastructure | Rôle | Version | Environnement technique |
---|---|---|---|
Express.js |
Serveur d’application Node.js |
4.21.x |
Debian 13, OpenJDK 1.8.0_144 |
Tomcat |
Container Web pour les IHM |
10.x.x |
RHEL 9, Sun JDK 1.8.0_144 |
Nginx |
Serveur Web |
1.11.x |
Debian 13 |
PHP + php5-fpm |
Pages dynamiques de l’IHM XYZ |
8.3.x |
Windows Server 2025 + IIS |
PostgreSQL |
SGBDR |
17.x |
AlmaLinux 9.x |
Tip
|
Lister ici l’intégralité des flux techniques utilisés par l’application. Les ports d’écoute sont précisés. On détaille aussi les flux d’exploitation (en protocoles JMX ou SNMP par exemple). Dans certaines organisations, cette matrice sera trop détaillée pour un dossier d’architecture et sera maintenue dans un document géré par les intégrateurs ou les exploitants. Il n’est pas nécessaire de faire référence aux flux applicatifs car les lecteurs ne recherchent pas les mêmes informations. Ici, les exploitants ou les intégrateurs recherchent l’exhaustivité des flux à fin d’installation et de configuration des pare-feu par exemple. Les types de réseaux incluent les informations utiles sur le réseau utilisé afin d’apprécier les performances (TR, latence) et la sécurité: LAN, VLAN, Internet, LS, WAN…) |
ID | Source | Destination | Type de réseau | Protocole | Port d’écoute | Chiffrement ? |
---|---|---|---|---|---|---|
1 |
lb2 |
IP multicast 224.0.0.18 |
LAN |
VRRP sur UDP |
3222 |
Non |
2 |
lb1 |
host1, host2 |
LAN |
HTTPS |
80 |
Oui (TLS) |
3 |
host3, host4, host5 |
bdd1 |
LAN |
PG |
5432 |
Oui (via VPN) |
4 |
sup1 |
host[1-6] |
LAN |
SNMP |
199 |
Non mais utilisation du VLAN d’admin |
Tip
|
Fournir ici une vision générale des environnements utilisés par l’application. Les environnements les plus communs sont : développement, recette, pré-production/benchmarks, production, formation. Dans les grands systèmes d’information, il est souvent utile de segmenter les environnements en 'plateformes' (ou 'couloirs') constituées d’un ensemble de machines isolées les unes des autres (même s’ils peuvent partager des ressources communes, selon la politique de l’organisation). Par exemple, un environnement de recette peut être constitué des plateformes
|
Tip
|
Lister ici les mesures d’infrastructure permettant de répondre aux Exigences d’écoconception. Les enjeux d’écoconception sont souvent alignés avec les exigences de performance (temps de réponse, latence, optimisation des ressources) et de coût (réduction de la consommation énergétique, rationalisation des infrastructures). Lorsqu’une solution impacte plusieurs de ces dimensions, il est préférable d’y faire simplement référence. Cependant, certaines pratiques sont spécifiquement liées à l’écoconception et doivent être prises en compte dès la conception de l’architecture. |
-
Mesure et suivi de la consommation électrique :
-
Utiliser des sondes d’analyse de la consommation comme PowerAPI (développé par l’INRIA et l’université Lille 1).
-
Intégrer des solutions de monitoring énergétique dans les systèmes de supervision (ex : Prometheus avec métriques spécifiques).
-
-
Gestion des ressources et mutualisation :
-
Prioriser l’utilisation de caches (opcodes, mémoire, HTTP…) pour réduire la charge CPU et les accès disque.
-
Optimiser l’utilisation des conteneurs en orchestrant dynamiquement les ressources via Kubernetes ou des solutions similaires, pour adapter la consommation en fonction de la charge réelle.
-
-
Efficacité des datacenters :
-
Héberger ses serveurs dans un datacenter à haut rendement énergétique. Le PUE (Power Usage Effectiveness) est l’indicateur clé.
-
Exemples de PUE: OVHcloud atteint un PUE moyen de 1.29 en 2023 avec des optimisations avancées (refroidissement liquide) ; Certains datacenters hyperscale comme Google Cloud peuvent atteindre 1.1 grâce à l’IA et aux optimisations thermiques.
-
Attention : L’efficacité énergétique ne se limite pas au PUE, il faut aussi considérer l’origine de l’énergie (renouvelable ou fossile).
-
-
Évaluer l’impact complet de l’application :
-
L’énergie consommée du côté des terminaux client et du réseau est souvent bien plus élevée que celle du serveur.
-
Allonger la durée de vie des équipements (terminaux et serveurs) est une approche efficace pour limiter l’empreinte carbone.
-
-
Optimisation des déploiements :
-
Réduire le nombre d’instances actives pendant les périodes creuses en scalant dynamiquement.
-
Prioriser le serverless computing lorsque cela est pertinent pour éviter d’allouer des ressources inutilisées.
-
Tip
|
Pour évaluer et améliorer l’empreinte énergétique d’un SI, des solutions comme le Green Software Foundation proposent des modèles d’analyse. |
Exemple 1 : La mise en place d’un cache Varnish devant notre CMS réduira de 50% le nombre de constructions de pages dynamiques PHP et permettra l’économie de deux serveurs.
Exemple 2 : L’application sera hébergée dans un datacenter avec un PUE de 1.29, alimenté à 80 % par de l’énergie renouvelable.
Exemple 3 : Le scaling automatique des pods Kubernetes permettra de réduire l’empreinte carbone en désactivant les instances inutiles durant les heures creuses.
Tip
|
Dans certains cas, des pics extrêmes et imprévisibles sont possibles (effet "Slashdot"). Si ce risque est identifié, prévoir un système de fusible avec déport de toute ou partie de la charge sur un site Web statique avec message d’erreur par exemple. Ce dispositif peut également servir en cas d’attaque de type DDOS et permet de gèrer le problème et non de le subir car on assure un bon fonctionnement acceptable aux utilisateurs déjà connectés. |
Tip
|
Il est également utile de prévoir des systèmes de régulation dynamiques, par exemple :
|
Exemple 1 :
Un système de jetons régulera l’accès à la ressource DetailArticle
avec un total de 1000 jetons simultanés.
Au-delà de cette limite, les requêtes obtiendront une erreur 429 Too Many Requests et devront appliquer un rejeu avec backoff exponentiel.
Opération sur DetailArticle |
Proportion des jetons |
---|---|
GET |
80% |
POST |
5% |
PUT |
15% |
Exemple 2 : Un Rate Limiting de 100 requêtes par source et par minute sera mis en place au niveau du reverse proxy. Les requêtes dépassant ce seuil recevront une erreur 429 Too Many Requests et devront être replanifiées par le client.
Tip
|
Tous les appels distribués (ex : HTTP(S) vers des API, accès à un stockage objet, requêtes vers une base de données) doivent être strictement limités en temps de connexion et en temps d’exécution. Sans timeouts appropriés, des contentions peuvent émerger, entraînant des blocages critiques et une saturation des ressources en cas de ralentissement des systèmes. Principes clés :
Jitter :
|
Exemple de timeouts définis sur une architecture type :
Module ou Composant d’infrastructure | Timeout de connexion (ms) | Timeout d’exécution (ms) |
---|---|---|
Client Rest JavaScript |
1000 |
5000 |
API Gateway (Reverse Proxy) |
1500 |
4000 |
API Rest Node.js |
1000 |
3500 |
Base de données PostgreSQL |
500 |
3000 |
Tip
|
Lister ici les grands principes d’exploitation de la solution. Les détails (contenu des sauvegardes, plan de production, planification des traitements, etc.) seront consignés dans un Dossier d’EXploitation (DEX) séparé. Si cette application suit les standards de l’organisation, il suffit de se référer au dossier d’exploitation commun. |
Tip
|
Préciser ici l’ordre de démarrage des machines et modules entre eux ainsi que l’ordre d’arrêt. En fonction des situations, on peut faire figurer les modules externes ou non. En général, le démarrage suit l’ordre inverse de la chaîne de liaison, tandis que l’arrêt respecte l’ordre de dépendance des composants. Préciser d’éventuelles contraintes en cas de démarrage partiel (exemple : le pool de connexions du serveur d’application retente-t-il la connexion à la base de données si celle-ci n’est pas encore disponible ? Combien de fois ? À quelle fréquence ?). |
-
Base
pg1
sur serveurbdd1
-
Base
mq1
sur serveurbdd1
-
services1
sur serveurshost3
,host4
ethost5
-
services2
sur serveurshost3
,host4
ethost5
-
batchs
sur serveurshost1
,host2
-
ihm
sur serveurshost1
,host2
-
ihm
sur serveurshost1
,host2
-
batchs
sur serveurshost1
,host2
-
services2
sur serveurshost3
,host4
ethost5
-
services1
sur serveurshost3
,host4
ethost5
-
Base
mq1
sur serveurbdd1
-
Base
pg1
sur serveurbdd1
Tip
|
Décrire ici l’ensemble des opérations programmées et leur suivi, y compris :
Il est également crucial de définir les mécanismes de supervision ou d’alerte pour détecter les échecs des jobs critiques. |
Exemple 1 : Les jobs seront ordonnancés par l’instance JobScheduler de l’organisation.
-
Ils ne devront jamais tourner les jours fériés.
-
Leur exécution sera bornée aux périodes 23h00 - 06h00. Toute tâche planifiée en dehors de cette plage ne sera pas exécutée.
-
On ne lancera pas plus de cinq instances simultanées du job
J1
. -
Chaque job produira un rapport d’exécution détaillé contenant le nombre d’éléments traités, la durée du traitement et les indicateurs métier pertinents.
Exemple 2 : Le job traiter-demande
fonctionnera au fil de l’eau, exécuté toutes les 5 minutes via l’ordonnanceur JobScheduler.
Exemple 3 : Le traitement interne ti_index
est une classe Java appelant des commandes VACUUM FULL
en JDBC, exécutée via un planificateur Quartz une fois par mois.
Tip
|
Détailler les dispositifs et procédures permettant de mettre l’application offline de façon explicite pour les utilisateurs. |
Exemple 1 : Nous utiliserons le F5 BigIp LTM pour afficher une page d’indisponibilité.
Exemple 2 : Un fichier de verrouillage maintenance.lock
sera utilisé pour désactiver l’accès au backend. Un script shell déclenchera un mode dégradé affichant une page statique temporaire.
Tip
|
Quel est le périmètre de la sauvegarde ?
|
Exemple de périmètre :
-
Sauvegarde système des VM ;
-
Sauvegarde des bases PostgreSQL ;
-
Sauvegardes des documents Ceph.
Tip
|
Fournir la politique générale de sauvegarde. Elle doit répondre aux Exigences de RPO. De même les dispositifs de restauration doivent être compatibles avec les Exigences de disponibilité.
|
Exemple de roulement : jeu de 21 sauvegardes sur un an :
-
6 sauvegardes journalières incrémentales ;
-
1 sauvegarde complète le dimanche, servant de sauvegarde hebdomadaire ;
-
3 sauvegardes hebdomadaires correspondant aux 3 autres dimanches. Le support du dernier dimanche du mois devient la sauvegarde mensuelle ;
-
11 sauvegardes mensuelles correspondant aux 11 derniers mois.
Tip
|
Lister ici les outils utilisés pour les différents types de sauvegardes. Quel outillage est mis en œuvre ?
|
Exemple 1: Sauvegarde de la base PostgreSQL en streaming avec Barman avec un full chaque nuit.
Exemple 2: Sauvegarde journalière des documents via Restic avec stockage S3 sur OVH Public Cloud.
Tip
|
Lister ici les opérations réalisées sur les sauvegardes :
|
Exemple 1 : Déduplication des sauvegardes de niveau bloc via Restic.
Exemple 2 : Chiffrement des sauvegardes en AES-256 via une partition chiffrée LUKS.
Exemple 3 : Compression lzma2 de niveau 6.
Exemple 4 : Les sauvegardes en ligne stockées dans le stockage objet S3 seront protégées des ransomewares grâce à S3 Object Lock en mode Compliance.
Exemple 5 : Activation du PITR sur PostgreSQL via Barman pour permettre une restauration à la seconde près en cas de corruption ou d’erreur humaine.
Tip
|
Préciser le(s) media de stockage des sauvegardes utilisé(s), son lieu de stockage…
|
Exemple 1: Pour la PME Boucherie Sanzot, on conservera une sauvegarde hebdomadaire des données de comptabilité en ligne sur le NAS + une copie offline sur disque externe chiffré et conservée dans le coffre d’une voiture. On conservera sur les deux supports 12 sauvegardes mensuelles et une sauvegarde annuelle, ce qui permet de revenir jusqu’à 2 ans dans le passé.
Exemple 2: Pour la sauvegarde des données d’imposition, chaque transaction vers la base de données sera sauvegardée en barman en utilisant les journaux WAL. Chaque nuit, une sauvegarde full barman de la base sera effectuée. On conservera 7J + 4 semaines + 12 mois + 1 an sur sauvegarde online (disques durs) et en near-ligne sur librairie de sauvegarde à base de bandes LTO. Les données seront chiffrées et compressées. Une copie des sauvegardes hebdomadaires sera conservée sur des bandes offline stockées sur un site distant sécurisé.
Tip
|
Toujours garder à l’esprit que ce que nous voulons vraiment, ce sont des restaurations, pas des sauvegardes. Il est crucial de s’assurer que la restauration sera fonctionnelle :
|
Exemple 1: Un test de restauration des données de production sera effectuée en pré-production au minimum une fois par an.
Exemple 2: Les tests de restauration se feront sur un système de fichier chiffré (LUKS).
Exemple 3 : Une restauration mensuelle des dernières sauvegardes PostgreSQL sera effectuée sur un environnement de test avec exécution de requêtes de validation des données.
Tip
|
Sans être exhaustif sur les fichiers de journaux (à prévoir dans le DEX), présenter la politique générale de production et de gestion des journaux (le contenu des journaux est abordé quant à lui dans la vue développement):
|
Les journaux applicatifs du module service-miel
seront en production au niveau INFO
, avec roulement journalier, conservation de deux mois, et stockage dans ELK.
Les journaux seront protégés contre les injections via la méthode StringEscapeUtils.escapeHtml4()
de org.apache.commons.text
.
Les logs d’accès seront envoyés sur un serveur distant en plus d’une conservation locale sur 7 jours maximum.
Tip
|
La supervision est un pilier central de la disponibilité en permettant de réduire drastiquement le MTTD (Mean Time to Detect, temps moyen de détection d’une panne). Une supervision efficace ne doit pas être uniquement réactive (alerte en cas de panne) mais aussi proactive en détectant les signaux faibles avant qu’une défaillance ne survienne.
|
Tip
|
Lister ici les métriques techniques (infrastructure & middleware) à superviser :
|
Exemple : Supervision du % de CPU en IO wait et de la charge moyenne du serveur (load average
).
Tip
|
Lister ici les métriques applicatives ou métier :
Business Activity Monitoring (BAM) : Une couche BAM peut être mise en place pour générer des indicateurs orientés processus métier à partir de ces métriques. |
Exemple : L’API REST de supervision exposera une ressource Metrique
contenant les indicateurs métier clés :
-
Nombre de colis à expédier.
-
Nombre de préparateurs actifs.
-
Taux d’erreur des transactions.
Tip
|
Une plateforme de supervision collecte, stocke et analyse les métriques en temps réel. Les outils Open Source les plus courants sont :
Les indicateurs sont ensuite affichés via tableaux de bord dynamiques et des seuils d’alerte sont définis pour notifier les équipes. |
Exemple : La supervision technique et applicative reposera sur une stack Grafana + Prometheus + ElasticSearch.
Tip
|
Définir les conditions de déclenchement des alertes et les canaux de notification :
|
Exemple : Une alerte SMS sera envoyée si :
-
Aucune demande n’a été reçue depuis 4 heures.
-
Le nombre d’erreurs 5xx dépasse 10/h sur un module critique.
Tip
|
Il est également fortement souhaitable et peu coûteux de prévoir un système de tests de supervision boite-noire (via des scénarios déroulés automatiquement). L’idée est ici de tester un système dans son ensemble et avec une vue end-user la plus externe possible (à l’inverse d’une supervision whitebox pour laquelle on supervise des modules bien précis avec un comportement attendu). En général, ces tests sont simples (requêtes HTTP depuis un curl croné par exemple). Ils doivent être lancés depuis un ou plusieurs sites distants pour détecter les coupures réseaux. Il est rarement nécessaire qu’ils effectuent des actions de mise à jour. Si tel est le cas, il faudra être en mesure d’identifier dans tous les modules les données issues de ce type de requêtes pour ne pas polluer les données métier et les systèmes décisionnels. |
Exemple pour un site Internet : des tests de supervision boite noire seront mis en œuvre via des requêtes HTTP lancées via Netvigie. En cas de panne, un mail est envoyé aux exploitants.
Tip
|
Le suivi des performances de l’application en production est essentiel pour :
Trois grandes familles de solutions existent :
|
Exemple :
-
Les performances du site seront supervisées en continu par Datadog ;
-
Des analyses de performances plus poussées seront mises en œuvre par Glowroot, selon les besoins.
Tip
|
Ce chapitre décrit les éventuelles migrations requises depuis des systèmes plus anciens. Décrire de façon macroscopique la procédure envisagée ainsi que les mécanismes de retour arrière. Préciser si un fonctionnement en parallèle de l’ancien système est prévu avant activation (exemple : exécution en mode "à blanc" pour validation). |
Exemple 1 : Le module X
sera remplacé par les services Y
. Les données Oracle Z
du silo seront migrées en une seule opération via un script PL/SQL + DBLink vers l’instance XX
, en respectant le nouveau format de base du module T
.
Exemple 2 : En cas de problème sur le nouveau module, un retour arrière est prévu :
-
Les anciennes données seront restaurées sous 2 heures.
-
Les nouvelles données créées après la bascule seront retraitées via le script
S1
pour assurer leur réintégration.
Tip
|
Ce chapitre sera complété lorsque l’application arrivera en fin de vie et devra être supprimée ou remplacée. Il décrit notamment :
|
Exemple : Les serveurs X
, Y
et Z
seront transmis au service d’action sociale pour don caritatif après un effacement sécurisé des disques durs via la commande shred
avec 3 passes, garantissant une suppression définitive des données.