à maintenir Problèmes de performance (data) Nouveaux produits / métier Création de nouvelles applications hors monolithe mais dans monorepo Mono repository Git pour profiter du tooling commun Uniquement pour des applis très “éloignées” du métier actuel G
sur le long terme Automatisation de la gestion des ressources→ infra as code Reprise en main du paramétrage réseau (LB, VPN, DMZ) Attention à la facture Migration Oracle RDS → PostgreSQL Utilisation lambda à la place d’EC2
le marché (post-covid) Comment définir nos critères objectivement ? Erreurs de casting qui coûtent cher (coût temps & humain) Onboarding Fiches de poste, focus Soft skills Chemin de carrière
allégée → motivation Montée en compétence plus rapide Périmètres identifiés → plus facile de trouver des interlocuteurs Confusion aux frontières des domaines (au début) Transverse technique “oublié” Difficile de bien dimensionner les équipes (scope & roadmap)
d’étranglement Beaucoup d’externes → apparente “fragilité” pour les investisseurs Recruter pour constituer les équipes type: Poste clés: PO & Lead Dev → internaliser
lead dev Pas de coût / difficulté pour monter en compétence Un bon dev ne fait pas forcément un bon lead dev / manager Recrutement PO externes Difficile de monter en compétence sur l’existant Organisation “ateliers métier” chaque semaine 1h pour focus sur une partie de l’appli
régressions dans une autre équipe Frontières floues: qui est responsable de quoi ? Tension de modèle Limiter le code commun entre plusieurs équipes Modulariser: créer des frontières et des contrats d’interface entre les domaines
besoin → nouveau package Réorganiser legacy package by layer → packages by feature/domain Attention aux entités qui appartiennent à plusieurs domaines Complexe et cher à découper Attention aux application orientées données (on vient d’excel !) Données → 1 modèle unique qui traverse toutes les couches ⇒ fort couplage Domaine → N modèles par domaine
Meilleur scaling & prix vs EC2 - Limite des tailles machine (EC2 XLarge) Une fonction n’est pas une application Montée en compétence écosystème Stack java pas idéale (mais ok) Besoin d’autonomie sur l’infra (droits ou Ops dispos)
containers + plateforme Kubernetes On est libre du runtime qu’on veut utiliser build once, run everywhere Rapide à prototyper Shift left Ops les devs montent en autonomie et les Ops s'occupent de l’outillage
fonctionnel Gradle Version Catalog (cf Spring BOM) Moins de combinatoire de libs → moins de pb d’incompatibilités Synchroniser les montées de versions techniques Gradle plugins: tâches partagées entre les builds (docker, sonar, liquibase, etc.) on ne se pose plus de questions Magie noire: fonctionnement opaque
Manque de connaissance des nouveaux (périmètre complexe) Impacts des changements d’une équipe sur l’autre Manque de tests automatisés end 2 end & manuels Mise en place de plus de tests e2e Scénario tech, pas assez métier + SUT trop grand / variable Recrutement QA + centre tests offshore Ralentissement cycle de livraison Shift left QA
Silotage des équipes → moins de communication → plus de bugs Chaque équipe sur son sujet → plus personne pour les sujets transverses Divergence & problèmes de cohérence Communautés de pratiques volontariat, motivation, 1 personne par équipe & dégager du temps hors projet vision pas claire, pas de moyens d’action Task force 1 sujet transverse, 1 scope restreint, 1 limite de temps pas adapté pour du récurrent / long terme
Tout le monde peut tout modifier Toute la CI / CD est basée sur ce monorepo (release train) Github Code Owners Création de nouveaux repos Extraction des commons (identifier couplages cachées) Changement du mode de release Souplesse cycle de déploiement Matrice de versions compatibles & limiter nb de version
projet coûte trop cher / trop long l’application d’exemple n’est pas production ready Golden Path chemin par défaut pour créer une application Design system bibliothèque de composant Coût d’investissement Lean spirit (scope, simplicité, walking skeleton en prod)
Nouvelle organisation, platform team, mouvement & casser silos projet → produit poste responsable produit Modulariser, Hexagonal, com inter modules Standardiser, bibliothèque composants & libs
cloud, abstraction Kube Equipe pluridisciplinaire <10 Privilégier vos critères différenciateurs Modulariser loi de Conway Veiller à l’XP dev (cadre, DRY, KISS)