DevOps : 10 catégories d’outils approuvés par les entreprises
Les solutions comportant une étiquette DevOps sont partout, et la liste des options s'allonge chaque jour. Toutefois, les meilleurs outils DevOps sont déjà bien connus des professionnels de l’IT. Cet article liste 10 outils déjà passés au crible et validés par le secteur.
Depuis la formulation du concept DevOps par le Phoenix Project, les outils ont beaucoup mûri, et les professionnels de l’IT ont atteint un consensus et se sont entendus sur un point : les 10 catégories d’outils véritablement essentielles dans la mise en place d’un processus DevOps.
Dans certaines de ces 10 grandes catégories, un seul outil est utilisé, comme Docker pour les containers d'application ou Jenkins pour CI/CD (Continuous Integration / Continuous Delivery). Dans d'autres, certains sont considérés comme interchangeables par les spécialistes DevOps, et sont choisis en fonction des préférences personnelles et des besoins spécifiques.
-
Repository de code source
La première étape d'un processus DevOps est le référentiel de code source et le contrôle de versions où les développeurs posent, vérifient et gèrent le code. La plupart des outils de déploiement et d’intégration continue réagissent automatiquement aux commits de code dans de tels référentiels. Pour les spécialistes du genre, un processus DevOps qui ne commence pas par un contrôle du code source ne mène nulle part.
"Si vous ne pouvez pas codifier ce que vous faites, inutile de le faire", explique Brad Linder, évangéliste de DevOps et données chez Dish Technologies, la branche ingénierie de Dish Network à Englewood, Colo.
Git et le service SaaS, GitHub, sont les outils de dépôt de code source les plus utilisés. GitLab, un autre gestionnaire de référentiel Git, propose également un paquet d'outils de pipeline CI/CD et un registre Docker pour les containers.
-
Dépôt d'artefacts
Le code source est la matière première d’une application. Ce qui ressort de ce code est un artefact. Les artéfacts doivent également être gérés et leurs versions contrôlées. Pour cela, la plupart des équipes DevOps préfèrent JFrog Artifactory ou Nexus Repository.
« Pour la rapidité des releases, Il est important que les choses soient simples », assure Gary McKay, Scrum Master chez Somos, un organisme à but non lucratif qui gère les dossiers de numéros de téléphone gratuits. « Si j'ai 70 à 80 builds par jour, il est facile d'aller chez Artifactory et d'en extraire une. Comparer les builds est plus facile, et ça vous donne de la flexibilité.
-
CI/CD
Il existe une pléthore d'outils de CI/CD sur le marché qui automatisent les tests des modifications de code source et assemblent les applications à partir d'artefacts. Pour la plupart des spécialistes DevOps, cependant, Jenkins reste la norme. Jenkins n'est pas connu pour sa facilité d’administration, et beaucoup d'utilisateurs admettent avoir une relation « je t’aime, moi non plus » avec lui, surtout dans les versions plus anciennes.
« Jenkins est comme une paire de vieilles chaussures confortables dont on ne peut pas se débarrasser, et elle ne donne une ampoule qu’à un seul endroit », ironise Brad Linder. « Son écosystème est très vaste. Les nouveaux modèles sont compliqués, mais ça fonctionne. »
Aucun autre outil pour DevOps ne peut égaler Jenkins, soutient à son tour Richard Fong, directeur de l'ingénierie logicielle chez Mitchell International, une société spécialisée dans les logiciels pour l’assurance automobile. Il a mis en place l'un des premiers environnements Jenkins en production chez Yahoo en 2003, et utilise toujours l'outil actuellement.
-
Containers
Les containers font fureur chez les entreprises qui veulent mettre en place DevOps. Ils font la promesse de la portabilité du code applicatif, depuis les portables des développeurs vers les environnements de développement et de test et, théoriquement, jusqu' à la production. Ils constituent également un moyen efficace pour déployer des micro-services. Les containers peuvent être utilisés pour déployer rapidement mais également de façon sûre des applications.
« Sans containers, vous mettez en place des serveurs pour effectuer ce travail et vous configurez des load balancers pour acheminer un pourcentage du trafic », explique de son côté Andy Domeier, directeur des opérations chez SPS Commerce, spécialisée dans les communications pour la supply chain. « Les containers facilitent la mise en production grâce à la portabilité entre environnements. »
Ici, le choix d'outils est en grande partie évident : Docker domine le segment des containers depuis des années déjà. Les équipes DevOps apprécient aussi les outils de la société Docker comme Docker Compose, qui définit et exécute des applications Docker multi-container. Selon eux, cela facilite la productivité des développeurs car ils n'ont pas à comprendre toutes les spécificités de l'environnement du container avant d'écrire le code.
-
Orchestration de containers
Les containers ont besoin d'un outil pour les contrôler et automatiser leur déploiement et leur redéploiement. Ici, Kubernetes est apparu comme le standard de facto pour l'orchestration de containers, et ce, bien que la plupart des entreprises ne déploient pas encore de containers en production. Elles n'ont également pas exclu le logiciel Docker Enterprise Edition de Docker comme alternative.
« Certains pensent que Docker [Enterprise Edition] n'est pas aussi avancé [que Kubernetes], mais Docker a beaucoup travaillé ces 18 derniers mois en matière de fonctions de découverte automatique, d'équilibrage de charge et d'autoscaling », commente Richard Fong. « A notre échelle, ça fonctionne avec Docker. »
-
Infrastructure-as-code
Exécuter des clusters de containers à l'échelle nécessite également un moyen d'automatiser l'infrastructure sous-jacente. Ici, les équipes IT se tournent vers des outils d'infrastructure-as-code. Les plus cités sont Terraform de HashiCorp et Ansible de Red Hat.
Ansible est mieux connu pour ses fonctionnalités de gestion de configuration, mais les entreprises l'utilisent également pour le provisioning d’infrastructures.
« Ansible est flexible, une sorte de couteau suisse », lance Thomas Davis, directeur de la sécurité chez ServiceMaster Global Holdings. ServiceMaster, qui possède des marques grand public telles que Terminix, Merry Maids, Furniture Medic et ServiceMaster Clean and Restore, utilise Ansible pour suivre les modifications des adresses IP dans son environnement AWS, lors des mises à jour des applications de l'entreprise.
Ansible peut également créer des versions de templates d'images serveur, les mettre à jour à la volée et en contrôler les versions, ajoute Richard Fong.
-
Gestion de la configuration
Une fois les serveurs provisionnés, l’équipe DevOps doit configurer l'infrastructure pour exécuter l'application. Dans ce domaine, les professionnels ont un large choix. Ils ont d’ailleurs tendance à utiliser un mixe d'outils, comme Puppet, Chef, Ansible, SaltStack, parmi tant d’autres.
« Avec Ansible, on peut créer des templates d'infrastructure, mais ce n'est pas son vrai rôle », affirme Gary McKay. « Son vrai rôle vient après que vous ayez créé un environnement avec Terraform, et que vous utilisiez Ansible pour configurer un serveur web pour exécuter JBoss et la gateway API de WSO2, par exemple. »
-
Monitoring de logs
Certains outils de monitoring DevOps compilent logs et métriques en une seule interface, mais la plupart des équipes DevOps utilisent encore des outils distincts. La stack ELK (Elasticsearch, Logstash et Kibana) est ici souvent utilisée, car cela est gratuit – même s’il nécessite beaucoup de main d'œuvre et d'expertise. Les outils propriétaires, comme Splunk, valent donc l'investissement pour certaines entreprises.
« Nous sommes prêts à payer pour avoir Splunk », illustre Kevin Burnett, responsable DevOps chez Rosetta Stone, une société spécialisée dans les logiciels éducatifs.
-
Monitoring et indicateurs
Certains spécialistes DevOps considèrent que le monitoring d’indicateurs et d’événements ne sont pas aussi essentiels que le monitoring des logs. Toutefois, la plupart d’entre eux en possède. Le monitoring active la boucle d’interaction propre à DevOps.
« Pour vous distinguer tant qu'ingénieur DevOps, il faut améliorer l'information transmise à l'équipe produit », déclare Nathaniel Felsen, ingénieur DevOps chez Medium.com, la plateforme de blogs. Donner des indicateurs sur la performance des applications en production permet à tous les membres de l'équipe DevOps d'améliorer leur travail.
Certains se tournent vers des outils connus tels qu'AppDynamics App IQ et New Relic pour rapprocher les équipes de développement et les opérationnels et mieux répondre aux incidents DevOps.
L’application Open Source Prometheus est quant à elle un favori pour monitorer les clusters Kubernetes. Les outils de surveillance d’indicateurs jettent également les bases de l’AIOps, une approche de gestion automatisée de l'infrastructure qui repose sur le Machine Learning et des techniques d'intelligence artificielle.
-
ChatOps
Les équipes DevOps doivent pouvoir communiquer efficacement pour résoudre les problèmes de production. Ici, les outils ChatOps de Slack et HipChat d'Atlassian sont les plus populaires. Slack a une version gratuite, tandis que HipChat offre des fonctionnalités d'audit d'entreprise et des intégrations avec les systèmes de ticketing et de gestion de projets tels que Jira d'Atlassian. Les ChatOps se reposent sur des chatbots qui envoient des alertes aux utilisateurs, et exécutent les modifications à effectuer à partir des commandes émises dans l'interface de chat.
Pour les très grandes entreprises, les canaux ChatOps ne sont pas suffisants - elles doivent également organiser et acheminer des alertes de performance entre plusieurs équipes, parfois réparties dans plusieurs pays. PagerDuty est par exemple devenu un complément des ChatOps.
"La culture DevOps conduit à donner aux ingénieurs une plus grande responsabilité. Mais lorsque ceux qui développent les applications doivent également les maintenir, cela augmente le nombre de personnes disponibles pour répondre aux besoins", explique encore Andy Domeier (SPS).