Stratégie DevOps

Stratégie DevOps

 

Qu’est-ce que DevOps ?

Encore un autre buzz dans l’IT !!! Le Cloud Computing venu révolutionner l’informatique traditionnelle va également avoir un impact sur le métier du professionnel en informatique.

L’arrivée d’une nouvelle approche modifie la façon dont nous utilisons les technologies et le DevOps ne fait pas exception. Les technologies de virtualisation de serveurs, de réseau et de stockage sont un prérequis pour entreprendre le virage DevOps en créant les environnements de travail permettant l’automatisation. Plusieurs fournisseurs de l’industrie ont déjà adapté leurs technologies au DevOps, il est donc important de garder à jour les infrastructures pour faciliter son adoption.

DevOps (abréviation de développement et opérations) est bien le nouveau-né de cette révolution technologique.

Dans ce billet je vais partager ma compréhension et mon expérience autour de ce concept.

De manière générale, DevOps est une approche qui repose sur les principes Lean et Agile dans lesquels les responsables métier avec les services de développement, des opérations et d'assurance qualité collaborent pour délivrer le logiciel en continu dans l'objectif de permettre à l'entreprise de saisir plus rapidement les opportunités du marché et d'accélérer la prise en compte des retours clients. En effet, les applications d'entreprise sont si diverses et composées de tant de technologies, d’infrastructures, plateformes, d'équipements utilisateurs, etc., que seule une approche DevOps permet de gérer avec succès toute cette complexité.

DevOps repose essentiellement sur quatre (4) principes :

  1. Développement et test sur des systèmes de type « production »
  2. Déploiement de processus réutilisables et fiables
  3. Surveillance et validation de la qualité opérationnelle

4. Amplification des boucles de retour

 

Les Principes

1-   Développement et test sur des systèmes de type « production »

Ce principe provient du concept shift left, de DevOps dans lequel les problèmes de la production sont traités en amont dans le cycle de vie de distribution de logiciel jusqu'au développement

L'objectif vise à permettre aux équipes de développement et d'assurance qualité (QA) de développer et de tester l'application par rapport à des systèmes qui se comportent comme des systèmes de production afin de déterminer le comportement et les performances de l'application avant son déploiement.

La première exécution de l'application sur un système de type production doit intervenir le plus tôt possible dans le cycle de vie pour résoudre deux problèmes potentiels majeurs. Cela permet d'une part de tester l'application dans un environnement similaire à l'environnement de production réel où l'application sera déployée, et d'autre part de tester et de valider les processus de mise en production eux-mêmes en amont.

Du point de vue du développement, également, ce principe est très efficace. Il permet à l'équipe des opérations de déterminer en amont dans le cycle la manière dont se comportera son environnent lors de la prise en charge de l'application, et de créer un environnement d'application optimisé.

 

2-   Déploiement de processus réutilisables et fiables

 

Comme l'indique le terme, ce principe permet aux équipes de développement et des opérations de prendre en charge un processus de développement de logiciel agile (ou au minimum itératif) jusqu'à la production. L'automatisation est essentielle pour créer des processus itératifs, fréquents, réutilisables et fiables. Par conséquent, l'organisation doit créer un pipeline de livraison qui permet le déploiement et les tests de manière automatisée et en continu.

Les déploiements fréquents donnent également la possibilité aux équipes de tester les processus de déploiement eux-mêmes et donc de réduire les risques d'échec de déploiement lors de la mise en production.

Quelques outils DevOps utiles : GitLab, Dockerfile , .gitlab-ci.yml pour chaque projet gitlab

3-   Surveillance et validation de la qualité opérationnelle

 

En règle générale, les organisations surveillent efficacement les applications et les systèmes dans l'environnement de production, car elles disposent des outils qui capturent les mesures des systèmes de production en temps réel. Mais elles les surveillent d'une manière isolée et déconnectée : ce principe place en amont la surveillance dans le cycle de vie en exigeant que les tests automatisés soient exécutés plus tôt et plus fréquemment dans le cycle de vie pour surveiller les caractéristiques fonctionnelles et non fonctionnelles de l'application. Lorsqu'une application est déployée et testée, des mesures de qualité doivent être capturées et analysées. La surveillance fréquente permet d'être alerté en amont des problèmes opérationnels et de qualité qui peuvent apparaître dans l'environnement de production.

Ces mesures doivent être capturées dans un format compréhensible et utilisable par toutes les parties prenantes.

Quelques outils DevOps utiles : server cacti, smokeping et Nagios

 

4-   Amplification des boucles de retour

