- Fonctionnalités
- Pricing

Terraform et Kubernetes sont des outils puissants. Ils sont également deux des sources les plus courantes de friction entre les équipes d'application et l'infrastructure dont elles dépendent.
Lorsque la livraison ralentit ou que des incidents se produisent, il est tentant de présenter le problème comme un déficit de compétences : les développeurs ne comprennent pas suffisamment bien l'infrastructure. Dans la pratique, cette présentation passe à côté de l'essentiel.
Le véritable problème n'est pas un manque de compétences. Il s'agit d'un décalage entre les personnes pour lesquelles ces outils sont conçus et celles qui sont souvent censées les utiliser. Cet écart entre les tâches pour lesquelles les développeurs sont embauchés et celles qu'on leur demande de gérer crée une charge cognitive. Il ralentit la livraison, augmente les risques et épuise l'énergie.
Pourquoi les outils d'infrastructure font perdre du temps aux développeurs
La plupart des développeurs d'applications ne veulent pas se soucier de l'infrastructure. Du point de vue d'un développeur, l'infrastructure doit simplement être prévisible, disponible et cohérente dans tous les environnements. Lorsqu'elle passe au second plan, les équipes avancent plus rapidement. Lorsqu'elle requiert de l'attention, elle détourne l'attention du travail sur le produit, ce qui affecte alors l'expérience de vos clients.
Pourtant, si vous demandez à la plupart des développeurs où passe réellement leur temps, vous obtiendrez les mêmes réponses :
Aucune de ces tâches n'apporte de valeur ajoutée au produit. Pourtant, elles exigent de la concentration, des changements de contexte et un réapprentissage constant.
Terraform et Kubernetes aggravent la situation en obligeant les développeurs à réfléchir explicitement au comportement de l'infrastructure. Ils exposent des concepts tels que les cycles de vie des ressources, les graphiques de dépendance, la mise en réseau, les autorisations et les domaines de défaillance. Aucun de ces concepts n'est mauvais en soi, mais ils supposent un modèle mental que la plupart des développeurs d'applications n'utilisent pas au quotidien.
La difficulté ne réside pas dans la syntaxe, mais dans la causalité. Comprendre ce que fait un changement de configuration n'est pas la même chose que comprendre quand il s'applique, où il se propage ou ce qu'il peut affecter d'autre. De petits changements peuvent avoir des effets secondaires non évidents, en particulier lorsque l'état est partagé entre plusieurs environnements ou équipes.
Pour quelqu'un dont le modèle mental principal est la logique d'application, les requêtes, le flux de données et les règles métier, ce type de raisonnement est coûteux. Il nécessite un changement de contexte vers un domaine entièrement différent, souvent sous la pression du temps.
Les développeurs d'applications ont rarement le temps ou la formation nécessaires pour acquérir cette profondeur. Ils travaillent donc avec une compréhension partielle. Cette compréhension partielle conduit à des résultats prévisibles :
La plupart des pannes causées de cette manière ne sont pas dues à la négligence. Elles proviennent d'outils qui nécessitent une expertise en infrastructure, mais qui sont utilisés par des personnes embauchées pour travailler sur des applications.
Pour en savoir plus sur la manière dont la complexité de Kubernetes s'accumule, consultez l'article « Le coût caché de la simple utilisation de Kubernetes ».
Lorsque les développeurs d'applications sont poussés à travailler au niveau des primitives d'infrastructure, plusieurs choses prévisibles se produisent.
Les équipes ralentissent, non pas parce que le travail est plus difficile, mais parce que chaque changement nécessite une validation supplémentaire et une remise en question. Les développeurs deviennent prudents. Les revues se concentrent sur les risques liés à la configuration plutôt que sur l'intention du produit. Les petits changements semblent plus lourds qu'ils ne devraient l'être.
Au fil du temps, les connaissances en matière d'infrastructure se concentrent entre les mains de quelques personnes. Les autres évitent d'y toucher. Les facteurs Bus se multiplient. La livraison devient inégale.
De nombreuses pannes de systèmes dans le monde réel ne sont pas dues à des changements imprudents. Le plus souvent, elles résultent d'une connaissance limitée.
Un développeur apporte une modification raisonnable en fonction du contexte local. La configuration est validée. Le déploiement réussit. Et pourtant, quelque chose en aval se comporte de manière inattendue : une limite d'autorisation est dépassée, un service est reprogrammé, une ressource est recréée au lieu d'être mise à jour.
Lorsque les développeurs sont chargés de gérer les primitives d'infrastructure, ces modèles de défaillance apparaissent constamment :
Vu de l'extérieur, cela peut ressembler à de la négligence. Vu de l'intérieur, c'est généralement le résultat d'abstractions subtiles qui fuient.
Le problème plus profond est que les développeurs sont obligés de réfléchir à trop de choses à la fois. La logique des fonctionnalités, la logique de l'infrastructure, la logique de déploiement et les différences d'environnement se disputent tous l'attention. La surcharge cognitive augmente les taux d'erreur. C'est humain, pas technique.
C'est pourquoi les équipes réagissent souvent aux incidents en ajoutant davantage de règles, de révisions ou de processus plutôt qu'en s'attaquant au problème sous-jacent.
Certaines préoccupations liées à l'infrastructure semblent désormais dépassées pour les équipes d'application :
Ces tâches persistent principalement par habitude. Les plateformes modernes peuvent les gérer automatiquement, avec des garde-fous plutôt que des choix. Un processus « ennuyeux » est un bon processus : prévisible, reproductible et sans incident.
Supprimer le fardeau de l'infrastructure ne signifie pas ignorer l'infrastructure. Cela signifie transférer la responsabilité.
Les développeurs doivent être responsables :
La plateforme doit posséder :
Lorsque le bruit lié à l'infrastructure est réduit, la planification change. Les équipes évaluent les fonctionnalités plutôt que les risques liés au déploiement. Les versions deviennent plus petites et plus fréquentes.
Upsun élimine la charge infrastructurelle pour les développeurs d'applications. Au lieu de gérer l'