Pipeline DevOps: Concepts and Implementation

Page 1 sur 23Lecteur de document UniversityLib

Pipeline DevOps: Concepts and Implementation

DevOps Methodology and Practices · course

Voir tous les documents en génie logiciel

PIPELINE DEVOPS

YASSINE NOURI

UVT/ISI 2021

PLAN

Un pipeline DEVOPS, qu'est-ce que c'est ?

Phases du pipeline DEVOPS

Comment créer un pipeline DevOps?

@YNOURI DEVOPS UVT/ISI

10/26/2021

2

“The beginning of wisdom is the definition of terms”

Socrates

@YNOURI DEVOPS UVT/ISI

10/26/2021

3

UN PIPELINE DEVOPS, QU'EST-CE QUE C'EST ?

 Un pipeline DevOps est un ensemble de pratiques

que les équipes de développement (Dev) et

d'exploitation (Ops) mettent en œuvre pour créer,

tester et déployer des logiciels plus rapidement et

plus facilement.

 L'un des principaux objectifs d'un pipeline est de

maintenir le processus de développement logiciel

organisé et ciblé dans les différent environnement:

dev, test, preprod et prod.

@YNOURI DEVOPS UVT/ISI

10/26/2021

4

PHASES DU PIPELINE

 Planifier (Plan) : cette étape permet de définir les spécifications fonctionnelles et opérationnelles suite à des

retours clients ou tout simplement à l’ajout d’une nouvelle fonctionnalité. Il s’agit ensuite de planifier ses sprints.

 Développer (Code) : Ensuite, il faut développer la fonctionnalité en utilisant un gestionnaire version pour

faciliter le travail en équipe.

 Intégrer/Compiler (Integrate/Build) : Le code est ensuite compilé pour obtenir un fichier exécutable à

déployer sur différents environnements

 Tester (Test) : Cette étape est cruciale pour détecter d’éventuels bug ou dysfonctionnement, mais aussi pour

vous assurer que votre application fonctionne correctement face des pics d’activité (connexions simultanées)

 Livrer (Release) : lorsque tous les tests sont réalisés et que le logiciel est stable, le logiciel peut être livré.

 Déployer (Deploy) : installer le logiciel dans les différents environnements (pré-prod, prod etc.)

 Superviser/Monitorer (Operate & Monitor) : Enfin, cette dernière étape permet de s’assurer que le logiciel

et l’infrastructure soient opérationnels quelque soit l’environnement.

@YNOURI DEVOPS UVT/ISI

10/26/2021

5

PHASES DU PIPELINE

 Et cela pour assurer la continuité de:

✓ Intégration et Livraison: CI/CD.

✓ Tests: CT.

✓ Déploiement.

✓ Opérations.

✓ Monitoring.

✓ Feedback.

@YNOURI

DEVOPS

UVT/ISI

10/26/2021

6

PHASES DU PIPELINE

@YNOURI DEVOPS UVT/ISI

10/26/2021

7

Publicité

L'INTÉGRATION CONTINUE: CI

 L'intégration continue (CI) est une méthode

d'intégration de petits morceaux de code de

plusieurs développeurs dans un référentiel de code

partagé aussi souvent que possible.

 Avec une

stratégie CI, vous pouvez

tester

automatiquement le code pour détecter les erreurs

sans avoir à attendre que les autres membres de

l'équipe contribuent leur code.

@YNOURI DEVOPS UVT/ISI

10/26/2021

8

LA LIVRAISON CONTINUE: CD

 C'est un développement évolutif des principes Agile.

La livraison continue (CD) est une extension de CI.

Cela implique d'accélérer le processus de publication

en encourageant les développeurs à publier le code

en production par blocs incrémentiels.

 De cette façon, les développeurs peuvent mettre à

fois par jour, offrant

jour

continuellement de la valeur aux utilisateurs.

le produit plusieurs

 Ceci est réalisé par un haut niveau d'automatisation

des tests et du déploiement.

@YNOURI DEVOPS UVT/ISI

10/26/2021

9

LE DÉPLOIEMENT CONTINU

 Le déploiement

la

continu succède à

livraison

continue, et les mises à jour qui passent avec succès

les tests automatisés sont automatiquement mises en

production. En conséquence,

il permet plusieurs

déploiements de production en une seule journée.

