Gouvernance & décision
Public principal : CTO / leaders tech
Des repères pour prendre des décisions techniques éclairées : architecture, gestion de la dette technique, choix technologiques, alignement tech/business, et gouvernance partagée.
Public principal : CTO / leaders tech
Des repères pour prendre des décisions techniques éclairées : architecture, gestion de la dette technique, choix technologiques, alignement tech/business, et gouvernance partagée.
Public principal : CTO / leaders tech
Trois articles repères pour entrer dans ce pilier. Ces articles restent pertinents indépendamment de leur date de publication.
Stratégies du livre “Être ou ne pas être CTO”, chapitre “Gérer la dette technique”. Situation réelle “On doit refactoriser tout le code !” Cette injonction revient régulièrement dans les équipes techniques. Elle traduit souvent une frustration légitime face à un code qui ralentit le développement, mais elle masque une question plus fondamentale : qu’est-ce qui est vraiment de la dette technique, et qu’est-ce qui est simplement du code qu’on n’aime pas ? ...
Basé sur “Être ou ne pas être CTO”, chapitre “Définir la stratégie technique”. Situation réelle “Notre vision technique ? Euh… on fait du bon code ?” Cette réponse revient souvent quand on demande à une équipe technique quelle est sa vision. Elle traduit une absence de stratégie claire, mais aussi une difficulté à articuler une vision technique qui guide les décisions au quotidien. Ce que j’ai observé : une vision technique n’est pas une liste de technologies cool à adopter. C’est une stratégie claire qui explique où vous êtes, où vous allez, comment vous y allez, et pourquoi. Sans cette vision, les décisions techniques deviennent réactives plutôt que stratégiques, et l’équipe perd son cap. ...
🔹 Article #79 Pilier éditorial : Leadership & Management Public principal : Public A (CTO / tech leaders) Situation réelle La notion d’Entreprise Libérée est souvent perçue comme une utopie ou un concept vague, porté par des discours inspirants mais parfois déconnectés des réalités du terrain. Pourtant, derrière les slogans se trouvent des pratiques managériales bien structurées, notamment la gouvernance partagée et l’Holacratie, qui peuvent profondément transformer nos organisations. Ce que j’ai observé : une Entreprise Libérée n’est pas une entreprise sans règles. Elle n’est pas non plus un lieu où « tout le monde fait ce qu’il veut ». Au contraire, il s’agit d’un environnement où les responsabilités sont clarifiées et partagées pour favoriser l’autonomie, la transparence et la prise d’initiative. ...
D'autres articles sur ce pilier, triés par date de publication (plus récents en premier).
Situation réelle “On doit changer ce endpoint mais 500 clients l’utilisent.” Cette situation n’est pas une fatalité. Le versioning d’API résout ce problème. Ce que j’ai observé : le problème Breaking changes. Scénario classique (V1 API 1000 clients utilisent ça GET /api/users/123 id 123 name Alice email alice@example.com V2 On veut séparer prénom/nom GET /api/users/123 id 123 firstName Alice Breaking change lastName Smith email alice@example.com Résultat 1000 clients cassés Besoin Faire évoluer API sans casser existant). Versioning d’API n’est pas optionnel. C’est promesse clients : Stabilité, Prévisibilité, Temps migration. Best practices : URL versioning /api/v1 /api/v2, Backward compatible quand possible, Deprecation graduelle 6 mois minimum, Communication proactive, Monitoring usage. Éviter breaking changes : Additive changes only, GraphQL si possible, BFF pattern. ...
Situation réelle “Pourquoi la prod est lente ?” Sans observability, impossible de répondre. Cette situation n’est pas une fatalité. L’observability moderne permet de comprendre le comportement d’un système en production et de diagnostiquer les problèmes rapidement. Ce que j’ai observé : beaucoup d’équipes confondent monitoring et observability. Monitoring approche classique (Savoir QUAND ça casse → Alertes métriques connues → “CPU > 80%” → Alerte, Limite ne répond pas au “Pourquoi ?”). Observability approche moderne (Comprendre POURQUOI ça casse → Investiguer comportements émergents → Corréler métriques + logs + traces, Exemple Alerte API latency increased +200ms Monitoring classique “La latency est haute” Restart service ? Observability Trace montre DB query lente Logs montrent Lock contention Metrics montrent Connexions DB saturées → Root cause Missing index table users). L’observability n’est pas un luxe. C’est une nécessité : réduire MTTR de 90%, comprendre comportements prod, anticiper problèmes. ...
Situation réelle 10 millions de users, 1TB de data, votre database PostgreSQL rame. Sharding ? Peut-être. Mais avant, explorons toutes les alternatives (plus simples). Ce que j’ai observé : sharding n’est pas premier choix. Alternatives plus simples : Vertical scaling augmenter machine DB actuelle 8 CPU 32GB RAM DB upgradée 32 CPU 256GB RAM Coût $500/mois → $2000/mois Effort 1 heure migration Jusqu’où Machines jusqu’à 128 CPU 4TB RAM existent, Read replicas scaling lecture Master Primary Writes Read replicas R1 R2 R3 Reads Cas usage 90% reads 10% writes Effort 1 semaine, Partitioning même DB tables séparées Partition par date CREATE TABLE orders_2024 PARTITION OF orders FOR VALUES FROM ‘2024-01-01’ TO ‘2025-01-01’ CREATE TABLE orders_2025 PARTITION OF orders FOR VALUES FROM ‘2025-01-01’ TO ‘2026-01-01’ Performance Queries 10x plus rapides partition Effort 1 semaine, Caching agressif Redis cache Requêtes fréquentes Sessions Rate limiting Hit rate 80%+ → Reduce DB load 80%. Quand sharding devient nécessaire : Vertical scaling maxed out Machine biggest available Coût prohibitif >$10k/mois, Write throughput saturé Master CPU >80% Write lag croissant Read replicas suffisent plus, Data size >1TB Backups trop longs >6h Restore impossible RTO Queries lentes malgré index, Geographic distribution Users worldwide Latency critique Data residency laws GDPR. Sharding n’est pas premier choix. Alternatives plus simples : Vertical scaling Read replicas Caching Partitioning. Mais si nécessaire : Choisir bonne stratégie hash range geo, Migration progressive 6-12 mois, Monitoring intensif. Complexité réelle : Cross-shard queries Transactions distribuées Resharding. Commencez simple. Shardez seulement si vraiment requis. ...
Situation réelle “Il faut tout réécrire !” Cette proposition revient régulièrement face à une codebase legacy. Elle semble séduisante : repartir de zéro, faire les choses bien cette fois. Mais la réalité est différente. Les réécritures complètes échouent 80% du temps : 6 mois deviennent 18 mois, le budget triple, les features manquent, les bugs nouveaux apparaissent, parfois le projet est abandonné. Ce que j’ai observé : il est possible d’améliorer progressivement une codebase legacy sans Big Bang rewrite. Le pattern Strangler Fig permet de remplacer progressivement l’ancien système par du nouveau code, fonctionnalité par fonctionnalité. Cette approche progressive évite les risques du Big Bang et permet de continuer à livrer de la valeur pendant la migration. ...
Situation réelle “Notre système est résilient.” Vraiment ? L’avez-vous testé ? Cette situation n’est pas une fatalité. Le Chaos Engineering consiste à casser volontairement la prod pour vérifier qu’elle survit. Ce que j’ai observé : beaucoup d’équipes croient que leur système est résilient (Redondance serveurs, Auto-scaling configuré, Health checks en place, Backups automatiques → “Le système est résilient !”). La réalité (Premier incident critique Auto-scaling ne scale pas config obsolète Health checks passent mais app bugue Backup restore jamais testé ne marche pas Cascading failure tout tombe → Downtime 4 heures Problème On ne teste résilience que pendant incidents). Chaos Engineering n’est pas destruction pour fun. C’est assurance : Tester résilience avant incidents réels, Découvrir faiblesses conditions contrôlées, Build confidence équipe système. Commencer petit : GameDay staging 1 scénario simple, Fixer ce qui casse, Répéter jusqu’à confiance, Progresser vers prod. En 6 mois : Système vraiment résilient. ...
Situation réelle Pourquoi cette décision a été prise ? Qui l’a validée ? La documentation ne le dit pas… ou elle est obsolète. Cette situation n’est pas une fatalité. Les ADR et RFC résolvent ce problème de façon élégante. Ce que j’ai observé : beaucoup d’équipes ont une documentation morte. Symptômes classiques (README.md last updated 2 years ago “We use microservices…” mais personne ne sait pourquoi microservices quelles alternatives considérées qui a décidé). Résultat : décisions refaites plusieurs fois, contexte perdu, nouveaux arrivants perdus. Avec ADR/RFC, documentation vivante : toujours à jour archives immutables, contexte préservé, décisions traçables. Métriques adoption mesurée (Avant ADR/RFC décisions documentées 10% “Pourquoi ?” répondu rarement onboarding nouveau 2 semaines, Après ADR/RFC décisions documentées 95% “Pourquoi ?” dans ADR toujours onboarding nouveau 3 jours). ...
Situation réelle Déployer un vendredi soir ? Avec les Feature Flags, c’est possible. Cette situation n’est pas une fatalité. Les Feature Flags transforment le déploiement : avant (Deploy = stress, Rollback = 15-30min, Testing en prod = impossible), après (Deploy = routine, Rollback = 1 seconde, Testing en prod = safe). Ce que j’ai observé : beaucoup d’équipes ont un problème traditionnel. Déploiement = Release (git push → CI/CD → Deploy prod → 🤞 Si bug rollback complet → redéploy entier → 15-30 minutes downtime). Résultat : déploiements le mardi matin uniquement, freeze 2 jours avant weekend, stress maximum. Avec Feature Flags (git push → CI/CD → Deploy prod feature OFF → Test interne feature ON pour admins → Rollout 5% users → 100% users Si bug Toggle flag OFF instantané). Résultat : deploy n’importe quand, rollback <1 seconde, zero stress. Investissement minimal, impact maximum. ...
Situation réelle Un Service Mesh résout des problèmes réels de microservices. Mais il en crée aussi de nouveaux. Voici quand l’adopter (ou pas) après l’avoir utilisé en prod sur 3 projets différents. Ce que j’ai observé : le problème qu’un Service Mesh résout. Sans Service Mesh (Service A HTTP Service B Retry logic dans code Circuit breaker dans code Metrics dans code mTLS dans code Load balancing dans code Résultat Logique dupliquée partout). Avec Service Mesh (Service A → Sidecar Proxy → Sidecar Proxy → Service B Toute logique réseau ici Promesse Abstraire networking sécurité observabilité). Un Service Mesh n’est pas silver bullet. C’est trade-off : Gain Networking abstrait sécurité observability, Coût Complexité overhead expertise requise. Mon conseil : Commencer sans K8s Ingress + SDK libraries, Identifier pain points réels, Tester Service Mesh 1 namespace, Mesurer impact vs effort, Décider avec data. Pour 80% projets : Commencez par Linkerd si Service Mesh requis. Simple rapide fiable. ...
Situation réelle Terraform domine le marché IaC depuis des années. Pulumi arrive avec la promesse d’utiliser de vrais langages de programmation. Après avoir utilisé les deux en production, voici mon retour sans bullshit. Ce que j’ai observé : il n’y a pas de mauvais choix. Terraform et Pulumi sont tous deux excellents pour faire de l’IaC en 2025. Le vrai critère : votre équipe. Équipe infra/ops → Terraform, Équipe dev → Pulumi, Équipe mixte → Terraform plus facile pour tout le monde. Mon conseil : Faire POC 1 feature simple, Mesurer vitesse dev bugs satisfaction équipe, Décider avec vraie data. ...
Situation réelle Vous en avez marre des merge conflicts monstres ? Des feature branches qui durent 3 semaines ? Des hotfixes qui cassent tout ? Cette situation n’est pas une fatalité. Il existe une alternative plus simple : le Trunk-Based Development. Ce que j’ai observé : beaucoup d’équipes utilisent Git Flow qui ne scale pas. Problèmes réels (Merge hell plus branche vit plus conflicts difficiles, Integration tardive on découvre bugs fin, Complexité develop release hotfix feature 4 types branches, Slow feedback PR mergée après plusieurs jours). Chez un client (Feature branch moyenne 8.5 jours, Merge conflicts 40% PRs, Time to production 2-3 semaines). Trunk-Based Development n’est pas magique, mais les bénéfices sont réels : merge conflicts drastiquement réduits, time to production divisé par 10, qualité améliorée, équipe plus heureuse. ...
Situation réelle WebAssembly (Wasm) promet des performances natives dans le navigateur. Après l’avoir utilisé en production sur plusieurs projets, voici ce qui fonctionne vraiment et ce qui relève du marketing. Ce que j’ai observé : WebAssembly en 2 minutes. Qu’est-ce que c’est (WebAssembly format binaire exécutable navigateurs modernes offrant performances proches code natif Rust/C/C++ Go etc Compile .wasm Binaire compact Load Browser Exécution rapide). Promesses marketing vs Réalité (Marketing “Wasm 20x plus rapide JavaScript” Réalité Dépend totalement cas usage). WebAssembly n’est pas remplacement JavaScript. C’est complément cas usage spécifiques : Calculs intensifs, Portage applications, Performance critique. Approche pragmatique : Mesurer problème réel, Tester Wasm POC, Comparer métriques, Décider avec data. En 2025, Wasm mature production. Mais utilisez-le uniquement quand apporte vraie valeur. ...
Situation réelle Le Platform Engineering est LA tendance qui transforme le DevOps en 2025. Mais au-delà du buzzword, qu’est-ce qui change vraiment ? Retour d’expérience après avoir construit une plateforme interne pour 50+ développeurs. Ce que j’ai observé : le problème DevOps n’a pas tenu promesses. La promesse initiale (“You build it, you run it” — Werner Vogels Amazon CTO). La réalité 5 ans après (Développeurs noyés Kubernetes Terraform CI/CD Copier-coller config entre projets 10 façons différentes déployer Onboarding nouveau dev 2 semaines infra Constat Chaque équipe réinvente roue). Platform Engineering n’est pas juste DevOps rebrandé. C’est changement mindset : De “Donner accès infra” À “Construire produit développeurs”. Les bénéfices sont réels : Productivité développeur ↑ Time to market ↓ Satisfaction équipes ↑ Coûts infra optimisés. Commencez petit : Identifier 1 pain point critique, Construire 1 capability simple, Mesurer impact, Itérer. ...