Comment le développement et l’opérationnel peuvent se rapprocher
Par Franck Liso - Senior Manager VMware Tanzu Labs
La crise du Covid-19 génère de nouveaux problèmes et entraîne de nombreux changements pour les équipes IT. Les plus immédiats sont de garantir la sécurité des employés et leurs informations, tout en leur donnant les moyens d’être connectés et productifs. En permettant le travail à distance du plus grand nombre sur un réseau privé virtuel (VPN) conçu pour supporter une infime partie des employés en temps normal, par exemple.
Il y a également tous les défis liés à la satisfaction numérique des clients à une échelle sans précédent. Les supermarchés en ligne, par exemple, doivent faire face à une croissance exponentielle des commandes. Jamais une vue en temps réel de l’inventaire n’a jamais été aussi utile pour soutenir une consommation faite d’achats en ligne et de récupération du panier à l’extérieur du point de vente.
Enfin, il faut assurer un déploiement rapide des nouvelles solutions numériques pour aider à traverser la crise elle-même. Les services de santé ont besoin d’une vue en temps réel des occupations des services de réanimation et du nombre de respirateurs disponibles. Les gouvernements utilisant des applications de pistage de contact doivent savoir quand et où mettre en place ou lever des mesures de confinement en fonction des cas avérés. Les institutions financières doivent aider leurs clients, grand public comme professionnel, durant la crise économique.
Adapter les systèmes existants est difficile. Adapter les systèmes existants tout en introduisant des applications à l’échelle nationale dès le premier jour peut sembler impossible. Avoir des technologies et bonnes pratiques liées au Cloud peut aider. Hélas, beaucoup d’organismes et de sociétés ne les ont pas encore.
Alors, que faire durant cette crise ? Après tout, vous ne pouvez pas changer votre architecture d’un claquement de doigts. Mais comme nous le savons, l’Homme est capable de s’adapter surtout en temps de crise. Pour accélérer la production et s’adapter au besoin, les développeurs comme les responsables opérationnels doivent collaborer de manière plus étroite et plus efficace, dès maintenant, mais aussi à l’avenir.
Les obstacles fréquents à une collaboration plus étroite
Avant de voir comment les développeurs et les équipes opérationnelles peuvent s’entraider, nous devons comprendre quels sont les multiples freins rencontrés.
Des buts différents. Les équipes opérationnelles ont l’habitude de réfléchir en termes de coût et de stabilité. Garantir la disponibilité et réduire les coûts d’usage sont leurs deux buts. Ce qui ne s’acclimate pas très bien aux changements. Or changer d’échelle ou ajouter de nouvelles applications et fonctionnalités introduit des changements dans l’environnement. Pendant ce temps, les développeurs sont plus en phase avec les buts commerciaux, et utilisent la rapidité de mise sur le marché comme unité de mesure. En d’autres termes, ils ne vivent que pour le changement et la stabilité n’est qu’une préoccupation secondaire ou pire, « le job d’un autre ».
Des environnements de production et de développement différents. Quand des infrastructures et des outils différents sont utilisés pour le développement et la production, vous vous heurtez à une incompréhension entre les deux : « Ça marchait en dev, c’est le problème de la prod’ maintenant » est le refrain classique issu de cette dynamique. Cela ralentit la mise en production, car placés dans un nouvel environnement de nouveaux problèmes apparaissent. Cela ralentit également la résolution des incidents, allongeant le MTTR (mean time to resolution).
Astuces pour que les développeurs aident les responsables opérationnels
Les équipes opérationnelles sont en charge de la disponibilité et, historiquement, passent énormément de temps à s’assurer que l’infrastructure suit. Dans un monde nativement dans le cloud, cela change complètement. On suppose alors que les infrastructures ne sont pas fiables. Mais les équipes opérationnelles ne peuvent pas faire grand-chose au code lui-même. Les développeurs peuvent cependant rendre leur code plus stable et plus évolutif :
- Garantir le « monitoring » du code. Documenter votre code dès le départ va vous aider à long terme. Spring a rendu cette tâche plus facile avec Spring Boot Actuators et Micrometer. Plus vite vous identifiez les raisons des problèmes, meilleure sera la disponibilité de votre application. En utilisant des outils communs pour la supervision et la visibilité peut également aider à la compréhension entre le dev et la prod.
- S’assurer que l’application peut être relancée. S’il faut 15 étapes à suivre dans un ordre bien précis pour démarrer votre application, cela va compliquer son déploiement et sa maintenance. S’il faut 30 minutes pour démarrer toutes les couches logiques dans votre application, la déplacer vers un environnement sain en cas de problème sera douloureux. Plus votre application sera simple et rapide à redémarrer, mieux elle résistera en cas de problème. C’est l’idée fondamentale derrière l’utilisation d’un système comme Kubernetes qui automatise le démarrage et le redémarrage en boucle. Ce facteur de redémarrage rapide permet aux équipes opérationnelles de tirer parti d’une automatisation puissante.
- Introduire des processus indépendants de l’état dès que possible. C’est l’un des principes issus des 12 facteurs classiques, mais cela fait une grande différence en termes d’échelle. Enregistrer l’état dans une application génère toutes sortes de difficultés dans la gestion des données. Les données dans des systèmes distribués posent un problème ardu. Plus vous pouvez faire de choses indépendamment de l’état, plus vous pourrez isoler la couche de données et sa complexité. (Note : à long terme, vous voudrez vous plonger dans le DDD, Domain driven design, pour trier cette couche de données).
En pensant à rendre leurs codes plus faciles pour la maintenance et le déploiement, les développeurs aident les équipes opérationnelles à tenir leurs objectifs. Cela comble en partie le fossé qui se crée entre ces deux groupes. Mais cela aide également à améliorer l’expérience client, en particulier en cette période de crise où ceux-ci dépendent plus des services numériques.
Astuces pour que les responsables opérationnels aident les développeurs
Si les développeurs peuvent aider les équipes opérationnelles en les soulageant de certaines de leurs préoccupations, il en va de même de l’autre côté. Mais les besoins des développeurs ne sont pas aussi faciles à caractériser que garantir la disponibilité :
- Accélérer la mise en production. Les développeurs peuvent être débordés par les problèmes qu’ils essaient de résoudre et les outils qu’ils mettent en œuvre. Mais personne n’aime attendre. Attendre pour un environnement de développement, attendre pour une fenêtre de changement, attendre un certain nombre de tests pour mettre le code en production. Essayez de trouver des méthodes pour réduire le temps d’attente des développeurs.
- Prendre l’habitude d’écouter. Les équipes en charge de l’infrastructure passent la majorité de leur temps à s’occuper… de l’infrastructure. Les équipes opérationnelles peuvent mieux comprendre les besoins des développeurs en passant plus de temps avec eux. Adapter les horaires de bureau, s’inviter aux réunions de développeurs, ou demander à ces derniers leur retour sont des modifications faciles et rapides pour engager la conversation. Si les équipes opérationnelles passent 10 % de leur temps avec les développeurs, essayez de monter à 30 %. Si c’est 30 %, passez à 50 %.
- Trouver des moyens de dire oui. Demandez à n’importe quel parent d’un jeune enfant et vous apprendrez que « non » est l’un des mots les plus faciles à dire. C’est quasiment instinctif chez l’être humain, basé sur son besoin d’affronter le chaos, la complexité et les menaces face à ses besoins de base. Et cela creuse des fossés toujours plus grands. Quand une demande de développeur arrive, au lieu de lui attribuer automatiquement un Non, prenez le temps de regarder si vous pouvez répondre Oui. Essayer de comprendre pourquoi quelque chose vous est demandé est une bonne façon de trouver des moyens de dire « oui ».
En conclusion, pour les entreprises en train de faire leur migration vers le Cloud, la pandémie a démontré les bénéfices des efforts qu’ils ont mis en œuvre. Que ce soit pour lancer une nouvelle application en quelques jours, ou multiplier par 10 la charge sur les applications sans avoir un seul problème, les outils, bonnes pratiques mis en place avec le passage au cloud montrent leurs avantages. Cela ne peut pas se faire sur un coup de tête, mais voici quelques petits efforts que les individus peuvent réaliser pour faciliter le déploiement et la maintenance tout en accélérant la mise sur le marché. Les défis posés par le Covid-19 agissent comme un catalyseur pour ce qui est nécessaire et le sera encore plus pour le futur : une coopération plus grande entre les développeurs et les équipes opérationnelles.