A la découverte du DevOps

A la découverte du DevOps

Au sein de la DSI, l'objectif principal de l'équipe opérationnelle (Ops) est de garantir la stabilité du système alors que l'équipe de développement (Dev) doit sans cesse le faire évoluer afin de l'adapter aux différentes contraintes métier. Ces deux équipes sont alors en conflit perpétuel vu la contradiction de leur mission. D'un côté, l'équipe Dev qui livre de nouvelles fonctionnalités générant plus de risques pour la stabilité du système et de l'autre côté l'équipe Ops qui serait enclin à refuser toute mise à jour ou à la retarder au maximum tant que le système est stable.


Les principales victimes de ce conflit deviennent les utilisateurs qui constatent avec peine la lenteur dans la mise en place, la mise à jour ou parfois l'absence des fonctionnalités demandées impactant ainsi les performances et la rentabilité des organisations.

 Conflit equipe User, Dev et Ops


Le concept de DevOps se définit par une concaténation entre les termes "développement" et "opérationnel". Ce mouvement d'idée récemment apparu dans le domaine de l'informatique d'entreprise a pour objectif d'aligner le fonctionnement des équipes de développement et de maintenance opérationnel au sein de la direction des système d'information (DSI) afin de créer de la valeur ajoutée pour l'entreprise.
Pour atteindre ces objectifs, ce mouvement s'appuie sur une série de recommandations qui peuvent être mis en pratique grâce à la chaîne d'outils DevOps. Les principales recommandations sont les suivantes:
- mettre en place de manière régulière les applications: des mises à jour successives sont plus faciles à suivre et à contrôler qu'une grosse mise à jour massive. En outre, la répétition de la procédure de mise à jour servira surtout à la fiabiliser grâce à son amélioration continue;
- commencer à tester les applications le plus tôt possible durant leur conception et de manière continue;
- tester les applications dans un environnement proche voir identique à la production: l'utilisation des techniques de virtualisation permettra aux équipes Ops de créer des environnements de test réalistes;
- mettre en place une boucle d'amélioration continue à tous les niveaux de la chaîne (Utilisateurs > Dev > Ops > Utilisateurs) afin d'améliorer chaque maillon et d'avoir des retours rapides.

Boucle amélioration continue DevOps

Le suivi de ses recommandations exige la mise en place d'une série d'outils et d'applications d'automatisation afin d'en garantir leur exécution, leur fiabilité et la collaboration des équipes autour de ces processus (chaîne d'outils de DevOps). Ces outils exécutent les principales tâches et activités du processus de DevOps:


 Outils DevOps


- Planifier: la définition, la conception et la planification des fonctionnalités à mettre en œuvre est nécessaire afin d'avoir une vue globale des différentes actions à réaliser. Il est aussi nécessaire d'avoir une interface commune pour que chaque acteur puisse donner son opinion et permettre à l'équipe de partager ses expériences. De nombreux outils de planification existent et permettent de suivre les approches agiles (SCRUM, XP) à l'aide des méthodes KABAN tel que Odoo Project, Redmine, Jira, Github Issue ou Gitlab Issue dashboard.

 Dashboard Github


- Créer: l'activité "créer" intègre les opérations de création, de modification du code source et de construction des fonctionnalités. Ces différentes opérations doivent être suivies et tracées afin de pouvoir travailler à plusieurs sur les mêmes fonctionnalités, de gérer les conflits et d'avoir un historique de l'ensemble des modifications.  Pour cette tâche, les outils de contrôle de version (VCS) permettent d'avoir un contrôle efficace de toutes les modifications. On citera en exemple Git, Github, Gitlab CE, Bazaar, Subversion ou Mercurial.

 Dépôt Github

- Vérifier: la vérification consiste en une série de tests (test d’acceptation, test de régression, analyse de sécurité et vulnérabilité, test de performance, de charge, test de résilience, test de configuration, etc...) en conformité avec les principes d'intégration continue. Leur objectif est de s'assurer que les nouvelles fonctionnalités respectent les besoins demandés et que leur mise en place pourra s'effectuer sans risque. Plusieurs outils d'intégration continue existent tels que Travis, Jenkins ou Gitlab CI.

 Integration continue Gitlab


- Emballer, Livrer et Configurer: récapitule l'ensemble des taches à effectuer après la validation des différents tests. Taches à cheval entre les départements Dev et Ops, elles permettent de gérer la livraison en continue des différentes fonctionnalités et mise à jour par l'automatisation des taches telles que la compilation du code, la gestion des paquets, les procédures de copie, arrêt, redémarrage des services ou applications, etc... Comme outils de livraison continue, il est possible de citer Gitlab CD ou Ansible.

 Livraison continue Ansible

 

- Surveiller: les taches de monitoring et d'analyse des logs permettront aux équipes de rapidement identifier un problème relatif aux mises à jour et à comprendre leurs conséquences sur les utilisateurs finaux. Elles consistent en l'analyse des performances de l'infrastructure IT, le suivi des retours d'expériences, des réactions de l'utilisateur final, le suivi des indicateurs et statistiques de la plateforme de production. Comme outils de monitoring, il est possible de citer la suite ELK (Elastic Search, Logash et Kibana), Nagios ou Netdata.

 Dashboard NetData

Les avantages apportés par les outils de devops sont nombreux, au-delà de concilier 2 équipes aux objectifs contradictoires, elles permettent l'automatisation de l'ensemble des taches de la conception à la livraison de l'application. Le gain de temps et la réduction de la charge de travail est énorme. En outre, ces outils permettent de maîtriser les contraintes de coût, de garantie, de traçabilité, de qualité et de contrôle des collaborations de l'ensemble de l'équipe.

Imprimer E-mail