DEVOPS ET
CLOUD
COMPUTING
OBJECTIFS DE LA SÉANCE :
• INTRODUIRE LES CONCEPTS DE DEVOPS ET LEUR
INTÉGRATION AVEC LE CLOUD
• APPRENDRE À UTILISER DES OUTILS D'AUTOMATISATION
DANS LE CLOUD
CONTENU :
• DevOps et Cloud Computing :
• Qu'est-ce que DevOps ? (collaboration, intégration
continue, livraison continue)
• Rôle des services cloud dans les pratiques DevOps
• Outils d'automatisation dans le Cloud :
• AWS CloudFormation, Terraform
• GitLab CI/CD, Jenkins pour l'intégration continue dans le
Cloud
• Déploiement Automatisé :
• Mise en place d'un pipeline CI/CD sur AWS
• Laboratoire pratique : Automatiser le déploiement d'une
application avec CloudFormation ou Terraform
INTRODUCTION
•🌍 Contexte :
• Le DevOps transforme la manière
dont les équipes de développement
(Dev) et d’exploitation (Ops)
collaborent. En combinant cette
approche avec le Cloud Computing,
on obtient des processus plus agiles,
automatisés et évolutifs.
QU'EST-CE QUE DEVOPS ?
• Le DevOps est une méthodologie qui favorise la
collaboration entre les équipes de
développement (Dev) et d’exploitation (Ops) pour
automatiser et accélérer le cycle de vie des
applications.
• L’objectif principal du DevOps est de briser les silos
entre ces équipes afin de créer un flux de travail
continu, efficace et fiable, en mettant en avant trois
concepts clés :
• Collaboration
• Intégration Continue (CI)
• Livraison Continue (CD)
•1. Collaboration DevOps 🤝 :
•Dans les modèles traditionnels, les développeurs créent une
application puis la transmettent aux équipes d’exploitation, ce qui
entraîne souvent des délais, des erreurs et des conflits.
•Le DevOps abolit cette séparation et instaure une culture de
travail unifiée, où les équipes :
• Travaillent ensemble dès la phase de conception.
• Partagent les responsabilités tout au long du cycle de
développement.
• Améliorent en continu les performances des applications.
• - Exemple :
• Un développeur intègre une nouvelle fonctionnalité.
• L’équipe Ops vérifie son impact sur les performances et la
sécurité.
• La fonctionnalité est testée et déployée en continu sans attente
inutile.
•2. Intégration Continue (CI - Continuous Integration) 🔄 :
•L’intégration continue est une pratique qui consiste à
intégrer régulièrement du code dans un dépôt central
(ex : GitLab, GitHub, Bitbucket) et à automatiser les tests
pour détecter rapidement les erreurs.
• 🔹 Comment ça marche ?
✔️Un développeur pousse une modification de code.
✔️Un serveur CI (ex : GitLab CI/CD, Jenkins) exécute des
tests automatiques.
✔️Si les tests réussissent ✅ → Le code est validé.
✔️Si les tests échouent ❌ → L’équipe est alertée
immédiatement.
• 🔗 Outils populaires :
• GitLab CI/CD – Système intégré à GitLab pour automatiser
les tests.
• Jenkins – Outil open source d'intégration continue très
répandu.
3. Livraison Continue (CD - Continuous
Delivery/Deployment) 🚀 :
Une fois le code validé par l’intégration continue, la livraison
continue garantit que l’application peut être déployée
automatiquement et en toute sécurité en production .
• Deux niveaux de CD existent :
• Continuous Delivery (Livraison Continue) :
• Le code est prêt à être déployé à tout moment.
• Un humain doit encore déclencher le déploiement.
• Continuous Deployment (Déploiement Continu) :
• Chaque modification validée est déployée
automatiquement.
• Il n’y a aucune intervention humaine, sauf en cas d’erreur.
• 🔗 Outils populaires pour le déploiement :
• AWS CodeDeploy – Automatisation du déploiement dans AWS.
• GitLab CI/CD – Intègre un pipeline complet de test et
déploiement.
RÔLE DU CLOUD DANS L'APPROCHE
DEVOPS
•Le Cloud Computing est un élément clé du DevOps, car il permet
une gestion agile et automatisée des infrastructures, facilitant
ainsi le développement, le test et le déploiement d’applications.
• Pourquoi le Cloud est essentiel pour DevOps ?
• Provisionnement rapide et automatisé → Création instantanée
de serveurs, bases de données et réseaux sans intervention
manuelle.
• Scalabilité → Ajout ou suppression automatique des ressources en
fonction de la charge (ex. AWS Auto Scaling).
• Infrastructure as Code (IaC) → Déploiement et gestion
automatisés avec Terraform, AWS CloudFormation.
• CI/CD natif → Intégration avec AWS CodePipeline, GitLab CI/CD,
Jenkins pour automatiser les tests et les déploiements.
• Sécurité et supervision → Gestion centralisée des accès et
surveillance en temps réel avec AWS CloudWatch, Azure
Monitor.
OUTILS D'AUTOMATISATION :
•L’automatisation est essentielle dans DevOps pour garantir des
déploiements rapides, fiables et reproductibles. Parmi les outils les
plus utilisés pour gérer l'infrastructure, on retrouve AWS
CloudFormation et Terraform, qui permettent de définir et
provisionner des ressources via l’Infrastructure as Code (IaC).1.
Infrastructure as Code (IaC)
• L'Infrastructure as Code (IaC) permet de définir et gérer
l'infrastructure sous forme de code, ce qui facilite la
réplication et la gestion automatisée des environnements Cloud.
• AWS CloudFormation :
Service AWS qui permet de provisionner et gérer des ressources à
l’aide de fichiers YAML/JSON.
Intégration native avec l’ensemble des services AWS.
Gestion automatisée des dépendances et mises à jour
d’infrastructure.
•Terraform :
Outil open source qui fonctionne avec plusieurs fournisseurs Cloud
(AWS, Azure, Google Cloud).
Syntaxe déclarative qui permet d'écrire une infrastructure
standardisée et modulaire.
Permet de versionner et réutiliser les configurations, idéal pour
GitLab CI/CD :
• Système intégré à GitLab permettant de configurer des pipelines
automatisés via un fichier .[Link]
• Exécute des tests, construit et déploie les applications en fonction des
événements Git (commit, merge…).
• Supporte plusieurs runners (Docker, Kubernetes, machines virtuelles…).
Jenkins :
• Outil open source permettant d’automatiser l’ensemble du cycle DevOps.
• Compatible avec de nombreux plugins et services Cloud (AWS, Azure,
OUTILS CI/CD POUR Google Cloud).
• Offre une grande flexibilité, mais nécessite plus de configuration.
L’AUTOMATISATION
AWS CodePipeline :
• Service managé AWS permettant d’orchestrer les différentes étapes
CI/CD.
• Intégration native avec CodeCommit (gestion du code), CodeBuild
(compilation et tests), et CodeDeploy (déploiement en production).
GitHub Actions :
• Automatisation CI/CD intégrée à GitHub, permettant d’exécuter des
workflows déclenchés par des événements (push, PR…).
• Supporte des environnements Docker et Kubernetes pour les tests et
déploiements.
DÉPLOIEMENT AUTOMATISÉ DANS LE
CLOUD
•Le déploiement automatisé permet de livrer rapidement et en toute
sécurité des applications en production, en réduisant les erreurs humaines et
en améliorant l’efficacité des équipes.
•Dans un environnement DevOps, le déploiement suit un pipeline CI/CD qui
inclut :
• Construction de l’application après chaque modification.
• Tests automatisés pour détecter les erreurs.
• Déploiement sur l’infrastructure Cloud de manière contrôlée et
reproductible.
• Un pipeline CI/CD permet d'automatiser
l'intégration et le déploiement des applications.
• Étapes clés sur AWS :
1. CodeCommit : Gestion du code source.
. MISE EN 2. CodeBuild : Compilation et exécution des tests.
PLACE D'UN
3. CodeDeploy : Déploiement automatisé sur les
serveurs ou conteneurs.
PIPELINE 4. CodePipeline : Orchestration des étapes CI/CD.
• Avantages :
CI/CD SUR Déploiements plus rapides et fiables.
AWS Réduction des interruptions et des erreurs.
Automatisation totale du cycle de vie de
l’application.
• Reference :
• [Link]
ÉTAPES D'UN PIPELINE CI/CD SUR AWS
Chaque push ou
Un fichier
1. modification de
2. Compilation et Le code est [Link]
Déclenchement code déclenche
tests avec compilé et testé définit les
automatique via automatiquement
CodeBuild automatiquement. commandes
CodeCommit l’exécution du
d’exécution.
pipeline.
Le code validé est
déployé sur des Visualisation
4. Orchestration Gère les transitions
3. Déploiement instances EC2, graphique du
avec entre build, test
avec CodeDeploy AWS Lambda ou pipeline dans
CodePipeline et déploiement.
des conteneurs l’interface AWS
ECS/EKS.
LABORATOIRE PRATIQUE : AUTOMATISER LE
DÉPLOIEMENT D’UNE APPLICATION AVEC
CLOUDFORMATION OU TERRAFORM
Objectifs du
laboratoire
Comprendre
Appliquer les
comment définir Déployer
principes CI/CD
une automatiquement
et
infrastructure une application
Infrastructure
sous forme de sur AWS.
as Code.
code (IaC).
Étapes du Laboratoire
📌 Étape 1 : Définition de l’infrastructure
Écrire un template YAML/JSON pour CloudFormation ou un fichier .tf pour Terraform.
Définir les ressources nécessaires :
✔️Instances EC2 pour l’application.
✔️Base de données RDS pour stocker les données.
✔️Load Balancer (ELB) pour la répartition du trafic.
Étape 2 : Validation et déploiement
Vérification de la syntaxe du script :
✔️aws cloudformation validate-template (CloudFormation).
✔️terraform validate et terraform plan (Terraform).
Exécution du déploiement avec :
✔️aws cloudformation deploy --template-file [Link] --stack-name MonProjet.
✔️terraform apply.
Étape 3 : Vérification et ajustements
Tester l’application pour s’assurer qu’elle fonctionne correctement.
Modifier l’infrastructure si nécessaire et redéployer en appliquant les
changements.
Récapitulatif des points clés
• DevOps et Cloud Computing : Une approche qui favorise la collaboration,
l’intégration et la livraison continues.
• Rôle du Cloud : Permet le provisionnement rapide, l’automatisation et la scalabilité
des infrastructures.
• Outils d’automatisation :
Infrastructure as Code (IaC) : AWS CloudFormation, Terraform.
• CI/CD :
GitLab CI/CD, Jenkins, AWS CodePipeline.
• Déploiement Automatisé :
Mise en place d’un pipeline CI/CD pour garantir des mises à jour continues et réduire
les interventions manuelles.
Laboratoire Pratique : Utilisation de CloudFormation et Terraform pour automatiser la
création et la gestion des infrastructures Cloud.