Vous êtes sur la page 1sur 6

L’approche Agile

Chapitre 5 : Introduire la chaîne DevOps

ISTA TINGHIR
2022-2023
Formateur : BOUTKHAMOUINE Brahim
Situation du départ

Imaginons qu'une entreprise de commerce électronique (E-Commerce) décide de déployer


une nouvelle fonctionnalité permettant aux utilisateurs de personnaliser leur page d'accueil.
L'équipe de développement travaille sur cette fonctionnalité et est impatiente de la déployer
le plus rapidement possible. Cependant, l'équipe d'exploitation s'inquiète des risques
potentiels que cette fonctionnalité pourrait introduire en production, notamment en termes
de charge sur les serveurs ou de sécurité des données.
L'équipe de développement souhaite automatiser autant que possible le processus de
déploiement, afin de gagner du temps. Mais l'équipe d'exploitation estime qu'un certain
niveau de contrôle manuel est nécessaire pour garantir la stabilité du système. Elle
demande donc à l'équipe de développement de passer par une procédure de validation
manuelle avant chaque déploiement en production.
De plus, l'équipe d'exploitation est préoccupée par la disponibilité et la performance du
système en production, tandis que l'équipe de développement est plus axée sur les
nouvelles fonctionnalités. Il y a donc une divergence de priorités entre les deux équipes.
Finalement, lorsque la nouvelle fonctionnalité est déployée, des problèmes surviennent en
production, ce qui perturbe l'expérience utilisateur et entraîne des pertes de revenus pour
l'entreprise. Les deux équipes commencent alors à se blâmer mutuellement pour les
problèmes qui ont été rencontrés.

Ce conflit aurait pu être évité si les équipes avaient travaillé plus étroitement ensemble
dès le départ, en impliquant l'équipe d'exploitation dès le début du processus de
développement, en communiquant régulièrement et en veillant à ce que les objectifs de
chaque équipe soient alignés. Cela aurait permis de garantir que la nouvelle fonctionnalité soit
déployée en toute sécurité et sans impact négatif sur les utilisateurs et l'entreprise.

Exemple 2 :

L'équipe de développement peut avoir développé une application qui répond parfaitement
aux besoins fonctionnels, mais qui n'est pas optimisée pour une utilisation à grande échelle.
L'équipe d'exploitation peut être confrontée à des problèmes de temps de réponse lents, de
déconnexions inattendues ou même de pannes complètes du système.

Dans ce cas, l'équipe de développement peut être réticente à apporter des modifications
importantes à l'application, craignant que cela ne compromette les fonctionnalités existantes
ou que cela ne prenne trop de temps. L'équipe d'exploitation, quant à elle, peut vouloir
résoudre rapidement les problèmes de performance pour éviter toute interruption de service
pour les utilisateurs.
 Pour résoudre ce type de conflit, il est important que les deux équipes travaillent
ensemble pour comprendre les problèmes de performance et les causes sous-
jacentes. L'équipe de développement peut devoir effectuer des modifications pour
optimiser les requêtes de l'application ou améliorer l'utilisation des ressources
système, tandis que l'équipe d'exploitation peut apporter des modifications à
l'infrastructure pour améliorer les performances, comme l'ajout de ressources
supplémentaires ou la mise en place de stratégies de mise en cache efficaces.

Définition :

DevOps est un ensemble de pratiques qui met l’accent sur la collaboration et la


communication entre les développeurs de logiciels et les professionnels des opérations
informatiques, en automatisant le processus de livraison de logiciels et les changements
d’infrastructure. Le terme DevOps est né de l’union du «development» et des «operations» dont
l’objectif est favoriser une meilleure communication entre les deux équipes.

Quelques avantages de DevOps

En adoptant le DevOps, les entreprises profitent de multiples avantages. C’est la


raison pour laquelle cette approche est massivement adoptée.

 le premier avantage du DevOps est la vitesse. Cette méthode


permet d’accélérer les lancements de produits et d’améliorer leur qualité.
L’accélération est liée à la livraison continue, permettant de recevoir un
feedback plus rapidement. Ainsi, les développeurs peuvent corriger les bugs
de façon précoce. Les équipes peuvent donc se focaliser sur la qualité du
produit et automatiser les processus.
 Le second avantage du DevOps est une meilleure réactivité aux besoins et
à la demande des clients. Les équipes sont en mesure de réagir aux
demandes de changement des clients plus rapidement, en ajoutant de
nouvelles fonctionnalités ou en mettant à jour celles déjà existantes
 La vélocité accrue permet d’innover plus rapidement, de s’adapter aux
