L’approche DevOps, bien plus qu’un retour de hype*

Approche DevOps

Pour faire court, le DevOps vise à réunir les équipes chargées du développement des applications (les Dev) et les équipes chargées de l’exploitation des systèmes (les Ops). Pour les plus avertis, l’approche DevOps, voire la culture sous-jacente, s’inscrit dans le prolongement des méthodes de gestion de projet Agile et Scrum.

Le DevOps, outre réunir des équipes a priori guidées par des missions et des objectifs indépendants, est en quelques sortes une méthodologie combinant le développement (logiciel, applicatif), les opérations informatiques, et l’assurance qualité.

Ce qui en fait aujourd’hui une approche figeant l’attention des éditeurs informatiques*, tient à la rationalisation des processus de développement applicatifs, par l’intégration de procédures automatisées. La combinaison de plusieurs étapes, souvent en un seul processus (automatisé donc), a pour finalité l’accélération des cycles de développement applicatif et de mise en production.

Avec les logiques de Cloud, le DevOps permet grâce à l’automatisation de réduire les temps de livraison des produits et des services avec un impact significatif sur la transformation de l’activité économique des entreprises.

 

Les outils généralement utilisés dans des projets DevOps

Une des raisons qui explique le passage de certaines entreprises à une approche DevOps tient à la contrainte d’amélioration constante de l’expérience utilisateur. Pour livrer en continu des interfaces web ou applicatives dotées de fonctionnalités adaptées aux besoins des utilisateurs, il devient nécessaire de développer et tester de nombreux modèles alternatifs. Cet impératif oblige de fait l’accélération dans les processus de développement applicatif ou logiciel.

Pour y répondre et accompagner les équipes dans la réalisation de leurs projets de développement, il existe des outils qui aujourd’hui véhiculent à eux seuls la logique de l’approche DevOps.

Circle Ci et GitLab, sont des outils visant à accélérer les cycles de développements applicatifs. Plus précisément, ils offrent la possibilité d’éditer différentes versions d’un code applicatif et de pouvoir repartir d’une étape de développement antérieure à la dernière version d’un projet. Ainsi il devient plus aisé de réorienter un projet de développement suite à un nouvel axe d’amélioration fonctionnelle qui aurait été identifié lors d’un test utilisateur par exemple.

Aussi, une solution de versionning comme GitLab va permettre de faire du suivi de bugs et offrir aux équipes de développement une vision claire des points de vigilance et d’amélioration du code. C’est également et surtout un outil d’intégration et de déploiement continu permettant une livraison régulière dans le cycle de développement des applications. Grâce à ce type de fonctionnalité il est possible de réaliser des mises à jour majeures sur une application comptant des milliers d’utilisateurs, en quasi toute transparence.

 

Gitlab version 13.0 > Lire notre article

 

En bout de chaîne d’un développement applicatif se pose la question de la livraison du service, c’est-à-dire de sa mise en production.

Des outils propres à la conteneurisation comme l’orchestrateur de conteneur Kubernetes et les images Docker permettent à l’issue d’un processus de développement, d’embarquer une application dans un conteneur à travers les réseaux, le stockage et les serveurs d’une infrastructure. Ainsi, la portabilité d’une application d’un environnement de production à un autre sera plus directe et par analogie, les contraintes propres à la gestion de machine virtuelles, éliminées.

Enfin, c’est l’optimisation et la rationalisation des coûts d’infrastructures qui sont visés par la conteneurisation et les possibilités d’automatisation qu’elle confère.

 

outils devops kubernetes

 

La place de la sécurité dans une approche DevOps

Comme dans beaucoup de projets, la nature et la qualité de la collaboration entre équipes est une composante essentielle pour mettre en place un périmètre de sécurité complet. Tant d’un point de vue externe sur la mise en place de systèmes de défense (intrusion, attaque, etc.), que d’un point de vue interne au projet. Dans le cadre d’un projet DevOps, la sécurité va relever davantage d’une problématique humaine, liée à des technologies et des protocoles de mise en oeuvre des règles de sécurité.

La question de la sécurité dans une approche DevOps intervient dès le début d’un projet. L’idée est de pouvoir passer d’une logique de tests ciblés et ponctuels, souvent réalisés en fin de projet, à une logique de tests permanents. Une approche DevOps implique des actions régulières de tests de sécurité à chaque phase du processus de création applicatif, là où les pratiques plus traditionnelles vont faire appel selon les besoins et de manière plus ponctuelle à des audits de sécurité. C’est-à-dire à l’opposé d’un processus DevOps où l’automatisation est finalement une constante dans la réalisation du projet.

