DEVOPS: Méthode de gestion de développement
Learning Outcomes
++ Compréhension des enjeux DevOps dans l'ingénierie logicielle.
++ Cappacité à mettre en oeuvre des pratiques DevOps de base.
++
DevOps est une approche qui rapproche le dev et les operations informatiques (Ops)
Objectif: travailler ensemble d'automatiser les processus (tests, déploiements,
supervision) et de livrer plus rapidement des applications operationnelles.
DevOps = collaboration + automatisation + amélioration continue.
Etapes: ++ Planification métier continue
++ Dev collaboratif
++ Tests continu
1 - Le Dev:
Toutes les activités liées à la conception et à l'écriture du code d'une exemples
DEVOPS:
** Une Culture d'équipe +
** des pratiques techniques +
** des outils modernes
i- Pourquoi une culture d'équipe ?
>> Collaboration et communication
>> Responsabilité partagée
>> Transparence (ex: dans la gestion du projet) et confiance
ii- Pouirquoi Pratiques ?
>> Intégration continue (CI)
>> Déploiement continu (CD)
>> Monitoring et Feedback
>> Automatisation des tâches.
A - CI:
=> Intégrer régulièrement le code des développeurs dans un dépôt central
* Ajout / Modification du code
>> Compiler le projet
>> Exécuter les tests (unittaires, etc)
>> Vérifier
* Commit: Action qui consiste à enregistrer une modification du code dans le
dépôt GIT.
Chaque commit contient:
++ les fichiers modifiés
++ un message
++ l'auteur
* Dépôt GIT
> Endroit POUR STOCKER le code d'un projet tout son historique.
Un dossier:
++ Les fichiers du projet (code, doc, etc)
++ L'historique de toutes les modifications (commits)
++ Les branches (versions, parallèles du code)
++ Les métadonnées de suivi créées par GIT.
B - CD / Delivery:
Automatiser la mise en production du logiciel après les étapes de tests et
validation.
- Continuous Delivery: Livraison continue
>> Le code est prêt à être déployé à tout moment.
>> Mais la mise en production nécessite encore une validation manuelle
(par exemple un clic du responsable).
- Continuous Deployment:
>> Mettre automatiquement le code en ligne pour les uitilisateurs.
C - Monitoring et Feedback:
>-- Monitoring: surveiller en temps réel l'état des applications, des
serveurs et des infrastructures.
>-- Feedback: retour d'info (des utilisateursn, des logs, des métriques) =>
AMELIORATION CONTINUE.
Pourquoi c'est important ?
--> Détecter rapidement les pannes ou anomalies.
--> Suivre les performances (CPU, RAM, trafic réseau, temps de réponse).
--> Améliorer l'expérience utilisateur grâce aux retours.
--> Avoir une boucle de rétroaction continue
___________ __________
| | | |
| Déployer | ------> | Observer |
|___________| |__________|
Automatisation des tâches :
*** Utiliser des outils ou des scripts exécuter automatiquement des actions
répétitives.
Pourquoi c'est utile ?
>> Gagner du temps -> plus besoin de répéter les mêmes manipulations.
D - EXEMPLES D'OUTILS MODERNES:
Conteneurisation et Orchestration : Docker, kubernettes ==> Exécuter les app
partout, assurer portabilité et scalabilité.
CI / CD: Gitlab CI/CD, Github, Jenkins
Infrastructure as Code (IaC): Terraform, Ansibe ==> Gérer les serveurs et
infrastructures comme du code (automatisation, configuration).
Monitoring et FeedBack: Prometheus, Grafana ==> Surveiller l'état des systèmes,
collecter des métriques, vissualiser et améliorer en continu.
I -Conteneurisation et Orchestration ( Docker, kubernettes ):
>> Exécuter partout: grâce aux conteneurs : app fonctionne de la même façon
sur PC, sur un serveur, ou dans le cloud.
>> Portabilité: pas besoin de tout reconfigurer selon la machine
--> le conteneur emporte tout ( code + dépendances).
>> scalabilité: avec Kibernettes, Lancer plusieurs copies (instances) de
l'app si beaucoup d'utilisateurs arrivent.
II - Infrastrucuture as Code (Terraform / Ansibe)
Choix 1: configurer un serveur ou un réseau = cliquer, installern configurer
=> long et manuel