Introduction DevOps
• Ghassen Hammouda
• Enseignant formateur à Esprit
© 2023-2024 – Module DevOps – Introduction devOps 1
Plan du cours
• Introduction DevOps (installation environnement)
• GIT ( gestionnaire du code source)
• Maven (construction du projet)
• Jenkins (serveur d’intégration continu)
• Docker ( plateforme de lancement de l’application sur container)
• Nexus (gestion des livrables)
• JUnit (Les tests unitaires mockData)
• Sonar (qualité de code)
• Docker Avancé ( docker compose, docker volume)
• Grafana/ Prometheus (monitoring)
• Validation projet
© 2023-2024 – Module DevOps – Introduction devOps 2
Plan séance
• Introduction ( plan module devOps, évaluation, définition devOps)
• Evolution des Méthodologies
• Evolution des architectures
• Dev vs. Ops
• Dev && Ops
• Continuous Integration/Continuous Deployement (Delivery) (CI/CD)
• Technologies DevOps
• Pratiques DevOps
• Culture DevOps
• Avantages DevOps
• Outils
• Solution Finale
© 2023-2024 – Module DevOps – Introduction devOps 3
Horaire
• Durée Totale : 30 heures
• Séances : 10 séances
• Cours : 9 heures
• TP : 15 heures
• Examen : 6 heures
• * Vendredi : 13h45
© 2023-2024 – Module DevOps – Introduction devOps 4
Evaluation
• L’évaluation se fait tout au long du module, et non pas
uniquement à la fin.
• La moyenne du module est calculée comme suit :
Moyenne = Note Examen pratique * 60% + Note contrôle
continu * 40 %
• La note de contrôle continu tiens en considération
l’Assiduité, la Participation, les TP à faire en cours
(avancement sur votre projet en classe chaque semaine).
• L’Examen sera pratique au cours des deux dernières
séances (S9 et S10).
• L’Examen de rattrapage est pratique
© 2023-2024 – Module DevOps – Introduction devOps 5
Introduction
DevOps?
© 2023-2024 – Module DevOps – Introduction devOps 6
Introduction
Qui utilise DevOps ?
© 2023-2024 – Module DevOps – Introduction devOps 7
Introduction
• 99 % des organisations déclarent avoir eu un
impact positif après la mise en œuvre de
DevOps dans leur organisation en 2020.
• 61 % des entreprises ont déclaré que DevOps
les avait aidées de la meilleure façon possible à
produire des livrables de meilleure qualité.
• Près de 49 % des organisations ont signalé une
réduction des délais de mise sur le marché des
logiciels et des services.
Les revenus mondiaux de la gestion des conteneurs devraient passer d'une petite base de
465,8 millions de dollars en 2020 à 944 millions de dollars en 2024.
70 % des organisations exécuteront efficacement deux applications conteneurisées ou plus.
© 2023-2024 – Module DevOps – Introduction devOps 8
Introduction
Quels sont les problèmes qui ont donné naissance à DevOps ?
• Ca marche chez moi et pas chez toi!
• Les déploiements risqués
• Le peur du changement
• Quel est le problème ?
• Retardons la livraison à la semaine prochaine ( corrigeons nos bugs!)
• Nous devons refaire les taches de ces 3 derniers jours !
© 2023-2024 – Module DevOps – Introduction devOps 9
Evolution des Méthodologies
• Méthodologie Classique / Lourde (Méthode RUP, 2TUP, …) =>
Méthodologie Agile (Méthode Scrum, XP, …)
• Une méthode agile est un ensemble de pratiques de pilotage
et de réalisation de projets, qui met en avant la communication
entre les membres de l’équipe de Développement, la
communication avec le client, l’adaptation au changement, et
s'affranchit (se libère) des outils et des process lourds.
• Il s’agit de travailler en mode itératif (Sprint). Chaque Sprint peut
être considéré comme un projet dont le Cycle de vie est en V.
© 2023-2024 – Module DevOps – Introduction devOps 10
Evolution des Architectures
• Architecture Monolithique => Architecture en Microservices
© 2023-2024 – Module DevOps – Introduction devOps 11
Apport du DevOps
• Utiliser une méthode Agile, et une architecture en Microservice
résout énormément de problèmes. Mais …
• Comment faire travailler étroitement les équipes de production
avec les équipes de développement?
• Comment automatiser au maximum les différentes phases du
Projet ?
• Comment pouvoir livrer régulièrement et fréquemment
(comment éviter les retards et les risques liés au déploiement) ?
• Comment diminuer la peur du changement (comment
augmenter la confiance de l’équipe de Production en l’équipe
de Développement) ?
© 2023-2024 – Module DevOps – Introduction devOps 12
Définition DevOps
• DevOps est la contraction des deux termes anglais
development (développement) et operations IT
(exploitation).
• DevOps vise à réduire la friction organisationnelle
entre les développeurs et l’équipe opérationnelle.
• L’ approche DevOps vise une meilleure
communication entre les deux équipes en
automatisant les fonctions souvent distinctes de ces
équipes en un seul processus intégré et continu afin
d’optimiser la production des livrables.
© 2023-2024 – Module DevOps – Introduction devOps 13
Dev vs. Ops
3 équipes sont indispensables pour la bonne conduite d’un projet :
équipe business, équipe développement et équipe opérationnel.
L’interaction entre ces 3 équipes est loin d’etre évidente
© 2023-2024 – Module DevOps – Introduction devOps 14
Dev vs. Ops
Développement Opérations
Planning et la date de livraison Qualité de service et disponibilité
Couts de développement Cout d’exploitation
Releases planning Changements, Incidents
Dernières technologies Technologies standards
Environnement de développement Environnements de production
Fréquents et importants Minimise le changement en
changements production
Méthodes agiles Organisation et processus structurés
Les objectifs et les visions des deux équipes développement et
opérations sont différentes.
© 2023-2024 – Module DevOps – Introduction devOps 15
Dev vs. Ops
Dev: Equipes de développeurs Ops: Equipes en charge de la mise
logiciels en production des produits
=> Modification aux moindres => Stabilité du système, qualité
coûts, le plus rapidement possible
L'automatisation est au cœur de l'approche DevOps
© 2023-2024 – Module DevOps – Introduction devOps 16
Dev vs. Ops
© 2023-2024 – Module DevOps – Introduction devOps 17
Dev vs. Ops
La culture DevOps joue le rôle de médiateur entre les deux équipes dev et ops.
L’ objectif est de transformer la tension entre les deux équipes en une
collaboration saine.
© 2023-2024 – Module DevOps – Introduction devOps 18
Dev vs. Ops
L’agilité et les pratiques DevOps interviennent pour briser les frontières
entre les différents collaborateurs (business, dev,ops).
© 2023-2024 – Module DevOps – Introduction devOps 19
Dev && Ops
La solution parfaite à intérêt mutuelle entre les deux parties (dev et ops)
est de coordonner les efforts pour que tous les objectifs des équipes
soient réalisés avec moindre cout et dans le plus bref des délais.
© 2023-2024 – Module DevOps – Introduction devOps 20
Dev && Ops
Le changement est le point de désaccord entre les deux équipes. DevOps
intervient pour assurer à la fois la possibilité d’innover les fonctionnalités
tout en étant sur que la solution déployée est stable sans erreurs.
© 2023-2024 – Module DevOps – Introduction devOps 21
Dev && Ops
Création d’un pipeline automatisé entre les deux équipe appelé CI/CD
(continuous integration/ continuous delivery ou deployement).
© 2023-2024 – Module DevOps – Introduction devOps 22
CICD
La mise en œuvre du modèle DevOps a pour résultat majeur la création
d'un pipeline d’intégration et de déploiement continu (CI/CD).
L'approche CI/CD vous aide à fournir régulièrement des applications aux
clients et à valider la qualité des logiciels en réduisant au maximum les
interventions humaines.
© 2023-2024 – Module DevOps – Introduction devOps 23
CICD
L'approche CI/CD garantit une automatisation et une surveillance
continue tout au long du cycle de vie des applications, des phases
d'intégration et de test jusqu’à la phase de déploiement.
Les problèmes et les bugs peuvent être identifiés rapidement
optimisant le cout de la modification.
La réussite de cette approche repose sur le succès de la collaboration
agile entre les deux équipes dev et ops.
© 2023-2024 – Module DevOps – Introduction devOps 24
CICD
Il existe 3 processus DevOps essentiels à devops (CI/CD/CD) :La
pipeline sera optimisée avec le monitoring (OB) et le test continu (CT)
© 2023-2024 – Module DevOps – Introduction devOps 25
CICD
Intégration continu
L’intégration continu est un processus consistant à compiler, tester et
déployer sur un environnement d’intégration.
L’objectif est de détecter les régressions (bugs) du livrable à l’avance pour
les fixer en s’appuyant sur des outils.
© 2023-2024 – Module DevOps – Introduction devOps 26
CICD
Intégration continu
A chaque modification du code, le processus de build, lancement des
tests unitaires et vérification de la qualité du code est lancé.
Les développeurs sont avertis en temps réel en cas d’erreur.
© 2023-2024 – Module DevOps – Introduction devOps 27
CICD
Livraison continu
C’est la suite logique à l’étape d’intégration continue.
La livraison continue est le niveau intermédiaire. Le but de cette étape
est de décider si un artéfact est prêt pour aller en production. La
validation requiert de tester en continu le programme pour s’assurer
qu’il respecte les critères de qualité et les attentes du client.
© 2023-2024 – Module DevOps – Introduction devOps 28
CICD
Déploiement continu
Le déploiement continu est un processus de production.
L’objectif est de compiler, tester et déployer une application en
production. Ce processus exige que les deux process Intégration continu
et Livraison continu aient été réalisés avec succès.
Le déploiement est réalisé par un simple click (dans la majorité des cas)
ou automatique (avec un niveau de fiabilité maximal).
Il est primordiale de mesurer les impacts suite au déploiement grâce à
des outils de supervision. En cas de détection de problèmes, un
processus de retour en arrière doit être exécuté.
© 2023-2024 – Module DevOps – Introduction devOps 29
CICD
Déploiement continu
© 2023-2024 – Module DevOps – Introduction devOps 30
CICD
Pour passer au client final, le livrable passe par plusieurs environnements :
[Link] de Développement (DEV)
[Link] d'Intégration (INT)
[Link] de Test (UAT - User Acceptance Testing)
[Link] de Qualification (QUALIF)
[Link] de Pré-Production (PREPROD)
6. Environnement de Production (PROD)
© 2023-2024 – Module DevOps – Introduction devOps 31
Technologies DevOps
DevOps : pipeline automatisé d’outils
© 2023-2024 – Module DevOps – Introduction devOps 32
Technologies DevOps
Lien important qui montre les outils les plus utilisés en DevOps,
suivant les technologies utilisées :
[Link]
© 2023-2024 – Module DevOps – Introduction devOps 33
Pratiques DevOps
Pratique 1: Travailler en mode collaboratif
Pratique 2: L’intégration continue
Pratique 3: L’automatisation des tests
Pratique 4: La livraison continue
Pratique 5: Gestion de la configuration automatisée
Pratique 6: La planification continu
Pratique 7: La gestion des demandes et des RFC (request for change)
Pratique 8: Le cycle de vie d’une application
Pratique 9: La gestion des domaines applicatifs
Pratique 10: Tableaux de bord automatisés
© 2023-2024 – Module DevOps – Introduction devOps 34
Culture DevOps
© 2023-2024 – Module DevOps – Introduction devOps 35
Avantages DevOps
© 2023-2024 – Module DevOps – Introduction devOps 36
Outils DevOps
Maven
Maven est un outil de construction de projets (build) open source
développé par la fondation Apache.
© 2023-2024 – Module DevOps – Introduction devOps 37
Outils DevOps
JUnit
JUnit est un framework de test unitaire pour le langage de programmation
java.
© 2023-2024 – Module DevOps – Introduction devOps 38
Outils DevOps
GIT
Git est un logiciel de gestion de versions décentralisé
© 2023-2024 – Module DevOps – Introduction devOps 39
Outils DevOps
Sonar
SonarQube (précédemment Sonar) est un logiciel libre permettant
de mesurer la qualité du code source en continu.
© 2023-2024 – Module DevOps – Introduction devOps 40
Outils DevOps
Nexus
Nexus est un gestionnaire de référentiel qui organise, stocke et
distribue les artefacts nécessaires au développement.
© 2023-2024 – Module DevOps – Introduction devOps 41
Outils DevOps
Jenkins
Jenkins est un outil logiciel open source d’intégration continue.
A chaque modification de code d'une application dans le gestionnaire de
configuration, Jenkins se charge automatiquement de la recompiler, et de la
tester.
© 2023-2024 – Module DevOps – Introduction devOps 42
Outils DevOps
• Docker
Docker est un outil qui peut empaqueter une application et ses
dépendances dans un conteneur isolé, qui pourra être exécuté sur
n'importe quel serveur.
© 2023-2024 – Module DevOps – Introduction devOps 43
Outils DevOps
• Grafana / Prometheus
• Grafana est un logiciel libre sous licence GNU Affero General Public License qui
permet la visualisation de données. Il permet de réaliser des tableaux de bord
et des graphiques depuis plusieurs sources dont des bases de données
temporelles comme Graphite, InfluxDB et OpenTSDB.
• Prometheus est un logiciel libre de surveillance informatique et générateur
d'alertes. Il enregistre des métriques en temps réel dans une base de données
de séries temporelles en se basant sur le contenu de point d'entrée exposé à
l'aide du protocole HTTP.
© 2023-2024 – Module DevOps – Introduction devOps 44
Outils DevOps
Grafana / Prometheus
L'exemple suivant montre un tableau de bord Grafana qui interroge Prometheus pour
obtenir des données :
© 2023-2024 – Module DevOps – Introduction devOps 45
Installation des outils
Pour la prochaine séance, il faut installer :
• Intellij sur votre machine locale
• JDK 17 sur votre machine locale
• MySQL sur votre machine locale
• Virtual box/Vagrant avec une machine virtuelle
Centos7 ou ubuntu dans Vagrant ou bien (avec
ubuntu/ vmware) ou directement sur votre machine
ubuntu)
© 2023-2024 – Module DevOps – Introduction devOps 46
Solution finale (proposition 1 )
© 2023-2024 – Module DevOps – Introduction devOps 47
Solution finale (proposition 2 )
© 2023-2024 – Module DevOps – Introduction devOps 48
Solution finale (proposition 3 )
© 2023-2024 – Module DevOps – Introduction devOps 49
Solution finale
© 2023-2024 – Module DevOps – Introduction devOps 50
Si vous avez des questions, n’hésitez pas à
nous contacter :
Département Informatique
UP Architectures des Systèmes
d'Information
Bureau E204
© 2023-2024 – Module DevOps – Introduction devOps 51