Devops, qualité, sécurité et performance

 

Qu’est-ce qu’une démarche DevOps

Le terme DevOps vient de l’association des termes anglais « development and operations » pour exprimer un rapprochement entre les équipes de développement (dev) et d’exploitation (ops). Cette démarche a pour objectif de faire travailler de concert ces deux équipes historiquement assez éloignées dans le processus de construction d’un produit.

Ainsi les pratiques, outils, contraintes et attentes des équipes de développement sont prises en compte et se diffusent au sein de l’équipe d’exploitation et vice versa.

La volonté principale de la mise en place d’une démarche DevOps est de pourvoir à deux situations courantes désormais plus acceptables dans un contexte d’évolution perpétuelle et de demande de réactivité, d’efficience et de performance. La première est souvent l’inadaptation d’un livrable pourtant testé et développé rapidement aux besoins d’exploitation en production ; il peut s’agir de problèmes liés à la sécurité ou l’absence de logs clairs. La seconde, tout aussi handicapante, provient d’un manque d’environnement bien défini pour les phases de recette, ou la simple indisponibilité des équipes de livraison, qui tend donc à fortement ralentir le processus.

La mise en place d’une démarche DevOps déclenche une réflexion sur l’ensemble des étapes nécessaires pour construire le plus rapidement possible un livrable de qualité, sécurisé, performant, et en phase avec l’environnement client.

DevOps et 4DConcept

Chez 4DConcept, les architectes sont immergés dans les équipes développement et exploitation. Comprenant le langage de chacun, ils aident à la communication, à la prise en compte des besoins et contraintes de chaque équipe, à la formation et la diffusion des nouveaux outils.

La démarche DevOps se décline notamment sur :

  • La construction des livrables
  • Les environnements dynamiques
  • L’infrastructure as code

Pipeline de build et de déploiement DevOps

Le processus de livraison mis en place par 4D Concept permet d’automatiser les tests. Il permet non seulement d’assurer la bonne exécution des contrôles liés à la qualité du code, mais également tous les points liés à la sécurité pour proposer un livrable correctement testé.

Ces chaines de livraison se basent sur les librairies communes spécifiques à 4D Concept. Chaque nouveau projet peut ainsi intégrer rapidement une ou plusieurs pipelines de livraison en assemblant des briques préexistantes. L’utilisation de ces briques communes permet également de pousser des exigences de qualité ou d’intégrer des étapes supplémentaires pour améliorer en continu nos processus de build, ce qui est un élément fondamental de la démarche DevOps.

La mise en place de seuils minimaux requis sur les indicateurs de test permet d’augmenter la qualité des livrables au fil des mois et de s’assurer d’un renforcement des pratiques dans les équipes de développement.

Docker et environnements dynamiques

Docker est une technologie qui permet de packager l’ensemble des composants nécessaires à l’exécution d’une application ou d’un produit sous forme de conteneurs.

Chaque modification du code source donne naissance à une une version « conteneurisée » de l’application. Ainsi les équipes d’exploitation peuvent déployer en continu une version de l’application correspondante.

Cet environnement peut facilement être répliqué en réutilisant les mêmes conteneurs que ce soit sur un poste de développeur, d’un récepteur ou d’un environnement pour une démonstration client, offrant ainsi plus de rapidité et de souplesse dans les divers cas de déploiements.

Cela autorise le déploiement de plusieurs environnements d’intégration continue cloisonnés au sein d’une même machine. Ces environnements volatiles, très faciles à créer et à détruire, permettent d’optimiser les ressources et de fournir en un temps record un environnement complet. Par exemple, ceci peut être très utile pour fournir un environnement fonctionnel à l’équipe de recette ou pour donner, en avance de phase, un environnement de démonstration d’une fonctionnalité attendue.

En intégrant cette approche au pipeline de build, 4D Concept assure toutes les tâches de qualification, de création d’environnement de test, puis la destruction de manière totalement automatisée. Nous assurons ainsi des livrables sûrs, qualifiés, sans régression et sécurisés à nos clients, le tout dans un minimum de temps.

Infrastructure as code : IaC

L’IaC consiste à traiter l’ensemble de la définition et la maintenance de l’infrastructure sous forme de code source. Cela revient à scripter l’ensemble des étapes nécessaires au déploiement, à la mise à jour et au maintien en condition opérationnelle des environnements.

Différentes technologies (Terraform, Packer, Ansible) sont utilisées en fonction de l’environnement cible mais certaines briques sont communes et maintenues pour l’ensemble.

