Aller au contenu

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.