Introduction DevOps
Département Informatique
UP JavaEE / .NET
UP ASI (Ex JavaEE .Net)
Bureau E204
© 2022-2023 – Module DevOps – Introduction DevOps 1
Plan du Cours
- Introduction ( plan module DevOps, horaire, évaluation, définition DevOps)
- Dev vs Ops
- Dev && Ops
- Continuos Integration / Continuos Deployement (CI/CD)
- Technologies DevOps
- Pratiques DevOps
- Culture DevOps
- Avantages DevOps
- Outils
- Solution finale
© 2022-2023 – Module DevOps – Introduction DevOps 2
Contenu du Module DevOps
• Introduction DevOps
• Jenkins (Serveur d’intégration continue)
• Introduction à Docker
• Git
• Nexus (Gestion des livrables)
• Test unitaire (JUnit)
• Sonar (Qualité de code)
• Docker avancé (Docker compose + Docker volume)
• Grafana et Prometheus
• Validation projet
© 2022-2023 – Module DevOps – Introduction DevOps 3
Horaires
• Durée Totale : 30 heures
• Séances : 10 séances
– Cours : 09 heures
– TP : 15 heures
– Examen : 06 heures
• Durée de chaque Séance : 3 heures
(02h00 synchrone + 01h00 asynchrone)
* Vendredi : 13h45
© 2022-2023 – 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 * 100%
• La note de l’examen tient en considération l’Assiduité, la
Participation, les TP à faire en cours (avancement sur votre projet
chaque semaine)
• L’Examen sera pratique au cours des deux dernières séances (S9 et
S10).
• L’examen de rattrapage est pratique.
© 2022-2023 – Module DevOps – Introduction DevOps 5
Introduction
C’est quoi DevOps ?
© 2022-2023 – Module DevOps – Introduction DevOps 6
Introduction – Cycle de vie d’un projet
0
Demande (Besoin)
© 2022-2023 – Module DevOps – Introduction DevOps 7
Introduction – Environnements
DEV INT UAT
QUALIF PREPROD PROD
1. Environnement de Développement (DEV): C'est l'environnement où les développeurs créent et modifient
le code source de l'application. Il s'agit d'un environnement isolé où les développeurs travaillent sur leurs
propres machines pour développer et tester le code.
2. Environnement d'Intégration (INT): L'environnement d'intégration est l'endroit où les différents
composants logiciels développés par les membres de l'équipe sont combinés pour vérifier leur
compatibilité et leur fonctionnement ensemble. Cela permet de détecter et de résoudre les problèmes
d'intégration.
© 2022-2023 – Module DevOps – Introduction DevOps 8
Introduction – Environnements
DEV INT UAT
QUALIF PREPROD PROD
3. Environnement de Test (UAT - User Acceptance Testing): L'environnement de test est utilisé pour effectuer
des tests approfondis de l'application, généralement par des testeurs. L'objectif est de s'assurer que
l'application répond aux exigences spécifiées par les utilisateurs et de corriger les erreurs avant la mise en
production.
4. Environnement de Qualification (QUALIF): L'environnement de qualification est principalement utilisé
pour effectuer des tests de qualification. L'objectif est de vérifier que l'application répond à un ensemble
spécifique de normes, de réglementations ou de critères de qualité définis. Ces normes peuvent varier en
fonction de l'industrie ou du domaine d'application.
© 2022-2023 – Module DevOps – Introduction DevOps 9
Introduction – Environnements
DEV INT UAT
QUALIF PREPROD PROD
5. Environnement de Pré-Production (PREPROD): L'environnement de pré-production est davantage axé sur
les tests finaux de l'application avant son déploiement en production. L'objectif est de s'assurer que
l'application fonctionne correctement dans un environnement similaire à celui de production.
6. Environnement de Production (PROD): C'est l'environnement dans lequel l'application est déployée et
utilisée par les utilisateurs finaux. Il s'agit de l'environnement "en direct" où l'application est opérationnelle et
accessible aux utilisateurs.
© 2022-2023 – Module DevOps – Introduction DevOps 10
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!)
© 2022-2023 – Module DevOps – Introduction DevOps 11
Introduction
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.
© 2022-2023 – Module DevOps – Introduction DevOps 12
Avant DevOps
© 2022-2023 – Module DevOps – Introduction DevOps 13
Avant DevOps
© 2022-2023 – Module DevOps – Introduction DevOps 14
Dev vs Ops
• 3 équipes sont indispensables pour la bonne conduite d’un projet : équipe business,
équipe développement et équipe opérationnelle.
• L’interaction entre ces 3 équipes est loin d’être évidente
© 2022-2023 – Module DevOps – Introduction DevOps 15
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 changements Minimise le changement en 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.
© 2022-2023 – Module DevOps – Introduction DevOps 16
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
© 2022-2023 – Module DevOps – Introduction DevOps 17
Dev vs Ops
© 2022-2023 – Module DevOps – Introduction DevOps 18
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
© 2022-2023 – Module DevOps – Introduction DevOps 19
Dev vs Ops
L’agilité et les pratiques DevOps interviennent pour briser les frontières entre
les différents collaborateurs.
© 2022-2023 – Module DevOps – Introduction DevOps 20
Dev && Ops
La solution parfaite à intérêt mutuel entre les deux parties est de coordonner
les efforts pour que tous les objectifs des équipes soient réalisé avec moindre
cout et dans le plus bref des délais
© 2022-2023 – Module DevOps – Introduction DevOps 21
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 sûr que la
solution déployée est stable sans erreurs
© 2022-2023 – Module DevOps – Introduction DevOps 22
Dev && Ops
Création d’un pipeline automatisé entre les deux équipes appelées CI/CD
(continuous integration/ continious delivery (ou deployement)
© 2022-2023 – Module DevOps – Introduction DevOps 23
Avantages de DevOps
RÉDUCTION DU OPTIMISATION AMÉLIORATION REPLACER L’HUMAIN
CYCLE DES DES RESSOURCES DE LA QUALITÉ AU CŒUR DU
LIVRAISONS DISPOSITIF
© 2022-2023 – Module DevOps – Introduction DevOps 24
CI/CD
• 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.
© 2022-2023 – Module DevOps – Introduction DevOps 25
CI/CD
• L'approche CI/CD garantit une automatisation et une
surveillance continues 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
en 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.
© 2022-2023 – Module DevOps – Introduction DevOps 26
Continuous Integration/ Continuous Deployement (CI/CD)
Il existe 3 processus DevOps :
• Intégration continue
• Livraison continue
• Déploiement continu
© 2022-2023 – Module DevOps – Introduction DevOps 27
Continuous Integration/ Continuous Deployement (CI/CD)
Intégration continue :
• L’intégration continu est un processus consistant à compiler, tester et déployer
sur un environnement d’intégration (Environnement de dev).
• L’objectif est de détecter les régressions (bugs) du livrable à l’avance pour les
fixer en s’appuyant sur des outils.
© 2022-2023 – Module DevOps – Introduction DevOps 28
Continuous Integration/ Continuous Deployement (CI/CD)
Intégration continue :
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
© 2022-2023 – Module DevOps – Introduction DevOps 29
Continuous Integration/ Continuous Deployement (CI/CD)
Livraison continue
C’est la suite logique à l’étape d’intégration continue
La livraison continue est une discipline où l'application est construite de manière
à pouvoir être mise en production à n'importe quel moment.
C’est un processus automatisé visant à compiler, tester et livrer (déployer) une
application à chaque modification apportée par un programmeur
© 2022-2023 – Module DevOps – Introduction DevOps 30
Continuous Integration/ Continuous Deployement (CI/CD)
Déploiement continu :
Le déploiement continu est un processus de production, L’objectif est de
compiler 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.
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é
© 2022-2023 – Module DevOps – Introduction DevOps 31
Continuous Integration/ Continuous Deployement (CI/CD)
Déploiement continu :
© 2022-2023 – Module DevOps – Introduction DevOps 32
Livraison continue vs. déploiement continu
• On parle de livraison continue lorsque les développeurs livrent souvent et de manière
régulière du nouveau code à tester aux équipes de l'assurance qualité (QA) et de
l'exploitation. Cette démarche suppose généralement un environnement de test
semblable à l'environnement de production et implique souvent un laps de temps
entre la publication et le moment où une version est testée, où les modifications sont
manuellement acceptées et où le nouveau code est mis en production.
• À l'inverse, le déploiement continu ne nécessite aucune évaluation ni vérification
manuelles des changements de code dans l'environnement de test, puisque les tests
automatisés sont intégrés très tôt dans le processus de développement et se
poursuivent tout au long des phases du lancement. Le déploiement continu présente
un avantage certain : l'absence d'attente entre la réussite des tests d'un changement
de code aux niveaux de l'application et de la plateforme et sa mise en production.
© 2022-2023 – Module DevOps – Introduction DevOps 33
Technologies DevOps
DevOps : pipeline automatisé d’outils
© 2022-2023 – Module DevOps – Introduction DevOps 34
Outils DevOps
• Lien important qui montre les outils les plus utilisés en DevOps,
suivant les technologies utilisées :
[Link]
• Il suffit de choisir la technologie : Java, Python, .NET … pour
avoir les outils DevOps les plus utilisés pour ces technologies.
© 2022-2023 – Module DevOps – Introduction DevOps 35
Outils DevOps
• Dans ce cours, nous allons nous intéresser à :
✓ Virtual Box / Vagrant / Ubuntu
✓ Jenkins ✓ Git (Github/GitLab)
✓ Docker ✓ Sonar
✓ Maven ✓ Nexus
✓ JUnit ✓ Grafana / Prometheus
• Ces outils seront appliqués à deux projets Spring Boot et Angular
déjà existants, que nous allons enrichir.
© 2022-2023 – Module DevOps – Introduction DevOps 36
Outils
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
© 2022-2023 – Module DevOps – Introduction DevOps 37
Outils
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
© 2022-2023 – Module DevOps – Introduction DevOps 38
Outils
GIT
Git est un logiciel de gestion de versions décentralisé.
© 2022-2023 – Module DevOps – Introduction DevOps 39
Outils
GIT
© 2022-2023 – Module DevOps – Introduction DevOps 40
Outils
Nexus
Nexus est un gestionnaire de référentiel qui organise, stocke et distribue les artefacts
nécessaires au développement
© 2022-2023 – Module DevOps – Introduction DevOps 41
Outils
Junit
JUnit est un framework de test unitaire pour le langage de programmation java.
© 2022-2023 – Module DevOps – Introduction DevOps 42
Outils
Sonar
SonarQube est un logiciel libre permettant de mesurer la qualité du code source
en continu (Revue de code automatique).
© 2022-2023 – Module DevOps – Introduction DevOps 43
Outils
Maven
C’est un outil de construction de projets (build) open source développé par la
fondation Apache.
© 2022-2023 – Module DevOps – Introduction DevOps 44
Outils
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.
© 2022-2023 – Module DevOps – Introduction DevOps 45
Outils
Grafana / Prometheus
• L'exemple suivant montre un tableau de bord Grafana qui interroge
Prometheus pour obtenir des données :
© 2022-2023 – Module DevOps – Introduction DevOps 46
Solution finale
© 2022-2023 – Module DevOps – Introduction DevOps 47
Installation des outils
Pour la prochaine séance:
✓ Installer en suivant le tuto que nous vous enverrons :
• Virtual box
• Vagrant
• Une machine virtuellle Ubuntu dans Vagrant
© 2022-2023 – Module DevOps – Introduction DevOps 48
Résumé
© 2022-2023 – Module DevOps – Introduction DevOps 49
Résumé
© 2022-2023 – Module DevOps – Introduction DevOps 50
Introduction DevOps
Si vous avez des questions, n’hésitez pas à nous
contacter :
Département Informatique
UP Architectures des Systèmes d'Information
Bureau E204
© 2022-2023 – Module DevOps – Introduction DevOps 51
Introduction DevOps
© 2022-2023 – Module DevOps – Introduction DevOps 52