L’adoption de l’IaC amène par extension des pratiques précédemment propres au développement logiciel dans les équipes d’exploitation, notamment :

  • L’utilisation d’un gestionnaire de version de sources : chaque fichier source est stocké dans un outil qui enregistre chaque modification.
  • La revue par les pairs : chaque modification de code proposée par un membre de l’équipe est revue, questionnée et potentiellement annotée par les autres membres de l’équipe.
  • Les tests unitaires : le code est accompagné d’un test, c’est-à-dire un autre code rejouable qui permet de valider le fonctionnement attendu. Cette pratique peut être systématisée grâce à des outils intégrés à la technologie utilisée (ex : Molecule pour Ansible). Elle permet de s’assurer que le code répond bien aux attentes mais fournit une documentation et un filet de sécurité de non-régression pour les prochaines évolutions de ce même code.

En mettant en place cette méthode de travail, 4D concept améliore toujours ses standards de qualités.

Premièrement, le code sert de documentation sur les éléments de l’infrastructure. Le passage de connaissance se trouve facilité et chacun en lisant le code peut avoir une vision exhaustive des éléments déployés, garantissant une bonne traçabilité des travaux effectués.

Deuxièmement, le code est variabilisé pour pouvoir être utilisé dans plusieurs contextes ou sur plusieurs projets différents. Cela permet de monter rapidement une nouvelle infrastructure et de déployer des correctifs sur l’ensemble des environnements utilisant cette base de code.

Troisièmement, comme le code est revu, testé et que tout passe par celui-ci, il y a moins de place pour une erreur humaine. Chaque déploiement est uniformisé quelle que soit la personne en charge de lancer les scripts.

Les modifications sur les scripts étant versionnées, il est possible d’auditer chaque changement effectué. C’est un apport important notamment dans le cadre des audits de sécurité : être capable de retracer qui a fait quoi et dans quel but sur une infrastructure.

Les Bénéfices de DevOps ?

L’ensemble de ces pratiques liées à la démarche DevOps au sein de 4D Concept amène de nombreux bénéfices particulièrement sur la qualité des livrables, la performance tant des produits que des équipes, et la montée en sécurité des solutions.

La qualité des livrables

La qualité des livrables est le premier élément fortement amélioré par la mise en place d’une démarche DevOps. Les processus de build et de livraison rendant obligatoires et automatiques tous les tests et remontant constamment un grand nombre de KPI, il n’y a presque plus de place pour l’erreur humaine. Analyse statistique, non-régression, qualité du code, sont par ailleurs autant de critères sur lesquels une politique de durcissement des seuils minimaux permet une très rapide montée en qualité globale.

La performance

En automatisant un grand nombre d’actions récurrentes et sans grande valeur ajoutée, les équipes peuvent mettre cette disponibilité à contribution pour des travaux liés à l’amélioration des produits, des process, ou des tests eux-mêmes. Ainsi, chaque membre de l’équipe peut se consacrer davantage au code, ou au développement de nouvelles features, plus qu’au process de build et de livraison. Enfin, la performance intrinsèque des produits est incluse dans la batterie de test en bout de chaine de production, et ici aussi, les attendus sont de plus en plus sévères pour garantir à nos utilisateurs des solutions toujours plus performantes.

La sécurité

La mise en place de DevOps et Docker dans les process de 4D Concept permet d’augmenter non seulement le niveau de sécurité des produits de manière identique à leur performance, via les tests systématiques, et aux exigences régulièrement relevées, mais aussi par la réactivité des équipes ainsi que la rapidité et la facilité de déploiement de nouveaux patchs de sécurité. De plus, Docker permet de créer des environnements iso-production pour la réalisation d’audits plus poussés ou l’exécution de pentests . Enfin, il devient de fait rapide et facile de répliquer des correctifs d’un environnement à l’autre, ce qui permet de monter plus rapidement en sécurité les environnements clients.

DevOps pour nos clients ?

La mise en place de DevOps chez 4D Concept a positivement impacté tous nos processus ; les équipes travaillent plus vite, plus efficacement et de manière plus sécurisée, certes. Mais en dépit des aspects très techniques de la démarche, les premiers à en bénéficier sont bel et bien nos clients.

Naturellement les projets en cours sont réalisés selon les meilleurs standards en matière de méthodologie de production permettant de traduire plus rapidement les expressions de besoins. En définitive, nos clients ont un accès plus direct à l’équipe développement, et influent plus directement sur l’évolution du produit.

De plus, le produit en tant que tel se trouve plus régulièrement et perpétuellement enrichi des retours d’expériences de nos clients au travers des équipes opérations, via les différents projets, garantissant à tous de bénéficier des évolutions portées par chacun.

Enfin, la montée en qualité, performance, sécurité des solutions est non seulement plus rapide, mais se fait dans un contexte de confiance technologique et méthodologique fort. La mise à disposition de nos clients de nouveaux patchs, ou fonctionnalités se réalise facilement, et sans aucun risque de régression.