Le DevOps en 2019 ? Toujours à la mode ?
Hé oui, même si le mouvement a clairement bénéficié d’un gros effet de mode, il a su démontrer son utilité et efficacité ces dernières années. Étant un sujet que j’apprécie beaucoup, je trouvais intéressant de faire un état de l’art de celui-ci maintenant qu’il a atteint une certaine maturité.
Mais avant tout revenons à la base, qu’est ce que le DevOps ? Pour beaucoup en cette année 2019, cette question parait triviale mais j’ai remarqué que ce n’est pas toujours très clair et simple à comprendre.
DevOps késako ?
Je suis toujours surpris d’entendre des gens penser que le DevOps a pour vocation de remplacer les métiers de développeur et d’administrateur système par un unique métier générique. Cette confusion est encore assez régulière (notamment à cause de la composition du terme), surtout chez les personnes qui ne sont pas du métier (dirigeants, managers, commerciaux). J’aime donc utiliser cette métaphore, après tout un boulanger et un boucher font tout deux de la nourriture, mais ce n’est pas pour ça qu’un boucher saura vous réaliser une baguette. Alors, pour bien comprendre ce qu’est le DevOps, revenons quelques années en arrière.
Il était une fois ….
Aux alentours de 2007, le marché du web s’est transformé et surtout il est devenu hyper concurrentiel. Il faut développer les nouvelles fonctionnalités plus rapidement que le concurrent pour s’adapter au marché afin de gagner plus de clientèle. Pour cela les méthodes Agile et particulièrement Scrum ont permises de s’adapter et de créer de manière itérative sur des durées réduites (sprints) des fonctionnalités et donc répondre aux besoins de développement rapides. Malheureusement cela ne répondais que partiellement au problème, les fonctionnalitées développées n’étant pas livrées au rythme des sprints. Les équipes d’administration système (ops) étant sur des cycles longs (comme le cycle en V) et pas assez outillés pour faire preuve d’agilité sur les déploiements applicatifs. Le temps entre l’imagination d’une fonctionnalité et son passage en production, aussi appelé Time to Market était resté élevé.
Il faut bien comprendre que dans un marché aussi versatile que le web moderne, le Time to market est essentiel à la survie. Prenons un exemple, celui des sites de rencontre. C’est un modèle qui n’a dans un premier temps que peu évolué, les acteurs étant stables sur le marché et les sites similaires. Mais il y a quelques années un acteur est venu casser le marché, vous le connaissez au moins de nom Tinder, l’acteur à débarqué sur le marché des acteurs classiques avec un modèle très différent qui lui a permis de capter un grand nombre de client rapidement. Pour cela les sites de rencontre historiques, ont dû s’adapter rapidement pour continuer de fonctionner.
C’est pour répondre à ce problème que la culture DevOps s’est développée. Elle va promouvoir principalement deux choses, le rapprochement entre Dev et Ops afin d’échanger et de travailler ensemble et l’automatisation d’un maximum de tâches afin de pouvoir multiplier les déploiements. Pour faire cela, de nombreux outils vont apparaître comme Gitlab, Jenkins, Docker, Terraform, le cloud public, etc. et gagner en popularité. Les paradigmes comme par exemple l’Infra As Code ou encore le pet vs cattle vont eux aussi connaitre un fort succès.
…tl dr
Le DevOps ce n’est pas une personne qui va remplacer vos développeurs et vos administrateurs par un métier générique, ni un moyen de réduire les coûts de projet. Le DevOps demande un coût plus important, notamment lors la mise en place des outils.
Alors qu’est-ce que le DevOps ? C’est une culture, un ‘mind-set’ qui vise à promouvoir le travail collaboratif entre les différentes équipes et l’automatisation maximum du cycle de déploiement afin de livrer régulièrement avec le moins de douleur possible.
DevOps quoi de neuf à l’horizon
L’équipe s’agrandit !
Aujourd’hui le DevOps a un peu plus de 10 ans et il a beaucoup évolué durant ces années. On peut donc se demander si on a fait le tour des possibilités que le domaine offre. Comme nous l’avons vu dans la définition du DevOps, il s’agit de passer l’agilité à toutes les équipes (développeur et administrateur). Mais déployer régulièrement du code tout en conservant un certain niveau de qualité impacte d’autres équipes. Ces équipes notamment les équipes de test (QA) et les équipes de sécurité sont aujourd’hui en train de rejoindre cette démarche et de s’intégrer dans ce fonctionnement. Il est de plus en plus recommandé de penser à ces aspects dès le début et de les intégrer directement au processus de déploiement. Je conseil d’ailleurs fortement de mettre en place dans votre chaine CI des tests aussi bien unitaires, que end to end mais aussi, des scans de sécurité et d’autres automatismes.
Ne parlez plus monitoring
Le DevOps a changé pas mal la manière de concevoir les applications les plus complexes. Rapidement l’approche microservice est apparue afin gérer des applicatifs avec un grand nombre d’interactions. Cela pose pas mal de problèmes notamment dans le monitoring où il ne suffit plus de se contenter du “bon vieux Nagios” qui va vérifier les ressources du système et nous dire si son état est “OK” ou “KO”. Pour cela il ne faut plus penser monitoring mais, observabilité. On ne va plus remonter l’état binaire d’un service mais, des métriques qui vont refléter son état. Par exemple, on peut relever sur un site commerçant le nombre de ventes ou de visites par minutes ce qui nous permettra de déduire le taux de transformation (visites converties en achats). Toutes ces métriques vont aussi nous permettre de déduire la santé du fonctionnement du système de manière plus précise ainsi que le temps de réponse des différents sevices.
Toi aussi optimise les coûts !
Le cloud a apporté beaucoup de flexibilité dans la gestion des ressources, il est aujourd’hui très simple de permettre à une infrastructure de se mettre à niveau en fonction de la demande. Cela permet de s’adapter au trafic à coût moindre. Mais aujourd’hui les factures des infrastructures sont très rapidement importantes, un nouvel aspect du métier est donc apparu, le FinOps. Son but est simple, faire autant ou plus pour moins en utilisant la flexibilité du cloud et donc optimiser la facture. L’un des exemples les plus connu est l’optimisation des environnements de préproduction, il est intéressant de les stopper en heure non ouvrées et d’utiliser des instances à bas coût sur AWS (instance Spot). Des optimisations de ce genre mises bout à bout à l’échelle d’un projet peuvent rapidement offrir de belles réductions qui sont très appréciées des entreprises.
That’s it ?
Le DevOps est aujourd’hui un sujet très complet et très diversifié aussi bien dans le nombre d’approches que dans les outils. Je suis loin d’en avoir fait le tour et un très grand nombre de pratiques n’ont pas été abordées. La plupart sont connues et déjà abordé par les grands groupes (Google, Amazon, Netflix etc…) qui mettent des moyens colossaux dans la R&D pour répondre à ces problématiques. Or aujourd’hui, il y a un réel enjeu à adapter cela sur d’autres entreprises et les accompagner sur cette transformation. Il s’agit bien sur une vision personnelle de ce domaine qui m’intéresse beaucoup et que je souhaitais partager avec vous.