Simplifier l'expérience des développeurs sur Kubernetes
L'orchestrateur open source offre aux équipes responsables de l'infrastructure et des opérations un standard afin d'automatiser le déploiement et la gestion des applications à grande échelle.
Très flexible, mais complexe, Kubernetes est une couche d’infrastructure puissante, mais il n’est pas nécessairement simple pour les développeurs de l’appréhender et d’en tirer le meilleur parti possible. Alors que les entreprises adoptent des modèles d’applications cloud natives, elles font face à une double crise de l’expérience développeurs en raison de la complexité de l’écosystème et de la formation indispensable au développement d’applications sur cette plateforme.
Les difficultés rencontrées par les développeurs
Pour être efficaces, les développeurs doivent maîtriser les concepts et les artefacts de Kubernetes, ainsi que les bonnes pratiques applicables au développement d’applications s’exécutant sur cette plateforme. Kubernetes est une solution permettant d’avoir un contrôle fin sur l’infrastructure applicative. Néanmoins, son bon usage suggère des compétences avancées sur les sujets d’infrastructure, que n’ont pas tous les développeurs. De plus, afin de faire les bons choix, les développeurs doivent appréhender un écosystème open source extrêmement dense où de nombreuses initiatives se complètent, mais également se chevauchent. Une tâche en particulier symbolise souvent le manque de productivité que peut engendrer un usage trop basique de Kubernetes. Il s’agit de la création des fichiers YAML de configuration. Le développeur doit non seulement construire le code applicatif, mais doit également “confectionner” un ensemble pour Kubernetes. Ces documents de plusieurs centaines de lignes peuvent s’avérer compliqués, répétitifs et rébarbatifs à concevoir. Ils peuvent représenter des heures consacrées à la configuration de l’infrastructure, autant de temps qui n’est pas consacré à la logique métier de l’application et à la valeur produite pour l’organisation. Cette étape illustre comment la productivité des développeurs peut être détériorée.
Tout au long du processus de développement — pour l’essentiel un cycle de programmation, d’exécution, de test, de débogage et de répétition — les développeurs doivent pouvoir itérer leur code en un clin d’œil. Ce processus itératif est appelé« boucle interne ». Ce cycle des itérations de la boucle interne doit d’être rapide, sachant qu’il consomme une large portion du temps de travail des développeurs. Or, avec Kubernetes, par défaut, il est fastidieux. Chaque modification du code source suppose non seulement une recompilation, mais également de rétablir et republier l’image de conteneur puis de redéployer les ressources de Kubernetes avant que les modifications de code puissent être testées. La productivité des développeurs en pâtit considérablement.
Voici quelques pistes pour s’affranchir de la complexité inhérente à Kubernetes et reconquérir sa productivité.
- Savoir (bien) s’équiper. Les entreprises doivent prêter une attention particulière à l’outillage fourni aux équipes de développement. Si, au-delà des compétences, leurs outils créent plus de complexité qu’ils n’en ont déjà, leur désengagement, voire leur départ, est à prévoir.
- Les accélérateurs au service de l’amorçage. La plateforme de développement retenue doit permettre aux développeurs de disposer d’accélérateurs d’applications en guise de composants d’amorçage. Ceci leur permet de gagner du temps sur le bootstrappions de leur nouvelle application. Cela permet en parallèle aux architectes par la codification de garde-fous de définir des chartes de bonnes pratiques, et de garantir systématiquement le respect des obligations de conformité entre équipes.
- L’importance d’un fichier de déploiement déclaratif et centré sur l’applicatif. Les développeurs pour coder efficacement et rapidement doivent trouver dans leur plateforme applicative les fonctionnalités leur permettant de s’aligner avec les opérations afin de faire passer le code source en production, le tout sans friction. Le développeur avec un fichier de déploiement minimaliste (maximum 10 lignes dans son format par défaut) doit pouvoir orchestrer les activités techniques permettant d’obtenir une URL d’accès à son application, afin de pouvoir la tester et la partager avec le métier.
- Chacun ses responsabilités. Pour limiter les frictions dans l’expérience des développeurs, il faut instaurer une séparation des responsabilités entre développeurs et opérateurs. Les opérateurs d’une entreprise configurent les workflows de la chaîne d’approvisionnement logicielle au moyen d’un ensemble d’outils assurant une cohérence entre les environnements de développement et de production, sans faire obstacle aux développeurs. Une plateforme applicative moderne doit pouvoir faire évoluer sa chaîne d’approvisionnement logicielle sans impliquer le développeur.
- Du diagnostic au débogage. Pour simplifier la vie des développeurs, ils doivent bénéficier d’outils de diagnostic pour analyser en détail les caractéristiques d’exécution des applications, comme la consommation de ressources ou les modèles de trafic entrant, mais aussi modifier certains paramètres tels que les niveaux de journalisation ou propriétés d’environnement pour le dépannage des applications en cours d’exécution.
- Fluidifier la relation entre les développeurs et opérateurs. La fluidité du passage de relais entre développeurs et opérateurs est essentielle pour garantir un déploiement rapide du code en production. En fait, selon Gartner (étude « Reduce Friction to Boost Software Engineering Team Productivity » réalisée par son équipe de recherche en applications et ingénierie logicielle, en date du 25 mai 2021), les deux premières raisons qui entravent le développement sont à chercher dans le passage de témoin entre rôles ou équipes (37%) et le manque de compétences techniques requises (27%).
Pour les développeurs qui travaillent avec Kubernetes, il est crucial de se doter d’une interface permettant de simplifier son usage quotidien et donc d’améliorer son efficacité. Pour les organisations qui les emploient, il est impératif d’offrir un environnement de travail qui permette une expérience fluide et appréciable, susceptible d’aider chacun à apporter de la valeur aux applications développées.