L'un des objectifs de DevOps est de permettre aux organisations de réagir et de procéder aux modifications plus rapidement. Dans la livraison des logiciels, cet objectif suppose qu'une organisation obtienne rapidement un retour et apprenne tout aussi rapidement de chaque action qu'elle exécute. Ce principe implique que les organisations créent des canaux de communication pour que les parties prenantes puissent accéder aux différents retours et agir en conséquence.

  • Le développement peut agir en ajustant ses plans de projet ou ses priorités.
  • La production peut agir en améliorant les environnements de production.
  • L'entreprise peut agir en modifiant les plans de mise en production des nouvelles versions.

 

A côté de ses 4 principes, il est opportun de donner un aperçu général sur quelques fonctionnalités DevOps.

Les Fonctionnalités 

Les fonctionnalités qui constituent DevOps sont un large ensemble qui couvre le cycle de vie de distribution des logiciels. Le point à partir duquel une organisation peut initier une démarche DevOps dépend de ses objectifs métier — les défis qu'elle tente de relever et les insuffisances qu'elle doit combler dans ses fonctionnalités de livraisons de logiciels.

 

1-    Chemins d'adoption de DevOps

 

Une architecture de référence fournit un modèle d'une solution éprouvée en utilisant un ensemble de méthodes et fonctionnalités préférées. L'architecture de référence DevOps présentée ici, aide les utilisateurs à accéder et utiliser les instructions, les directives et d'autres documents nécessaires afin de structurer et concevoir une plateforme DevOps qui s'adapte aux personnes, processus et technologies.

Au fur et à mesure que l'architecture définie se concrétise, ces fonctionnalités seront supportées par un groupe de personnes compétentes, de pratiques définies et d'outils d'automatisation.

L'architecture de référence DevOps ci-dessus propose les quatre groupes de chemins d'adoption suivants :

  • Pilotage ;
  • Développement/test ;
  • Déploiement ;
  • Opération.

 

Quel est le lien entre le Cloud et DevOps ?

DevOps a pour principal objectif de réduire les goulots d'étranglement dans le pipeline de distribution pour le rendre plus efficace. L'un des principaux goulots d'étranglement auxquels font face les entreprises concerne la disponibilité et la configuration des environnements. Il n'est pas rare de voir les utilisateurs, notamment les développeurs et les testeurs, demander un environnement par le biais d'un système de gestion de tickets traditionnels, la satisfaction de ces demandes pouvant prendre des jours, voire des mois.

DevOps offre l'avantage, entre autres, de pouvoir développer et tester dans un environnement similaire à la production. Au goulot d'étranglement de la disponibilité de l'environnement s'ajoute le risque d'avoir un environnement disponible différent de celui de production. Cette discordance peut se limiter à de simples différences dans la configuration de l'environnement — au niveau du système d'exploitation ou du middleware, ou bien elle peut être beaucoup plus grave avec la présence d'un type de système d'exploitation ou de middleware dans les environnements de développement, totalement différent de celui de l'environnement de production.

L'absence de disponibilité des environnements se traduit par des délais d'attente potentiellement longs pour les utilisateurs. La discordance entre les environnements de développement et de production peut poser des problèmes de qualité significatifs, car les développeurs ne peuvent pas vérifier le comportement de l'application telle qu'elle sera déployée dans l'environnement de production, ou pire, ne peuvent pas valider que le processus de déploiement validé sur les environnements de tests fonctionnera lorsqu'il faudra déployer dans l'environnement de production.

Le cloud résout ces problèmes de la manière suivante :

  • la rapidité du provisionnement d'environnement sur les plateformes cloud peut fournir aux utilisateurs un accès d'usage en libre-service avec une disponibilité d'environnement et un accès à la demande ;
  • la possibilité de provisionner et de décomissionner dynamiquement ces environnements en fonction des besoins, améliore la gestion des environnements et diminue les coûts en réduisant la nécessité d'avoir des environnements de tests statiques permanents ;
  • la possibilité d'exploiter des technologies qui s'appuient sur des « modèles » et qui donnent la possibilité aux organisations de définir et versionner les environnements comme du logiciel permet de fournir des environnements qui répondent exactement aux besoins des utilisateurs — et qui correspondent surtout à des environnements de type production ;
  • du point de vue de l'automatisation, la disponibilité des technologies d'automatisation du déploiement des applications, telles que IBM UrbanCode Deploy, permet avec un seul outil de provisionner l'environnement cloud et de déployer les versions appropriées vers ces environnements en fonction des besoins et quand cela est nécessaire. Ces technologies peuvent également configurer rapidement l'environnement et l'application pour répondre aux besoins des utilisateurs ;

la disponibilité des technologies de virtualisation de services, telles qu'IBM Rational Test Virtualization Server, fonctionnant conjointement avec les environnements cloud, permet de simuler les services nécessaires aux tests sans avoir à provisionner des instances réelles de ces services.


Identifiez-vous pour afficher ou ajouter un commentaire

Autres pages consultées

Explorer les sujets