Le DevOps est la combinaison des termes « Dev » et « Ops ».
« Dev », de l’anglais « development », désigne les équipes de développement d’une application (au sein d’une entreprise), tandis que « Ops », de l’anglais « operations », désigne les équipes chargées du déploiement et de la gestion de cette même application.
Le DevOps est un concept relativement compliqué, étant à la fois une méthode de travail, un ensemble de bonnes pratiques et d’outils, ainsi qu’un état d’esprit. Le tout au service d’un objectif : rendre la création d’applications informatiques la plus efficace possible.
Nous allons donc voir dans cet article les grands aspects du DevOps.
Aux origines du DevOps : l’approche Agile
L’une des grandes sources d’inspiration pour le DevOps est l’approche Agile, apparue pendant les années 2000.
Le processus Agile, une approche adaptée au développement informatique
Le document fondateur de la méthodologie Agile est le « Agile manifesto », écrit par des experts du développement informatique et listant douze principes Agile. Cette nouvelle approche du travail a été motivée par le constat que les approches utilisées auparavant en entreprise étaient mal adaptées au développement informatique.
Ces douze principes, très généraux, voire abstraits, dessinent les contours d’un état d’esprit adapté au développement de projet informatique. De ces principes ont découlé nombre de bonnes pratiques, de méthodes de travail et d’outils, avec de nombreuses variantes et adaptations ; c’est justement le cas du DevOps.
Le projet Agile a fortement influencé la manière dont travaillent les développeurs aujourd’hui, aussi bien dans les start-ups que dans les grands groupes.
Le DevOps, une approche plus globale
Cependant, l’approche Agile, bien qu’étant une source d’inspiration majeure pour le développement d’applications, n’est pas la seule. Cet article décrit en détail les trois mouvements à l’origine du DevOps.
Mais alors, si Agile existait déjà, pourquoi le DevOps ?
L’approche Agile s’intéresse spécifiquement au travail des développeurs et à leur collaboration avec le client (ou les équipes business), mais traite peu la partie opérationnelle, en aval du travail réalisé par l’équipe de développement. D’où l’apparition du DevOps, qui se veut plus global.
Le travail d’équipe au centre du DevOps
Traditionnellement, les équipes « Dev » et « Ops » travaillaient en silo, ce qui créait beaucoup de frictions. Une application informatique doit être mise à jour en permanence, soit pour corriger des bugs, soit pour ajouter de nouvelles fonctionnalités. Il y a donc beaucoup d’échanges entre les équipes « Dev » et « Ops ».
Or, si ces équipes travaillent séparément, elles auront des process, outils, standards… propres, rendant la collaboration complexe. Partant de ce constat, le DevOps s’appuie sur une collaboration étroite entre ces deux équipes (jusqu’à les voir fusionner dans certaines entreprises).
Mais le DevOps ne s’arrête pas là, bien sûr. Notamment, l’aspect collaboratif est valable pour toutes les parties prenantes du projet, pas seulement pour les équipes « Dev » et « Ops ».
Pour formaliser plus généralement, le concept de DevOps s’articule autour de différents niveaux d’abstraction :
- Le DevOps est d’abord un ensemble de principes et valeurs – une philosophie du code en quelque sorte – hérité de la méthode Agile.
- Ensuite, le DevOps est une méthode et une organisation du travail. On retrouve souvent, par exemple, les méthodologies Scrum ou Kanban pour appliquer le DevOps sur le terrain.
- Enfin, le DevOps est un ensemble de bonnes pratiques souvent mises en œuvre via l’utilisation d’outils dédiés (cependant, utiliser ces outils n’est pas synonyme de DevOps s’ils sont mal utilisés).
Les bonnes pratiques du DevOps
Plus concrètement, intéressons-nous à quelques bonnes pratiques clés en DevOps.
CI/CD, intégration et déploiement continu
« CI/CD », de l’anglais « continuous integration/continuous deployment », est essentiel en DevOps.
La partie CI, l’intégration continue, désigne la centralisation et l’évaluation systématique du code produit par les développeurs. Cela passe notamment par des outils comme Git, où chaque développeur envoie son code dans un répertoire commun pour qu’il soit validé par son équipe. Des tests automatiques sont aussi mis en place pour vérifier que le code se comporte correctement.
La partie « CD », le déploiement continu, correspond à l’étape suivante et consiste à déployer le code dès qu’il est prêt (donc testé et validé), via des pipelines automatisés.
Infrastructure as a code
Une autre bonne pratique consiste à définir toutes les caractéristiques de l’environnement dans lequel votre application sera déployée via des scripts.
Ainsi, la mise en route d’un nouveau serveur demande juste l’exécution d’un ou plusieurs script(s). Aucune configuration manuelle n’est nécessaire (hormis lors de la création de ces scripts).
Surveillance et journalisation
Un aspect essentiel du DevOps est le suivi des opérations. Cela passe par deux points :
- la surveillance (ou monitoring), qui consiste à surveiller l’état des serveurs et le niveau de consommation des ressources (CPU, mémoire, réseau…) ;
- la journalisation (ou logging), qui consiste à enregistrer chaque événement de votre application (l’adresse IP des requêtes entrantes, le contenu de ces requêtes…).
Toutes ces bonnes pratiques visent en réalité l’automatisation complète de chaque processus, aussitôt que ce dernier est mis en place.
Voilà donc une vue globale du DevOps. Bien évidemment, les technologies évoluent. Par conséquent, de nouvelles problématiques émergent en permanence et d’autres méthodes de travail apparaissent pour venir y répondre.
C’est notamment le cas du DataOps, s’inspirant du DevOps et répondant à des problématiques propres à l’analyse de données et au big data.