Unité 8.1 : Cadres de décision d'architecture
Introduction
À ce stade du cours, chaque primitive a été examinée en profondeur. Cette unité ne les réapprend pas. Il s'agit d'un artefact de référence : un ensemble de matrices de sélection auxquelles vous revenez lorsque un niveau FinCorp nécessite une décision et que vous souhaitez le critère de différenciation, la contrainte stricte qui peut disqualifier un choix de manière définitive, et l'unité qui dérive le raisonnement, le tout en un seul endroit.
Lisez chaque matrice de la même manière. Les critères de différenciation réduisent le champ. Les contraintes d'éligibilité strictes sont absolues : une seule contrainte non respectée élimine une option, quelle que soit sa note ailleurs. La souveraineté et la portée de l'attestation sont appliquées en dernier, sur l'ensemble de la conception, car la conformité restreint les choix plutôt que de les initier. L'unité se termine sur les deux façons dont une conception technique solide échoue encore : associer des primitives qui ne se composent pas, et placer un service fonctionnellement correct en dehors de la portée d'attestation que la charge de travail requiert.
1. Sélection de la classe de calcul
La décision de calcul est une division en quatre axes à travers l'isolement du noyau, le contrôle de la famille CPU, l'attachement du stockage sur bloc, et le modèle opérationnel. La contrainte qui disqualifie le plus souvent est la permanente : un modèle de Cube est immuable après la mise en service, donc un niveau dont la forme ou les besoins de mise à l'échelle peuvent changer est conçu sur une classe qui peut être reconfigurée. VM Auto Scaling lui-même est uniquement horizontal et crée de nouvelles répliques à partir d'un modèle de réplique de conception.
| Classe | Critère de différenciation | Contrainte d'éligibilité stricte | Dérivé dans |
|---|---|---|---|
| Noyau dédié | Noyau physique exclusif ; famille CPU sélectionnable et modifiable | Le changement de famille CPU nécessite un redémarrage, et non une opération en direct | Unité 4.1, 4.3 |
| Partagé vCPU | Coût le plus bas | Aucune sélection de famille CPU ; partage des noyaux physiques, donc pas de garantie d'isolement en cas de contention | Unité 4.1 |
| Cubes (instances à modèle fixe) | Modèle vCPU/RAM/NVMe fixe à un prix fixe | Le NVMe Volume inclus ne peut pas être détaché ; le modèle lui-même est immuable. Cubes peut toujours attacher jusqu'à 23 appareils Block Storage supplémentaires, donc ceci est un piège de modèle, et non une impasse de stockage | Unité 4.1 |
| Private Cloud (VMware dédié) | VMware SDDC géré à locataire unique avec licence incluse | Mis en service en libre-service et à la demande, mis à l'échelle verticalement en ajoutant des hôtes ; minimum trois hôtes par Cluster | Unité 4.4 |
Le modèle est une classe par niveau : un niveau d'application sans état qui se met à l'échelle prend le noyau dédié, un niveau d'utilité Node de taille fixe prend un Cube, une charge de travail à locataire unique réglementée prend Private Cloud. Ne standardisez pas une classe sur tous les niveaux.
2. Sélection de la plateforme de conteneurs
La décision concernant les conteneurs dépend de qui assume le contrôle du cycle de vie de la plateforme de contrôle et de la charge de conformité. Une seule option impose cette charge à IONOS.
| Plateforme | Critère de différenciation | Contrainte d'éligibilité stricte | Déduit dans |
|---|---|---|---|
| Managed Kubernetes | Plateforme de contrôle gérée gratuite ; IONOS assume le cycle de vie de la plateforme de contrôle ; Node Pools facturé comme Compute Engine | Un service LoadBalancer n'est pas un véritable Load Balancer externe (une adresse IP statique sur un worker d'entrée Node, limitée à son débit public) ; un ALB/NLB géré séparé est provisionné pour une entrée réelle. Aucune mise à l'échelle vers zéro ; le plancher d'auto-mise à l'échelle est d'un Node chaud | Unité 6.1, 6.2 |
| Red Hat OpenShift | Plateforme OpenShift complète, déployée par le client sur l'infrastructure IONOS Cloud | Ce n'est pas un service géré par IONOS ; le cycle de vie de Cluster repose sur le client en tant que partenaire CCSP Red Hat. La validation de Red Hat est requise avant la production | Unité 6.4 |
| SUSE Rancher Prime | Gestion multi-Cluster de Rancher sur le calcul IONOS | Livraison auto-gérée ; non gérée par IONOS ; SUSE facture les licences (apportez votre propre abonnement) | Unité 6.4 |
Pour le patrimoine de conteneurs de FinCorp, le facteur de différenciation est la charge opérationnelle : Managed Kubernetes est la valeur par défaut car IONOS possède la plateforme de contrôle, et les alternatives déployées par le client sont choisies uniquement lorsque contrat ou base de compétences OpenShift ou Rancher existe déjà.
3. Sélection du niveau de stockage
Le stockage est adapté au modèle d'accès. La contrainte récurrente est le plancher de performance de SSD et l'asymétrie de zone entre le calcul et le stockage.
| Niveau | Critère de différenciation | Contrainte d'éligibilité stricte | Déduit dans |
|---|---|---|---|
| Block Storage HDD | Coût le plus bas par Go ; attachement unique à VM | Dispositif unique à VM ; non partagé ; pas un mécanisme de sauvegarde | Unité 5.1, 4.2 |
| Block Storage SSD Standard / Premium | Débit et throughput plus élevés par GiB ; attachement unique à VM ; jusqu'à 4096 Go par Volume | Le SSD Standard en dessous de 100 Go n'atteint pas la pleine performance, il est donc inadapté en tant que petite base de données Volume | Unité 5.1, 7.3 |
| NFS (fichier partagé géré) | Montage multi-client concurrent dans une région | Régional et privé ; pas disponible dans tous les emplacements (par exemple DE/FRA/2 et GB/WOR) ; actif-passif au niveau du service | Unité 5.1 |
| Object Storage | Cible de sauvegarde, d'archive, de stockage en bloc compatible S3, et magasin d'audit ; verrouillage d'objet pour rétention anti-tampon | Pas un système de fichiers ; espace de noms plat avec authentification par clé et secret ; pas attachable en bloc | Unité 5.2 |
Notez l'asymétrie de zone en tant que contrainte de placement : Block Storage propose la zone 1, 2, 3, et Auto, tandis que le calcul n'offre que les zones 1, 2, et Auto. Une paire redondante fixée à la "zone 3 de calcul" n'est pas possible car la zone 3 de calcul n'existe pas.
4. Sélection du moteur de base de données
La décision de base de données est dictée par le modèle de données en premier lieu et le modèle de réplication et de continuité en second lieu. Pour chaque moteur géré, la même limite s'applique : il n'y a pas de réplicas en lecture et le Backup Service ne couvre pas les bases de données gérées, donc la mise à l'échelle en lecture et la continuité sont composées, et non achetées.
| Moteur | Critère de différenciation | Contrainte d'éligibilité stricte | Déduit dans |
|---|---|---|---|
| Managed PostgreSQL | Relationnel ; réplication asynchrone (par défaut) ou strictement synchrone pour le RPO le plus bas | La réplication strictement synchrone nécessite un minimum de trois réplicas ; pas de réplicas en lecture ; point de terminaison privé uniquement | Unité 5.3 |
| Managed MariaDB | Relationnel ; profil opérationnel plus simple | Réplication asynchrone uniquement (pas d'option synchrone) ; point de terminaison privé uniquement | Unité 5.3 |
| Managed MongoDB | Modèle de document ; partitionnement pour la mise à l'échelle horizontale | Le partitionnement est une fonctionnalité d'édition entreprise ; pas de réplication gérée de flux de modification ; point de terminaison privé uniquement | Unité 5.4 |
| In-Memory DB (cache) | Niveau de lecture en milliseconde ; la couche de mise à l'échelle en lecture et d'externalisation de session | Un cache, et non un système d'enregistrement ; point de terminaison privé uniquement | Unité 5.5 |
| Managed Kafka | Diffusion d'événements ; le substitut de capture de données de modification au niveau de l'application | Trois courtiers ; l'ordre est par partition uniquement ; ce n'est pas une base de données | Unité 5.6 |
Pour le noyau transactionnel de FinCorp, PostgreSQL avec réplication strictement synchrone répond à la exigence de faible RPO, le niveau In-Memory DB répond à la mise à l'échelle en lecture car les réplicas en lecture n'existent pas, et Kafka transporte les événements de modification car il n'y a pas de flux de modification géré de base de données.
5. Sélection des primitives de réseau
Chaque primitive de réseau répond à une couche ou une direction de trafic différente. Les contraintes strictes ici sont la source la plus fréquente d'appariements incompatibles (voir la Section 7).
| Primitive | Critère de différenciation | Contrainte d'éligibilité stricte | Dérivé dans |
|---|---|---|---|
| ALB géré | Routage de contenu de la couche 7 (chemin, hôte, en-tête, méthode, cookie, source-IP) avec déchargement de TLS | HTTP/HTTPS uniquement ; pas de liste blanche IP et pas de GSN sur le LB géré, donc le filtrage appartient aux cibles | Unité 3.3 |
| NLB géré | Pass-through TCP de la couche 4 ; le backend conserve le certificat | TCP uniquement ; pas de terminaison TLS ; pas de GSN sur le LB géré | Unité 3.4 |
| Passerelle NAT | Chemin de sortie pour les charges de travail privées | SNAT uniquement, pas de DNAT entrant ; nécessite une adresse IP publique IP réservée | Unité 3.6 |
| VPN Gateway | Connectivité de site à site chiffrée | IKEv2 ou WireGuard uniquement (pas IKEv1) ; partage de haute disponibilité active-passive avec une adresse IP publique IP | Unité 3.6 |
| Interconnexion | Interconnexion privée à haut débit entre les VDC | Même région et même contrat uniquement ; pas d'interconnexion entre régions ; un LAN par connexion | Unité 3.6 |
| Groupe de sécurité réseau | Filtrage par défaut de type deny-all à l'interface NIC du serveur | Lie les interfaces NIC des serveurs uniquement ; ne s'applique pas aux nœuds de pool Managed Kubernetes Node ou aux Cubes suspendus, et jamais au ALB/NLB géré | Unité 3.2 |
| Cloud DNS | Résolution anycast et gestion d'enregistrements à faible TTL | Pas de basculement basé sur les vérifications de santé natives ; il dirige les nouvelles connexions uniquement, et le TTL minimum de 60 secondes est le levier RTO dominant | Unité 3.7 |
6. Le filtre de souveraineté et d'attestation
Appliquez ce filtre en dernier, sur la conception terminée. La souveraineté et la conformité ne créent pas une architecture ; elles réduisent l'ensemble des emplacements que une conception déjà correcte est autorisée à utiliser. La souveraineté juridique de l'UE est une propriété de la juridiction de l'opérateur, et non de la région seule : une région de l'UE d'un fournisseur exploité par les États-Unis est toujours exposée à la loi CLOUD Act américaine, alors que IONOS est exploité par l'UE.
Les scopes d'attestation diffèrent par service et ne doivent jamais être généralisés à "la plateforme est certifiée". Les deux reconnaissances BSI, toutes deux pour les centres de données allemands, couvrent des ensembles de services différents :
| Service | BSI C5 (attestation de type 1, 2023-11-07) | ISO 27001 basé sur IT-Grundschutz (certificat, 2022-09-14) |
|---|---|---|
| Compute Engine | Dans le scope | Dans le scope |
| Cloud Cubes | Dans le scope | Hors du scope |
| Object Storage | Dans le scope | Dans le scope |
| Sauvegarde | Hors du scope | Dans le scope |
| Managed Kubernetes | Hors du scope | Dans le scope |
IONOS est le premier fournisseur de cloud allemand à détenir à la fois l'attestation C5 et la certification IT-Grundschutz, mais les deux scopes ne sont pas interchangeables. C5 est une attestation (Testat), de type 1, et non une certification et non de type 2. Les informations d'identification au niveau des centres de données (par exemple ISO 27001 à un emplacement, PCI-DSS, Uptime Tier IV) sont détenues par l'opérateur de centre de données et varient en fonction de l'emplacement ; les listes de certificats de produits dans le marketing ne sont pas contractuelles. NIS2 est une obligation réglementaire, et non une certification détenue.
Pour FinCorp sous GDPR et BSI, la résidence est une décision de placement prise avant que toute charge de travail ne soit affectée : les centres de données allemands, l'opérateur de l'UE, et chaque service dans le scope validé contre l'attestation exacte dont sa classe de données a besoin.
Résumé de la décision
Utilisez les matrices ci-dessus comme artefact à retenir de l'unité. L'ordre de lecture est fixé :
- Réduisez par le critère de différenciation pour le niveau.
- Éliminez chaque option qui échoue à une contrainte d'éligibilité stricte, avant de prendre en compte tout le reste.
- Appliquez le filtre de souveraineté et d'attestation en dernier, sur toute la conception.
7. Les deux erreurs de composition
Un design peut passer tous les matrices par primitive et échouer encore. Deux erreurs comptent pour presque tous ces cas.
Appairer des primitives incompatibles. Deux choix qui sont chacun corrects en isolation ne se composent pas. Placer un groupe de sécurité réseau « devant » un équilibreur de charge ALB ou NLB géré ne fait rien, car les groupes de sécurité réseau sont liés aux cartes réseau des serveurs et jamais au produit géré Load Balancer ; le filtrage doit être effectué sur les cibles. S'attendre à un trafic entrant via une passerelle NAT échoue, car NAT est uniquement SNAT ; la publication entrante appartient à un Load Balancer ou à une adresse IP publique réservée IP. Essayer de joindre deux centres de données virtuels dans différentes régions à l'aide d'une connexion croisée échoue, car la connexion croisée est limitée à la même région et au même contrat. Chacun est une primitive correcte utilisée là où sa contrainte stricte l'interdit.
Un choix fonctionnellement correct en dehors de la portée d'attestation requise. Un service peut faire le travail parfaitement et être encore le mauvais choix pour une charge de travail réglementée parce qu'il se trouve en dehors de l'attestation que cette charge de travail nécessite. Exécuter le traitement de conteneurs réglementés de FinCorp sur Managed Kubernetes est fonctionnellement solide, mais Managed Kubernetes n'est pas dans la portée d'attestation C5, donc une charge de travail qui nécessite contractuellement C5 doit être placée sur un service couvert par C5, tel que Compute Engine, à la place. Le choix n'est pas incorrect sur le plan technique ; il est incorrect par rapport au filtre de portée, qui est exactement pourquoi ce filtre est appliqué en dernier sur l'ensemble du design.
Résumé
Les décisions d'architecture sur IONOS se réduisent à un processus répétitif : réduire en fonction du critère de différenciation, éliminer en fonction des contraintes strictes, et appliquer enfin la souveraineté et la portée de l'attestation sur la conception terminée. Les matrices de cette unité rassemblent ces critères et contraintes pour le calcul, les conteneurs, le stockage, les bases de données et les réseaux, de sorte qu'une décision puisse être prise et justifiée en un seul endroit, avec les deux erreurs de composition comme vérification finale.
Points clés :
- Les contraintes d'éligibilité strictes disqualifient purement et simplement : une seule contrainte non respectée élimine une option, quel que soit son score ailleurs.
- VM Auto Scaling est uniquement horizontal et crée de nouvelles répliques à partir d'un modèle de réplique de conception ; il n'y a pas de répliques en lecture ; Backup Service ne couvre pas les bases de données gérées. Ces limites déterminent les niveaux à l'avance.
- Le filtre de souveraineté et d'attestation est appliqué en dernier, car la conformité réduit une conception déjà terminée plutôt que de la créer.
- Les portées de C5 et d'IT-Grundschutz diffèrent par service : Cubes est dans C5 mais pas dans IT-Grundschutz ; la sauvegarde et Managed Kubernetes sont dans IT-Grundschutz mais pas dans C5. Ne généralisez jamais à « la plateforme est certifiée ».
- Les deux erreurs de composition sont l'association de primitives dont les contraintes interdisent l'association, et la mise d'un service fonctionnellement correct en dehors de la portée d'attestation requise par la charge de travail.
Terminologie importante :
- Contrainte d'éligibilité stricte : un disqualificateur absolu (par exemple, un modèle immutable d'un Cube, ou le manque de mise à l'échelle à zéro de Managed Kubernetes) qui élimine une option avant que tout critère pondéré ne soit considéré.
- Portée d'attestation : l'ensemble exact de services qu'une créance couvre ; sur IONOS, C5 et IT-Grundschutz couvrent des services différents, et une affirmation doit toujours être liée au service nommé, à l'emplacement du centre de données allemand, à la créance, à son type et à sa date.
Lecture supplémentaire
- Unité 4.1 Sélection de la classe de calcul, Unité 4.4 Private Cloud (Serveurs dédiés VMware)
- Unité 6.1 Conception de la plateforme Kubernetes, Unité 6.4 Registre de conteneurs et sélection de la plateforme
- Unité 5.7 Protection des données et cycle de vie
- Unité 1.4 Souveraineté et conformité en tant qu'entrées de conception
- Unité 8.2 L'architecture d'entreprise de référence