changements du marché, et d’atteindre les objectifs de l’entreprise plus
efficacement. Par exemple, les microservices et la livraison continue
permettent aux équipes de déployer des mises à jour plus rapidement.
 Un autre point fort est la fiabilité. Le DevOps permet d’assurer la qualité des
mises à jour d’application et changements d’infrastructure, afin de pouvoir
délivrer à un rythme accru tout en préservant une expérience positive pour les
utilisateurs. Les pratiques de CI/CD permettent notamment de tester chaque
changement pour vérifier qu’il soit fonctionnel et sécurisé.
Le monitoring permet aussi de surveiller les performances en temps réel.
Les piliers de la structure DevOps peuvent se résumer sous un simple acronyme : CALMS.
Ce cadre de référence est la base de la méthode, car sans lui, le DevOps serait voué à l’échec :

Lien entre Agile et Devops

La démarche DevOps prend sa source directement de l’agilité. Elle fait suite à de nouveaux
besoins d’organisation de projets. Sil’agilité avait permis aux développeurs delivrer les
applications plus rapidement, les opérateurs, eux, avaient conservé un fonctionnement plus
classique. Le DevOps fut donc créé pour réduire cet écart qui faisait tant défaut à l’agilité.

Définition des notions : Intégration continue-Déploiement continue

•L'intégration continue est une méthode de développement de logiciel DevOps avec laquelle les
développeurs intègrent régulièrement leurs modifications de code à un référentiel centralisé,
suite à quoi des opérations de création et de tests ont automatiquement menées.
Les principaux objectifs del'intégration continue sont de trouver et de corriger plus rapidement
les bogues, d'améliorer la qualité des logiciels et de réduire le temps nécessaire pour valider et
publier de nouvelles mises à jour de logiciels.

Pourquoi l'intégration continue est-elle nécessaire?


•Autrefois, les développeurs au sein d'une même équipe avaient tendance à travailler
séparément pendant de longues périodes et à n'intégrer leurs modifications au référentiel
centralisé qu'après avoir fini de travailler.
•Cela a rendu la fusion de changement de codes difficile et chronophage, et a également
entraîné des bogues pendant une longue période, sans correction.
•La combinaison de ces différents facteurs empêchait delivrer rapidement des mises à jour aux
clients.
Comment fonctionne l'intégration continue?

•Avec l'intégration continue, les développeurs appliquent régulièrement leurs modifications sur
un référentiel partagé, avec un système de contrôle des versions comme Git.
•Avant d'envoyer leur code, les développeurs peuvent choisir d'exécuter des tests sur des unités
locales pour le vérifier davantage avant son l'intégration.
•Un service d'intégration continue crée et exécute automatiquement des tests unitaires sur les
nouveaux changements de codes pour détecter immédiatement n'importe quelle erreur.

Déploiement continue

Le déploiement continu(CD) est la suite de l’intégration continue. Une fois que les tests sont
validés sur l’environnement de dev, il faut mettre en production. Le déploiement continu
consiste donc à automatiser les actions de déploiements qui étaient auparavant réalisées
manuellement. C’est pour cette raison que l’on parle souvent de CI/CD ensemble, l’un va
difficilement sans l’autre.

La différence entre déploiement continu et livraison continue

Le déploiement continu c’est un idéal que peu d’entreprises ont réellement mis en place. La
plupart du temps les équipes IT préfèrent avoir la main sur la dernière étape du déploiement.
Dans ce cas on parle donc de livraison continue, toutes les étapes du déploiement sont
automatisées sauf la dernière: la mise en production.

Le déploiement continu inclut donc la livraison continue. Le déploiement continu va plus loin
que la livraison continue en orchestrant automatiquement le déploiement des nouvelles
fonctionnalités.

Outils pour CI

Jenkins : un outil open source qui offre de nombreuses fonctionnalités pour l'automatisation
de la compilation, des tests et des déploiements.
Travis CI : un service cloud qui facilite l'intégration continue pour les projets hébergés sur
GitHub.
GitLab CI : un service qui fournit une intégration continue et un déploiement continu sur la
même plateforme que le gestionnaire de code source Git.
_________________________
Outils pour CD

Ansible : un outil open source de gestion de configuration qui permet de déployer des
applications de manière automatisée.
AWS CodeDeploy : un service cloud d'Amazon qui facilite le déploiement d'applications sur
des instances Amazon EC2 ou des serveurs locaux.
Kubernetes : un système open source de déploiement et de gestion de conteneurs qui
permet de déployer et de gérer des applications de manière efficace.
Mettre en place la CI/CD avec Gitlab

Vous aimerez peut-être aussi