Alors que l'objectif de la livraison continue est de

préparer instantanément votre logiciel pour sa sortie,

le travail réel de le pousser en production est manuel.

le déploiement continu. Et,

C'est

comme mentionné précédemment, si les mises à jour

seront

peuvent

automatiquement via un déploiement continu.

là qu'intervient

déployées,

elles

être

le

 Le principal avantage du déploiement continu est la

possibilité de lancer la production en toute sécurité

et rapidement de manière durable.

@YNOURI DEVOPS UVT/ISI

10/26/2021

10

L’EXPLOITATION CONTINUE: CO

Publicité

 Une

stratégie

continue

complète permet de maintenir une disponibilité

maximale des applications et des environnements.

d’opération/exploitation

 L'objectif est que les utilisateurs ne soient pas

conscients de la publication constante de mises à

jour de code, de corrections de bogues et de

correctifs.

 Une stratégie d'exploitation continue peut aider à

les problèmes de temps d'arrêt et de

éviter

disponibilité lors de la publication du code.

@YNOURI DEVOPS UVT/ISI

10/26/2021

11

LE MONITORING CONTINU: CM

 La surveillance continue (CM), également appelée

Continuous Control Monitoring (CCM), est un

processus automatisé qui permet aux équipes

DevOps de détecter les menaces de conformité et

de sécurité dans

leur

infrastructure de développement logiciel.

leur cycle de vie et

 Les données

ainsi

recueillies

à partir de la

surveillance des performances et des problèmes

des

être utilisées pour

découvrir les domaines d'amélioration.

applications peuvent

@YNOURI DEVOPS UVT/ISI

10/26/2021

12

LES TESTS CONTINUS: CT

 CT permet aux entreprises d'effectuer des tests

chaque étape du processus de

à

automatisés

développement.

 Une stratégie CT permet des évaluations rapides des

risques de publication des intégrations de code.

 Les

tests

commencent

à

s'exécuter

automatiquement une fois le code intégré.

@YNOURI DEVOPS UVT/ISI

10/26/2021

13

LE FEEDBACK CONTINU:

 Une fois le code déployé avec succès, des feedbacks

continus montrent l'impact de la version sur les

utilisateurs finaux.

 En automatisant les feedbacks, l'entreprise obtient

des informations et des informations sur la façon

Publicité

à la nouvelle

dont

version.

les utilisateurs

réagissent

 Si des problèmes critiques sont découverts,

les

équipes de développement en seront informées et

pourront immédiatement commencer à travailler

sur les corrections de bogues.

@YNOURI DEVOPS UVT/ISI

10/26/2021

14

COMMENT CRÉER UN PIPELINE DEVOPS?

1

Choisir l’outil CI/CD:

 Pour les entreprises qui commencent tout juste à créer un pipeline DevOps, la première chose à faire est de

choisir un outil CI/CD.

 Chaque entreprise a des besoins et des exigences différents, donc tous les outils ne seront pas adaptés à toutes

les situations.

 Bien qu'il existe de nombreux outils CI/CD disponibles comme CircleCI et GitlabCI, Jenkins est l'un des outils les

plus couramment utilisés. Jenkins propose des centaines de plugins et d'outils fournis par la communauté, il peut

donc être facilement personnalisé pour bien fonctionner pour de nombreuses applications différentes. Gitlab

présente l’avantage de ready-to-use, créer un compte gratuit et l’utiliser pour les petits projets (pour l’usage pro,

faut acheter un forfait).

@YNOURI

DEVOPS

UVT/ISI

10/26/2021

15

COMMENT CRÉER UN PIPELINE DEVOPS?

2

Configurer un environnement de contrôle de source:

 Les entreprises travaillant avec de grandes équipes de développement ont besoin d'un endroit dédié pour stocker

et partager le code en constante évolution, éviter les conflits de fusion et créer facilement différentes versions de

l'application ou du logiciel.

 Les outils de gestion de contrôle de source tels que Git permettent une collaboration efficace avec les membres

de l'équipe de n'importe où dans le monde, en stockant le code de chaque développeur dans un référentiel

partagé séparé.

 GitHub est de loin le site du code-hosting le plus populaire. GitLab et BitBucket sont des alternatives puissantes.

@YNOURI DEVOPS UVT/ISI

