DevOps

Adoptez les process de développement collaboratif

La méthode DevOps est une philosophie de travail qui s’appuie sur la méthode Agile à son maximum afin de parer aux écueils prévisibles de la gestion de projet classique. Elle vise à accélérer la production, l’optimisation et la livraison des applications et services en automatisant les tests et les déploiements et en facilitant la collaboration entre les équipes.

Dans toute organisation, la gestion de projet doit composer avec les méthodes de travail des équipes qu’elle intègre. Les enjeux et les attentes étant différents selon les équipes et leurs métiers, les ralentissements sont inévitables, au détriment de la rentabilité du projet, mais également au détriment du client final et de sa satisfaction.

Dans le cadre du développement d’applications et de services, une gestion en cascade (waterfall) du déploiement peut amener des ralentissements sur la chaîne de production, du fait d’enjeux différents entre les acteurs. Les développeurs veulent intégrer le plus de fonctionnalités possibles en un minimum de temps, afin d’assurer un time-to-market le plus court possible.

Les opérationnels, eux, recherchent stabilité, sécurité et qualité. Les tests répétés et exhaustifs ainsi que les retours vers l’équipe de développement peuvent retarder la livraison de l’application de manière significative.

Le fonctionnement de la méthode DevOps

Collaboration des équipes

Les équipes Dev et Ops ne sont plus isolées les unes des autres. Le principe même de DevOps est de mettre en place une collaboration active entre ces deux équipes, voire de les fusionner, afin de raccourcir les process de décision et de produire des livrables qualitatifs plus fréquents. Ceci permettra d’avoir une dette technique sous contrôle.

La première étape est de définir une base de valeurs communes, afin que l’intégralité des acteurs travaille vers le même objectif et dans le même esprit. Cela pourra être mis en place par un technicien « pivot » qui compilera lexique, méthodes et valeurs spécifiques à chaque équipe pour créer un background de travail commun.

Automatisation des process

La seconde étape de DevOps est de définir les piles d’outils nécessaires à la mise en place de la méthode au sein de la structure, en respectant au maximum ses normes et ses usages. Le but est de faire évoluer les applications le plus rapidement possible tout en garantissant la fiabilité et la sécurité des versions déployées. Cela passe par l’automatisation des différents processus, du développement initial jusqu’au déploiement.
Des phases de test seront alors mises en place, au fur et à mesure de l’avancement du projet. Chaque test donnera lieu à l’édition d’un rapport, consultable par tous. Ces tests sont automatisés, c’est-à-dire lancés à chaque modification apportée et continus, de la phase de code jusqu’au déploiement vers le client.

Intégration continue

L’intégration continue vise à tester chaque modification du code référent fait par le développeur afin d’en vérifier la qualité et de s’assurer qu’elle ne provoque pas de régression dans le logiciel. Le test du code, qui peut être effectué par des outils comme SonarQube, permet de revenir rapidement sur d’éventuels bugs avant la mise en test logiciel et surtout, avant sa mise en production. Chaque test est effectué dès la modification apportée et les éventuelles régressions peuvent être corrigées immédiatement.

Livraison ou déploiement continu

La livraison continue permet à la structure de développer dans un délai très court des versions logicielles testées et validées. Dans le principe de l’intégration continue, la livraison continue assure la disponibilité d’une version testée et préparée pour le déploiement à tout moment. L’application passe d’une phase de création pour être versée sur un serveur de production. Les développeurs disposent alors constamment d’une version testée et validée prête à être déployée aux utilisateurs finaux.

Une fois le process DevOps mature, il est possible de passer dans un système de déploiement continu.

À l’inverse de la livraison continue, qui permet de disposer d’une version déployable, mais qui reste soumise à une validation humaine. Le déploiement continu permet d’injecter toute modification testée et validée directement sur le serveur de vers l’utilisateur final. Cette méthode laissant la possibilité à des erreurs de se retrouver dans la version définitive, elle ne doit être implémentée que dans un environnement avec lequel les procédures de test et les pratiques de développement ont été scrupuleusement validées.

Elle permet cependant de gagner encore en rapidité de production, la validation humaine n’étant plus requise.

Monitoring

Une fois la mise à disposition du service aux utilisateurs, on passe en mode Monitoring ou Surveillance. L’usage de l’application dans la vie réelle et non plus en serveur de test peut apporter son lot de surprises. De fait, les retours de métriques, de journaux ou des utilisateurs finaux sont compilés et analysés afin de planifier les modifications à apporter au code et livrer rapidement une nouvelle version.

Amélioration Continue

DevOps fonctionne en boucle, chaque étape étant intimement liée à l’autre et influant sur elle. Ainsi, chaque modification entraîne un test qui édite un rapport qui revient au technicien. Si le test est validé, une autre étape est lancée qui est également testée. Une fois le déploiement validé, les retours clients sont communiqués à l’équipe de développement qui peut alors planifier les modifications à apporter. Et le cycle recommence.

Cette méthode DevOps permet ainsi de corriger et de livrer plus rapidement des versions techniquement stables. Les mises à jour proposées sont ainsi plus nombreuses, pour remédier aux bugs plus rapidement, mais aussi moins lourdes.