Cependant, la pratique a montré à plusieurs reprises que le passage d’un projet vers une logique DevOps oppose des dysfonctionnements dans l’intégration de la sécurité et la mise en œuvre du projet dans sa globalité. L’approche DevOps ne s’intégrerait pas si facilement au processus du RSSI des entreprises, d’avantage basé sur l’IT traditionnelle.

 

Automatisation de la sécurité avec le DevSecOps

Une enquête réalisée par Sonatype en 2019 met en avant que près de la moitié des développeurs interrogés lors de cette étude, déploient jusqu’à plusieurs fois par semaine des modifications en production de leur projet applicatif.
La contrainte d’amélioration constante de l’expérience utilisateur, qui pousse vers une accélération des développements web, applicatif ou logiciel, démontre cette nécessité de déployer fréquemment de nouvelles versions et le besoin des entreprises de passer à un modèle DevOps.

Cette logique de développement cependant, expose les infrastructures à davantage de contraintes de sécurité.

L’automatisation de la sécurité dans une logique devops doit permettre de mieux protéger les développements d’une application face à des cyber-attaques de plus en plus fréquentes, sophistiquées et faciles à mettre en œuvre. Aussi, la nécessité de garantir la sécurité et la conformité d’un processus de production en raison de déploiements automatisés de plus en plus nombreux, est désormais très grande.

L’enjeu du DevSecOps est de pouvoir intégrer des équipes en charge de la sécurité aux équipes DevOps. Mais aussi, proposer des produits et des méthodes sécurisées par défaut dès la conception d’une application empruntant une démarche DevOps, jusqu’à l’automatisation des tâches de sécurité par leur intégration à la chaîne de CI/CD.
L’industrialisation des tâches de sécurité intégrées à la chaîne CI/CD, propre à l’approche DevSecOps, doit permettre d’aller au-delà de logiques standards alliant simplement des outils (pare feu, etc.) et des méthodologies de sécurisation des systèmes plus traditionnelles.

Là où la promesse du cloud hybride est envisagée par de nombreuses sociétés comme une alternative sérieuse au cloud unique, la maitrise de la sécurité sur des environnements multi-cloud complexes prend désormais beaucoup de sens.

 

Le CaaS, vecteur d’intégration vers un projet multi-cloud

Un des objectifs et une des raisons d’aller vers des environnements multi-cloud est de pouvoir échapper aux engagements exclusifs d’une seule plateforme et de conserver de l’agilité dans l’exploitation de son infrastructure. La portabilité des applications et les capacités de migration apportées par le multi-cloud font partis également des fonctionnalités attendues par les entreprises.

Concrètement, les processus consistant à migrer une infrastructure vers le cloud sont connus et a priori relativement simples à mettre en œuvre (non ?! :)). Par contre, la véritable portabilité attendue entre divers environnements cloud, sans adhérence technique ou contrainte de sécurité, ne semble pas tout à fait mature. Provisionner et monitorer les ressources et les services d’un cloud nécessite d’avoir recours à de nombreux outils. La question du suivi de la consommation et de la facturation rentre également en ligne de compte.
Selon Gartner, aucune plateforme de management cloud ne serait en capacité de prendre en charge l’ensemble des fonctionnalités disponibles sur les principaux cloud mondiaux (…).

Minimiser l’adhérence des opérateurs cloud fait partie des principaux enjeux d’une stratégie cloud hybride. Souvent inscrite au cœur d’une démarche DevOps ou DevSecOps, la conteneurisation-as-a-service (CaaS) dont le principe repose sur la construction et l’exécution d’applications n’importe où dans le cloud, apporte aux DSI des réponses en ce sens.

En permettant la portabilité des applications embarquées à travers les réseaux, le stockage et les serveurs, la conteneurisation rend possible des stratégies d’hébergement et de mise en production de solutions réparties entre plusieurs opérateurs cloud, sur des territoires différents. La notion de cloud agnostique qui existe derrière la conteneurisation, apporte ainsi aux entreprises la visibilité et le contrôle de bout en bout de leurs applications distribuées. Ceci tout en éliminant les contraintes technologiques et en garantissant une sécurité homogène et complète de l’ensemble du système.