10/26/2021

16

COMMENT CRÉER UN PIPELINE DEVOPS?

3

Configurer un serveur de build:

 La configuration d'un serveur de build, également appelé serveur d'intégration continue (CI), est une prochaine

étape cruciale avant que votre projet ne puisse suivre le reste du pipeline.

 Un serveur de build est un environnement centralisé, stable et fiable pour construire des projets de

développement distribués.

 Les serveurs de build récupèrent le code intégré des référentiels de code source, servent de point d'intégration

pour tous les développeurs et fournissent un environnement intact pour s'assurer que le code fonctionne

réellement.

 Comme les autres outils mentionnés ci-dessus, les entreprises peuvent choisir parmi de nombreux serveurs de

build, chacun avec des fonctionnalités différentes. Jenkins est l'une des solutions les plus populaires pour créer des

builds. D'autres solutions incluent TeamCity, Travis-CI et go.cd.

@YNOURI DEVOPS UVT/ISI

10/26/2021

17

COMMENT CRÉER UN PIPELINE DEVOPS?

4

Publicité

Configurer ou créer des outils d'automatisation pour les tests:

 Une fois le code configuré sur le serveur de build, il est temps de le tester ! Dans la phase de test, les

le code sans erreur continue dans le

développeurs exécutent des tests automatisés pour s'assurer que seul

pipeline jusqu'à l'étape de déploiement.

 Plusieurs tests automatisés sont effectués au stade des tests, notamment des tests unitaires, fonctionnels,

d'intégration et de régression. La plupart des tests sont exécutés via CI et exécutés les uns après les autres.

 Pour commencer à exécuter des tests, TestComplete est une bonne option. Il dispose d'un plugin Jenkins qui

vous permet d'exécuter des tests dans un projet Jenkins Pipeline avec des fonctionnalités supplémentaires telles

que le stockage de l'historique des tests et vous permettant de voir les résultats directement à partir de Jenkins.

Plusieurs autres outils sont disponible comme Selenium et JUnit,

@YNOURI DEVOPS UVT/ISI

10/26/2021

18

COMMENT CRÉER UN PIPELINE DEVOPS?

5

Déployer en production:

 La dernière étape de votre pipeline est l'étape de déploiement où votre logiciel est prêt à être mis en production.

 Le moyen le plus simple de déployer le code consiste à configurer votre serveur de build, tel que Jenkins, pour

exécuter un script pour déployer votre application. Cela peut être configuré pour s'exécuter automatiquement

ou vous pouvez le faire manuellement.

 Le déploiement automatique ne doit être utilisé que si vous êtes pleinement convaincu que le mauvais code ne se

retrouvera pas en production. Vous pouvez lier cela à vos builds de test, afin que le script ne s'exécute que si tous

les tests ont été passés.

@YNOURI DEVOPS UVT/ISI

10/26/2021

19

@YNOURI DEVOPS UVT/ISI

10/26/2021

20

EXEMPLE

@YNOURI DEVOPS UVT/ISI

10/26/2021

21

EXEMPLE

1.

2.

Les développeurs push leurs changements/modifications du code dans Github.

Jenkins télécharge le projet dans le workspace.

3. Dans cette étape Jenkins réalisera en parallèle la compilation du projet Maven (génération des *.class) et l’analyse statique du code avec le plugin

CheckStyle en utilisant des agents Docker de Jenkins.

Exécution des Test Unitaire en utilisant JUnit et Mockito.

Exécution des Test d’intégration en utilisant JUnit et Mockito.

4.

5.

6. Dans cette étape on trouve la génération de la documentation et l’exécution en parallèle d’un ensemble des analyses du code en utilisant

7.

8.

9.

SonarQube, PMD et FindBugs.

Stockage des artéfacts dans le repository Nexus.

Provisioning avec Ansible. C’est à dire la préparation de l’environnement afin d’assurer l’installation du jdk et tomcat sur nos serveurs.

9.1. Déploiement de l’artéfact dans le serveur de développement (staging server) qui est un conteneur Docker avec l’OS Ubuntu.

9.2. Déploiement de l’artéfact dans le serveur de production qui est une instance EC2 dans notre cas.

@YNOURI DEVOPS UVT/ISI

10/26/2021

22

THANK YOU

[email protected]