1 - Introduction DevOps

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 52

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 :

https://www.devopsschool.com/path/

• 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

Vous aimerez peut-être aussi