Contraintes et contexte¶
Les faits qui eliminent des options avant même d'ouvrir un outil de modélisation.
Pourquoi les contraintes sont des allies¶
Les contraintes sont des faits, pas des préférences. Elles eliminent des options avant même d'ouvrir un outil de modélisation. Les ignorer conduit à concevoir des architectures parfaites sur papier mais intenables en pratique.
Un architecte débutant voit les contraintes comme des obstacles. Un architecte experimente les voit comme un cadre qui accéléré les décisions. Quand le budget est de 500 EUR/mois et l'équipe de trois personnes, la moitie des options architecturales sont eliminees d'office. C'est une bonne nouvelle — moins d'options a évaluer, moins de debats, des décisions plus rapides.
Sans contraintes documentees, chaque réunion d'architecture risque de répartir de zero. Quelqu'un propose Kubernetes, quelqu'un d'autre rappelle que personne ne sait l'opérer, un troisieme dit "on pourrait apprendre". Ce debat se reproduit jusqu'à ce qu'on documente la contrainte : "pas d'expertise ops interne → managed services uniquement".
Inventaire des contraintes¶
| Contrainte | Impact sur l'architecture |
|---|---|
| Équipe de 3 développeurs | Pas de microservices — la complexité opérationnelle dépassé la capacité de l'équipe |
| Conformité PCI-DSS | Chiffrement at-rest obligatoire, isolation réseau des composants traitant des données de carte |
| Stack Java existante | JVM-first — éviter d'introduire un runtime supplémentaire sans justification forte |
| Budget infrastructure : 500 EUR/mois | Architecture serverless ou managed services — pas de cluster Kubernetes dédié |
| Délai de 3 mois | Monolithe modulaire — pas le moment d'absorber la courbe d'apprentissage de nouvelles technologies |
| Données personnelles en UE | Hebergement RGPD-compliant, pas de transfert hors EEE sans mécanisme adequat |
| Pas d'expertise ops interne | Managed services uniquement — aucun composant auto-opère |
| Système legacy non remplacable | Intégration par API ou événements, pas de remplacement direct |
Contraintes architecturales vs contraintes projet¶
Toutes les contraintes n'ont pas le même statut. Distinguer les contraintes architecturales (qui impactent la conception du système) des contraintes projet (qui impactent la manière de travailler) evite de melanger les discussions.
| Type | Exemples | Impact |
|---|---|---|
| Contrainte architecturale | "Les données doivent rester en UE" | Élimine des fournisseurs cloud et des regions |
| Contrainte architecturale | "Le système existant expose un SOAP, pas du REST" | Impose un adaptateur ou un anti-corruption layer |
| Contrainte architecturale | "Latence < 100ms entre les composants" | Exclut les architectures avec messaging asynchrone |
| Contrainte projet | "Budget total de 200k EUR" | Limite le nombre de composants a développer |
| Contrainte projet | "L'équipe ne connait pas Go" | Orienté le choix de langage |
| Contrainte projet | "Mise en production dans 6 semaines" | Force le choix de solutions pretes à l'emploi |
Les contraintes architecturales sont durables — elles survivent aux changements d'équipe. Les contraintes projet sont temporaires — une équipe peut apprendre Go, un budget peut être augmente. Cette distinction est importante pour la revue périodique des contraintes.
Comment découvrir les contraintes¶
Les contraintes ne sont pas toujours explicites. Elles s'extraient en posant les bonnes questions :
- Équipe : Combien de développeurs ? Quelles compétences ? Qui va opérer le système en production ?
- Budget : Quel est le budget infra mensuel ? Annuel ? Y a-t-il un budget initial différent du recurrent ?
- Temps : Quelle est la date de mise en production ? Negociable ou non ?
- Technique : Quels systèmes existants doivent être preserves ou intégrés ? Quelle stack est déjà maîtrisée ?
- Reglementaire : Quelles certifications ou conformites sont requises ? Dans quels secteurs ou pays le produit operera-t-il ?
Grille de découverte structurée¶
| Domaine | Question | Contrainte potentielle |
|---|---|---|
| Organisation | Qui décidé du go/no-go en production ? | Processus de validation, comite de mise en prod |
| Financier | Y a-t-il un budget recurrent ou uniquement un investissement ? | Managed vs self-hosted, SaaS vs build |
| Humain | L'équipe tourne-t-elle fréquemment ? | Documentation, simplicité, onboarding rapide |
| Technique | Quels composants sont non-negociables dans le SI existant ? | Points d'intégration, protocoles imposes |
| Legal | Le produit sera-t-il commercialise hors de l'UE ? | Multi-juridiction, localisation des données |
| Temporal | Y a-t-il des pics de charge prévisibles (soldes, fin d'année) ? | Auto-scaling, capacité pre-provisionnee |
Lister les contraintes en début de projet remplacé des semaines de faux debats. Quand l'option "microservices" est éliminée par la taille de l'équipe, on ne la remet pas sur la table à chaque réunion.
Les contraintes ont un autre avantage : elles protègent les décisions prises. Quand un nouveau membre de l'équipe arrive avec de l'expérience sur Kubernetes et propose de migrer l'infrastructure, la contrainte budgetaire documentee met fin à la conversation avant qu'elle ne consomme de l'énergie collective.
Contraintes reglementaires détaillées¶
Les contraintes reglementaires meritent un traitement approfondi parce qu'elles sont non-negociables et que leur non-respect a des conséquences legales, pas seulement techniques.
RGPD (Reglement Général sur la Protection des Données)¶
Le RGPD s'applique dès que le système traite des données personnelles de residents europeens — quelle que soit la localisation du serveur.
| Exigence RGPD | Impact architectural |
|---|---|
| Droit à l'effacement | Capacité de supprimer toutes les données d'un utilisateur dans tous les composants |
| Droit à la portabilité | Export des données en format structure et lisible par machine |
| Minimisation des données | Ne collecter que les données strictement nécessaires |
| Limitation de conservation | TTL sur les données, purge automatique |
| Localisation des données | Hebergement en UE ou pays avec décision d'adequation |
| Consentement explicite | Mécanisme de recueil et stockage du consentement avec audit trail |
| Privacy by design | Protection des données intégrée dans la conception, pas ajoutee après |
PCI-DSS (Payment Card Industry Data Security Standard)¶
PCI-DSS s'applique à tout système qui traite, stocke ou transmet des données de carte bancaire.
| Exigence PCI-DSS | Impact architectural |
|---|---|
| Segmentation réseau | Isoler le CDE (Cardholder Data Environment) du reste du SI |
| Chiffrement at-rest | AES-256 ou équivalent pour les données de carte stockees |
| Chiffrement in-transit | TLS 1.2+ obligatoire pour toute transmission de données de carte |
| Journalisation | Log de tous les accès aux données de carte, rétention 1 an minimum |
| Tests de penetration | Tests annuels sur le périmètre PCI |
| Gestion des vulnérabilités | Scans trimestriels par un ASV (Approved Scanning Vendor) |
Déléguer le PCI-DSS
La stratégie la plus simple pour une startup : ne jamais toucher les données de carte. Utiliser un provider comme Stripe avec tokenisation côté client. Le périmètre PCI se réduit alors à la page de paiement — pas à l'ensemble du SI.
HDS (Hebergement de Données de Sante)¶
La certification HDS est obligatoire en France pour tout hebergeur de données de sante a caractère personnel.
| Exigence HDS | Impact architectural |
|---|---|
| Hebergeur certifie HDS | Choix du cloud provider restreint (OVH, Scaleway, certains services AWS) |
| Chiffrement systematique | Données de sante chiffrees at-rest et in-transit |
| Traçabilité des accès | Audit log de tous les accès aux données de sante |
| Plan de continuite | PCA/PRA documentes et testés |
| Localisation en France | Hebergement sur le territoire français (plus restrictif que RGPD) |
SOC 2¶
SOC 2 est un cadre d'audit americain base sur cinq principes : sécurité, disponibilité, intégrité du traitement, confidentialite et respect de la vie privee.
| Principe SOC 2 | Impact architectural |
|---|---|
| Sécurité | Contrôle d'accès, chiffrement, détection d'intrusion |
| Disponibilité | SLA documentes, monitoring, plan de reprise |
| Intégrité du traitement | Validation des entrees, reconciliation des données |
| Confidentialite | Classification des données, contrôle d'accès par rôle |
| Vie privee | Gestion du consentement, politique de rétention |
Journal de contraintes¶
Les contraintes evoluent au fil du projet. Une contrainte budgetaire peut être levee après une levee de fonds. Une contrainte reglementaire peut apparaître avec l'ouverture d'un nouveau marche. Documenter les contraintes dans un journal permet de tracer ces évolutions.
| Date | Contrainte | Type | Statut | Impact sur les décisions |
|---|---|---|---|---|
| 2026-01-15 | Budget infra 500 EUR/mois | Projet | Active | Managed services uniquement |
| 2026-01-15 | Équipe de 3 devs | Projet | Active | Monolithe modulaire |
| 2026-02-01 | Conformité RGPD | Architecturale | Active | Hebergement UE, droit à l'effacement |
| 2026-03-10 | Budget augmente a 2000 EUR/mois | Projet | Active | Rend possible un cluster Kubernetes géré |
| 2026-03-10 | Budget infra 500 EUR/mois | Projet | Levee | Remplacee par la contrainte du 2026-03-10 |
Le journal de contraintes complète les ADR. La ou l'ADR capture une décision ponctuelle, le journal capture les conditions de base qui orientent toutes les décisions. Quand on revoit un ADR d'il y a six mois, le journal de contraintes explique pourquoi les options etaient celles-la et pas d'autres.
graph TD
CTX[Contrainte identifiee] --"documentee dans"--> LOG[Journal de contraintes]
LOG --"oriente"--> DEC[Decisions architecture]
DEC --"documentees dans"--> ADR[ADR]
CTX --"change"--> REV[Revision]
REV --"met a jour"--> LOG
REV --"peut invalider"--> ADR Negocier les contraintes¶
Toutes les contraintes ne sont pas gravees dans le marbre. Certaines sont negociables — et l'architecte a un rôle a jouer dans cette negociation.
Contraintes non-negociables :
- Reglementaires : RGPD, PCI-DSS, HDS → la loi ne se negocie pas
- Physiques : latence réseau entre continents → la physique ne se negocie pas
- Contractuelles : SLA envers les clients → engage la responsabilité juridique
Contraintes negociables :
- Budget : peut être augmente si le ROI est démontré
- Délai : peut être ajuste si le risque qualité est explicite
- Stack technique : peut évoluer si l'équipe est prete a investir en formation
- Équipe : peut être renforcee si le besoin est justifie
Pour negocier une contrainte, présenter l'impact en termes métier, pas techniques. "On a besoin de 500 EUR de plus par mois" ne fonctionne pas. "Avec 500 EUR de plus par mois, on divise le risque d'indisponibilite par trois, ce qui protégé un chiffre d'affaires mensuel de 50k EUR" fonctionne.
Technique de negociation : la matrice impact-effort¶
Pour chaque contrainte negociable, évaluer :
| Contrainte a negocier | Effort de negociation | Impact si levee | Recommandation |
|---|---|---|---|
| Budget infra +500 EUR/mois | Faible | Accès aux managed services | Negocier immédiatement |
| Recrutement d'un ops | Élevé | Autonomie opérationnelle | Planifier sur 3 mois |
| Délai reporte de 2 semaines | Moyen | Qualité des tests d'acceptance | Negocier si risque qualité |
| Changement de stack | Très élevé | Productivité à long terme | Documenter pour la v2 |
L'architecte n'est pas un negociateur professionnel, mais il est le mieux place pour quantifier l'impact technique d'une contrainte. Cette quantification est l'arme principale de la negociation.
Contraintes techniques implicites¶
Certaines contraintes ne figurent dans aucun document mais impactent fortement l'architecture. Elles s'extraient par l'observation et l'expérience.
Contraintes de l'écosystème¶
- Latence réseau : un appel inter-region ajoute 50-150ms. Un design qui enchaîné 5 appels synchrones cross-region impose 250-750ms de latence incompressible.
- Bande passante : un export de 10 GB quotidien vers un partenaire impose une réflexion sur le format, la compression et la fenêtre de transfert.
- DNS propagation : un basculement DNS prend 5 a 60 minutes selon les TTL. Si le RTO est de 15 minutes, le DNS failover ne suffit pas.
Contraintes organisationnelles cachees¶
| Contrainte cachee | Comment la découvrir | Impact |
|---|---|---|
| Processus de mise en production lourd | Demander le délai entre "code pret" et "en prod" | Limiter la fréquence des releases |
| Équipe DBA gatekeeping | Demander qui valide les migrations de schéma | Anticiper les délais de validation |
| Comite sécurité mensuel | Demander le processus de validation sécurité | Planifier les reviews de sécurité en avance |
| Pas d'accès prod pour les devs | Demander les accès en environnement de debug | Investir dans l'observabilité |
| Politique d'achats avec délai de 3 mois | Demander le processus d'achat de licences | Favoriser l'open source ou les services inclus |
Contraintes de dette technique¶
La dette technique existante est une contrainte a part entière. Un système legacy avec une base de données non normalisee, pas de tests automatises et un déploiement manuel impose des contraintes sur la vitesse d'évolution.
Documenter la dette technique comme contrainte — pas comme défaut — change la conversation. "Le système n'a pas de tests" est un reproche. "L'absence de tests automatises limite la vitesse de déploiement a une release par mois" est une contrainte documentee avec un impact mesurable.
Lien entre contraintes et décisions¶
Chaque contrainte documentee doit être liee aux décisions qu'elle influence. Cette traçabilité permet de réviser les décisions quand les contraintes changent.
| Contrainte | Décision influencee | ADR référence |
|---|---|---|
| Budget 500 EUR/mois | Managed services uniquement | ADR-002 |
| Équipe 3 devs | Monolithe modulaire | ADR-001 |
| Conformité RGPD | Hebergement UE | ADR-004 |
| Pas d'expertise ops | Pas de Kubernetes | ADR-002 |
| Stack Java existante | JVM pour les nouveaux services | ADR-003 |
Quand une contrainte est levee (par exemple, le budget passe a 2000 EUR/mois), la traçabilité indique quelles décisions peuvent être revisitees. Sans cette traçabilité, les anciennes contraintes continuent à influencer les choix par inertie.
Anti-patterns des contraintes¶
| Anti-pattern | Symptome | Correction |
|---|---|---|
| Contraintes implicites | Découvertes en phase de tests ou de mise en production | Atelier de contraintes en début de projet |
| Fausses contraintes | "On a toujours fait comme ca" présenté comme une contrainte | Distinguer les habitudes des contraintes réelles |
| Contraintes sur-interpretes | "RGPD donc tout doit être chiffre partout" | Lire le texte, identifier le périmètre exact |
| Contraintes oubliees | L'équipe ignore les contraintes documentees | Lier les contraintes aux critères d'acceptance |
| Contraintes figees | Une contrainte levee continue à influencer les décisions | Réviser le journal de contraintes à chaque iteration |
Chapitre suivant : TOGAF ADM — un cadre d'architecture d'entreprise pour les organisations qui ont besoin de structure.