Académique Documents
Professionnel Documents
Culture Documents
1
Plan
1. Introduction
2. Pratiques DevOps
3. Conteneurisation dans DevOps
4. Cloud platforme
5. Outils DevOps
6. Conclusion
2
Pratiques DevOps
1. Développement logiciel Agile
2. Intégration continue (CI) et livraison continue (CD)
3. Infrastructure en tant que code (Infrastructure as Code ou IaC)
4. Contrôle de version
5. Gestion de configuration
6. Surveillance continue
7. Micro-services
3
Développement Agile
1. met l’accent sur la collaboration entre les équipes,
2. une plus grande adaptabilité aux demandes changeantes
3. le retour d’information des utilisateurs et des cycles de publication
plus courts.
4. Example de frameworks Scrum.
4
CI &CD
1. les développeurs fusionnent ou intègrent fréquemment les
modifications du code
2. comprend des tests automatisés qui s’exécutent chaque fois qu’un
nouveau code est introduit
3. la livraison continue implique le déploiement automatisé des
versions du logiciel dans l’environnement de production choisi.
4. Les équipes DevOps peuvent permettre des mises à jour plus
fréquentes grâce au déploiement automatisé
5. réduire le nombre de problèmes survenant lors du déploiement
6. Exemples : Jenkins
5
Infrastructure en tant que code (IaC)
1. IaC définit les topologies et les ressources du système pour permettre
la gestion des ressources pendant la phase de code de manière fiable
et contrôlée
2. Permet de stocker et versionner ces définitions dans un système de
contrôle de version
3. Permet de réviser et revenir en arrière rapidement
4. réduire les erreurs humaines dans les environnements de production
complexes.
6
Contrôle de version
1. Le contrôle de version implique la gestion des codes en plusieurs
versions avec des révisions et un historique des modifications, de
sorte qu’il devient facile de revoir les codes et de les récupérer.
2. Aide à collaborer plus efficacement, à stocker le code en toute
sécurité et à répartir les tâches entre les membres de l’équipe
3. fusionner les modifications, à gérer facilement les conflits et à
annuler les modifications du code si nécessaire
4. Exemple : GiT
7
Contrôle de version
1. Le contrôle de version implique la gestion des codes en plusieurs
versions avec des révisions et un historique des modifications, de
sorte qu’il devient facile de revoir les codes et de les récupérer.
2. Aide à collaborer plus efficacement, à stocker le code en toute
sécurité et à répartir les tâches entre les membres de l’équipe
3. fusionner les modifications, à gérer facilement les conflits et à
annuler les modifications du code si nécessaire
4. Exemple : GiT
8
Gestion de configuration
1. La gestion des ressources système : les serveurs, les bases de données et
les machines virtuelles
2. aide à déployer les modifications de manière systématique et contrôlée
3. suivre l’état du système et prévenir les dérives de configuration qui peuvent
conduire à l’instabilité.
4. gestion de la configuration avec IaC afin que la configuration et la définition
du système soient automatisées sans effort
5. permet aux équipes d’exploiter des environnements de production
complexes avec évolutivité.
6. Exemples : Chef, Ansible, etc.
9
Surveillance continue
1. obtenir une visibilité complète en temps réel de la santé et des
performances de l’ensemble de votre pile d’applications, de
l’infrastructure aux composants logiciels haut de gamme.
2. aide à déployer les modifications de manière systématique et
contrôlée
3. comprend les métadonnées, la télémétrie (journaux d’événements et
données) et les alertes pour un ensemble de conditions prédéfinies
4. trouver des moyens d’améliorer la qualité des logiciels lors des
prochains cycles de développement en utilisant les informations
recueillies.
10
Microservice
1. architecture efficace pour construire une application en plusieurs petits services basée sur
API REST.
2. Ils peuvent supprimer des points de défaillance uniques (SPOFs1 : single point of failure ) en
garantissant que les problèmes dans un service ne se bloquent pas ou affectent d’autres
parties d’une application.
3. peuvent être mis à l’échelle indépendamment pour fournir une disponibilité et une capacité
supplémentaires.
4. Les équipes DevOps peuvent étendre les fonctionnalités en ajoutant de nouveaux
microservices sans affecter inutilement d’autres parties de l’application.
1 est un point d'un système informatique dont le reste du système est dépendant et dont une panne entraîne l'arrêt complet du
système.
11
Exemple d’architecture
12
Exemple de type de fichier de configuration
13
14
Conteneurisation dans DevOps
15
Qu'est-ce que la conteneurisation ?
1. La conteneurisation est une sorte de virtualisation du système d'exploitation dans
laquelle tous les composants de l'application sont regroupés dans un espace isolé
sur la machine virtuelle appelé conteneurs.
2. Les conteneurs sont petits, portables et faciles à exécuter ou à configurer.
3. Lorsqu'un développeur conteneurise une application, le conteneur est séparé du
système d'exploitation hôte et a un accès limité aux ressources du système.
4. La conteneurisation se concentre sur la décomposition des systèmes d'exploitation
en morceaux qui peuvent être utilisés plus efficacement en ayant leur système
d'exploitation
5. La conteneurisation permet aux entreprises de virtualiser le système d'exploitation
et d'installer des applications dans des régions isolées appelées conteneurs.
6. L'application conteneurisée peut s'exécuter sur différentes infrastructures, le cloud
ou les machines virtuelles, sans avoir à être réécrite.
16
Comment fonctionne la conteneurisation ?
1. En mettant tous les éléments dont une application a besoin dans une seule unité
virtuelle.
2. La conteneurisation permet aux développeurs de regrouper le code de l'application
avec ses fichiers de configuration, ses dépendances et ses bibliothèques.
3. L'emballage permet au conteneur d'être autonome et portable, de sorte qu'il peut
fonctionner sans problème sur n'importe quelle plate-forme ou cloud
4. Les conteneurs n'utilisent pas directement les ressources matérielles ou du noyau
qui sont virtualisées.
5. les conteneurs s'exécutent "au-dessus" d'une plate-forme spécialement conçue pour
gérer les conteneurs et masquer les ressources sous-jacentes et permettent
également l'exécution d'une même application dans différents contextes
17
Conteneurisation vs virtualisation
1. Dans la virtualisation des serveurs, le matériel
est caché et un système d'exploitation est
exécuté dessus.
2. La conteneurisation est un moyen d'exécuter
une application sur un système d'exploitation.
3. La virtualisation dépend du système
d'exploitation hôte sous-jacent mais ne se
soucie pas du matériel à moins qu'il ne
dispose de suffisamment de ressources.
18
Conteneurisation vs virtualisation
Pour les La conteneurisation Virtualisation
Les conteneurs sont fournis avec un La virtualisation est construite au-dessus de l'hôte,
Environnement système d'exploitation qui s'exécute dans séparé par le système d'exploitation apparaît comme
plusieurs environnements. une machine.
Démarrage Les conteneurs prennent très peu de temps Les machines virtuelles mettent quelques minutes à
au démarrage. démarrer.
21
Les avantages de la conteneurisation
1. Portabilité : Les mêmes images de conteneur, y compris les dépendances, peuvent être exécutées partout
avec la conteneurisation.
2. Rapidité : Les conteneurs sont plus rapides que les VM
3. Économe en ressources: Les conteneurs (mégaoctets) sont plus efficaces que les VM (gigaoctets) car ils
n'incluent que des fichiers spécifiques à l'application.
4. Simplicité de déploiement-développement: les applications conteneurisées sont rapides, petites et
faciles à déployer portables utilisés n'importe où
5. Dépannage : La conteneurisation isole et sépare les applications. La défaillance d'un conteneur n'affecte
pas la fonctionnalité des autres.
6. Sécurité: des autorisations de sécurité spécifiées sont définies pour empêcher les composants
indésirables d'entrer dans d'autres conteneurs ou limiter les communications
7. Manageabilité : automatiser les charges de travail et les services conteneurisés à l'aide d'un conteneur
orchestration (Kubernetes). L'orchestration des conteneurs simplifie les tâches administratives, la
publication, la mise à l'échelle des programmes conteneurisés, ainsi que la surveillance, la journalisation
et le débogage.
8. Continuité: La défaillance d'un conteneur n'affectera pas les autres. Les développeurs peuvent réparer un
conteneur sans affecter les autres. La conteneurisation garantit la continuité opérationnelle.
22
Les outils DevOps
23
24
25
Les outils DevOps
26
27
28
29
30
31
32
33
34
Code Management
GIT
35
36
37
38
39
40
41
42
43
44
Integrate & Deploy
Jenkins
45
Jenkins
• Jenkins est un outil open source de serveur d'automatisation. Il aide à
automatiser les parties du développement logiciel liées au build,
aux tests et au déploiement, et facilite l'intégration continue et
la livraison continue. Écrit en Java, Jenkins fonctionne dans
un conteneur de servlets tel qu’Apache Tomcat, ou en mode
autonome avec son propre serveur Web embarqué.
• Il s'interface avec des systèmes de gestion de versions tels
que CVS, Git et Subversion, et exécute des projets basés sur Apache
Ant et Apache Maven
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
Operate :
Contenterisation
Docker, Kubernetes
67
Docker
• Docker a été créé pour les besoins d'une société de Platform as a Service
(PaaS) appelée DotCloud.
• En mars 2013, l'entreprise a créé une nouvelle structure nommée Docker
Inc et a placé en open source son produit Docker.
• un conteneur ne doit faire tourner qu'un seul processus.
• dans le cas d'une stack LAMP (Linux, Apache, MySQL, PHP), nous devons
créer 3 conteneurs différents, un pour Apache, un pour MySQL et un
dernier pour PHP
• Docker est utilisé par de très nombreuses sociétés pour différents usages.
Ainsi, un des premiers usages de Docker se trouve dans la création
d'environnements locaux
68
Docker
69
70
Architecture Docker
71
72
73
74
75
76
77
78
79
80
Kubernetes
81
Kubernetes
• Kubernetes est un système open source qui vise à fournir une « plate-
forme permettant d'automatiser le déploiement, la montée en charge
et la mise en œuvre de conteneurs d'application sur des clusters de
serveurs »
82
Kubernetes
• Kubernetes est un logiciel d’orchestration open source qui fournit une API
pour contrôler le mode et l’emplacement d’exécution de ces conteneurs. Il
permet d’exécuter vos conteneurs Docker et charges de travail, et vous aide
à faire face à certaines complexités opérationnelles lors de la mise à
l’échelle de plusieurs conteneurs, répartis sur plusieurs serveurs.
• Kubernetes permet d’orchestrer un cluster de machines virtuelles et de
planifier l’exécution des conteneurs sur ces machines virtuelles en fonction
de leurs ressources de calcul et des besoins de chaque conteneur. Les
conteneurs sont regroupés dans des pods, l'unité opérationnelle de base
de Kubernetes. Ces conteneurs et pods peuvent être adaptés à l’état
souhaité et vous pouvez gérer leur cycle de vie pour assurer la bonne
exécution de vos applications.
83
Pod
• Les pods sont les objets déployables qui constituent les plus petits
composants essentiels de Kubernetes. Un pod représente une
instance unique d'un processus en cours d'exécution dans votre
cluster.
• Les pods contiennent un ou plusieurs conteneurs tels que des
conteneurs Docker.
• Un pod est conçu pour exécuter une seule instance de votre
application sur votre cluster
• ce pod : En attente, En cours d'exécution, Réussite, Échec Inconnu
(utilisez la commande kubectl get pod )
84
85
86
87
88
89
90
Docker vs Kubernetes
91
Docker vs Kubernetes
92
93
Operate
ANSIBLE
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115