SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
DEVOPS : Chaîne de production
Ma vision du déploiement
Nicolas Wallerand (Software developer)
n.wallerand@gmail.com
DEVOPS
Le devops est un mouvement visant à l'alignement de l'ensemble des équipes du système d'information sur un objectif commun, à
commencer par les équipes de dev ou dev engineers chargés de faire évoluer le système d'information et les ops ou ops engineers
responsables des infrastructures (exploitants, administrateurs système, réseau, bases de données,...).
Pour accélérer le cycle de vie des applications et leur qualité.
Donc Optimiser le TIME TO MARKET
Automatiser le déploiement
PIPELINE
Un PIPELINE est un ensemble d’étapes indépendantes (jobs) dans le processus de développement et qui
augmentent le degré de confiance à chacun des niveaux.
Le PIPELINE est différent en fonction de l’architecture Serveur
Application Monolithique
Application cloud/Architecture microservice
Le pipeline se généralise dans les outils
● Bitbucket : https://bitbucket.org/product/features/pipelines
● Jenkins : https://jenkins.io/projects/blueocean/
● Travis : https://travis-ci.org/
● Gitlab : https://about.gitlab.com/gitlab-ci/
Code Base 12Factor
12 factors
I. Base de code Une base de code suivie avec un système de contrôle de version, plusieurs déploiements
II. Dépendances Déclarez explicitement et isolez les dépendances
III. Configuration Stockez la configuration dans l’environnement
IV. Services externes Traitez les services externes comme des ressources attachées
V. Build, release, run Séparez strictement les étapes d’assemblage et d’exécution
VI. Processus Exécutez l’application comme un ou plusieurs processus sans état
VII. Associations de ports Exportez les services via des associations de ports
VIII. Concurrence Grossissez à l’aide du modèle de processus
IX. Jetable Maximisez la robustesse avec des démarrages rapides et des arrêts gracieux
X. Parité dev/prod Gardez le développement, la validation et la production aussi proches que possible
XI. Logs Traitez les logs comme des flux d’évènements
XII. Processus d’administration Lancez les processus d’administration et de maintenance comme des one-off-processes
Worflow des branches
Un workflow git, c'est une séries d'opérations bien définies à répéter pour
conserver un repo propre.
Le choix d’un workflow Git est primordial car le pipeline va s’exécuter
automatiquement en fonction des pushs effectués sur une branche.
Il interagit directement avec le gestionnaire de version (comme GIT).
Le choix de la nomenclature des commits est important.
Les grands Principes
● Continuous Integration
● Continuous Delivery
● Continuous Deployment
Continuous Integration
TEST BUILD
Test Unitaire
Test Sécurité
[...]
Déploiement automatique
(packagist/Satis/Artifactory)
Mise à jour automatiquement
de la version du composer.json
Modifier le fichier changelog
Exemple d’utilisation :
Pour des librairies qui sont utilisées seulement en dépendance d’un projet.
(Monologue,Acl,etc…)
Stage
Continuous Delivery
TEST BUILD DEPLOY
Test Unitaire
Test Sécurité
[...]
Minification/Concat
Dépendances
Push variable environnement
[...]
Génération d’un ARTIFACT
Déploiement sur le serveur
Exemple d’utilisation :
Sur des features d’un projet (SPRINT).
Manuelle (Programmation MEP)
livré à l’équipe suivante (Tests, Qualification, Mise En Production, Ops)
Stage
Continuous Deployment
TEST BUILD DEPLOY
Test Unitaire
Test Sécurité
Tests d'intégration
Test IHM
Test de performance
[...]
Minification/Concat
Dépendances
Push variable environnement
[...]
Génération d’un ARTIFACT
Déploiement sur le serveur
Exemple d’utilisation :
Sur des petites features simples d’un projet qui n'engendreraient pas de régression
(KANBAN).
Sur des projets de documentation.
AUTO (pas d’intervention humaine
Stage
Et la qualité ? livrer des bugs...
Ceci implique d’avoir une couverture de tests (unitaires, d’intégration, de
performances, mutations, etc.) très complète.
Outre les tests unitaires, inévitables, on trouvera donc toute une série de tests
automatisés comme :
● Tests d’intégration (Fitnesse, Greenpepper, etc.)
● Tests IHM (Selenium, etc.)
● Tests de performance (Gatling, OpenSTA, etc.)
● [...]
DEMO*
(* avec des slides)
Exemple du Continuous Delivery
(GITLAB/GITLAB-CI)
● Nouvelle demande (feature d’un projet ) cahier des charges/ spécifications
● Ajout de la feature dans un logiciel de gestion projets (Mingle/JIRA/Issue
Gitlab,youtrack) et assignation à un développeur
Le développeur fait la tâche qui lui est assignée
Il crée une branche (en fonction du workflow git ) à partir de la tâche
Le développeur travaille sur son Issue/feature
CODE
COMMIT
PUSHFeature-branch
HOOK GIT
HOOK GIT / Script de pre-commit
Grâce au hook git (script lancé au commit) à nous pouvons lancer une série de
vérifications lors de chaque commit pour s'assurer de la qualité du code (linter,
CodeSniffer et tests).
● des normes psr (PHP).
● test unitaire.
● phpLint…
● Nomenclature des messages des commits.
● Suppression automatique des var_dump() des console_log().
● […]
En utilisant des outils comme GrumPHP
Test TU Build
Deploy
review
validation
merge
request
Test secu
Test Build
Deploy
review
Validation
Request
merge
Stage
(tester/builder/déployer sur intégration)
Pour chaque push du code du développeur
Tout les jobs sont exécutés automatiquement
(remontée des erreurs)
App interne de review
utilisation de l’api-gitlab
Jobs
Quand le
développeur
estime avoir fini,
il demande une
validation
(CP/MOA)
SOUMISSION
Merge Master
Code review
Déployer un
environnement
propre à la feature
(vhost Apache)Intégration continue
Un pipeline de jobs va s'exécuter sur les branches features
Pour Faire Simple ( pas de branche release/develops)
Exécution du pipeline des branches Feature
Grâce au job décrit dans le fichier gitlab-ci.yml, le job est exécuté à chaque
push d’un code d’une branche autre que la branche master.
L’application exécute les tests (TU, Test Sécurité….)
L’application est construite
L’application est déployée sur le serveur d’intégration
Stage TEST
Les jobs peuvent:
● Exécuter des tests unitaires (phpunit).
● Exécuter des tests sécurité.
● Exécuter des tests d’acceptation (codeception).
● Loguer le déroulement (date…).
● Retourner des indicateurs de qualités.
● Informer les collaborateurs (email/bot Mattermost).
● […]
Stage BUILD
Ce job peut :
● Mettre à jour les dépendances (via composer).
● Lancer les tâches de modifications/de concaténation (via gulp/gruntJs).
● Supprimer des fichiers des TU (inutile pour les environnements DEV).
● Créer une archive/artifact du code source.
● Loguer le déroulement (date…).
● Informer les collaborateurs (Email/ bot Mattermost/slack).
● […]
Dans un jobs de release :
On peut créer un fichier d'environnement qui pushe les variables définies dans le projet Gitlab.
Ce fichier est utilisé dans une lib php qui crée des variables d'environnement serveur.
Stage REVIEW/INTEGRATION (deployer)
Le job doit:
● Déployer l’artifact du code dans le directory du serveur web.
● Créer un vhost (apache/nginx) htttp://issue-name.review.domain.com + reload
apache.
● Loguer le déroulement (date…).
● Informer les collaborateurs( email/bot Mattermost).
● […]
Quand le développeur estime avoir fini sa feature il « fait une demande de
validation » pour le chef de projet
Il lance manuellement un job de validation
Stage VALIDATION INTÉGRATION
Ce job doit :
● Soumettre une demande de validation de la feature au chef de projet.
● Il envoie un email (bot dans Mattermost) avec les informations de l’issue, l’url de review de l’issue
etc…
Ce job peut :
● Loguer le déroulement (date…)
● Informer les collaborateurs (email/ bot Mattermost)
● […]
App interne de review
utilisation de l’api-gitlab
Il valide
Soumission du job de
MERGE De la branche
feature sur la master
Application review
Grâce à cette application câblée sur
l’api rest de Gitlab (ou autre JIRA) on
peut récupérer les informations de
l’issue
Visualiser l’issue (iframe de
http://issue-name.review.domain.com)
et exécuter le jobs de demande pull
request en cliquant sur « Je valide
cette Feature ».
Stage VALIDATION MERGE
Ce Jobs doit être exécuté manuellement par le chef de projet qui valide la feature.
Il permet grâce à l’api Rest de gitlab de créer un pull request entre la branche de la feature et la master et
de faire une demande au release manager/Tech Lead de valider le pull request.
Le Tech Lead peut faire du code review.
L’expert sécurité peut vérifier d'éventuelle faille de sécurité.
Accept le merge
Request
La feature est mergée avec la master
Le techLead
Exécution du pipeline sur la branche master
Grâce au job décrit dans le fichier gitlab-ci.yml , à chaque push d’un
code sur la branche master :
● L’application exécute les tests (TU, Test Sécurite….) pour l’intégration de
l’ensemble des features.
● L’application est buildée
● L’application est déployée sur le serveur pre-prod (iso prod)
On déploie manuellement et on lance le job de déploiement en production.
Test Build
Deploy
pre-pro
Test
fonctionnel
Deploy pro Reporting
ZERO DOWNTIME DEPLOYMENT (ZDD)
Qui permet de déployer une nouvelle version d’un système sans interrompre le bon
fonctionnement du service.
Blue/Green Deployment
C’est le pattern classique de ZDD. Il suppose que l’application soit hébergé sur au moins deux chaînes applicatives, puisque l’objectif
est de déployer la version N+1 d’une application sur une des chaînes, tandis que le service est maintenu sur les chaînes encore en
version N.
Pour aller plus loin
Rajouter du Reporting/Monitorer (surveillance )
● Sonar
● Analyse de logs ===> ELK
● […]
Rajouter des :
● Tests fonctionnels
● Tests d’accessibilité (Axe-core)
● Tests de pénétration (Pentests)
● Tests de performance/de charge
● Métrologie (Avalanche)
● audit sécurité
● […]
Feature Flipping
Rollback ⇒ on relance le pipeline précédent.
QUESTIONS ?
Merci
● http://blog.octo.com/feature-flipping/
● http://blog.octo.com/zero-downtime-deployment/
● http://blog.octo.com/continuous-deployment/
● https://github.com/phpro/grumphp
● https://about.gitlab.com/2014/09/29/gitlab-flow/
● https://www.slideshare.net/MarineKaram/tester-cest-douter-linkvalue-tech

Contenu connexe

Tendances

L'integration continue pour tous
L'integration continue pour tousL'integration continue pour tous
L'integration continue pour tousAurelien Navarre
 
REX sur l'outilage Continuous Delivery
REX sur l'outilage Continuous DeliveryREX sur l'outilage Continuous Delivery
REX sur l'outilage Continuous DeliveryDamien Goldenberg
 
Prise en main de Jhipster
Prise en main de JhipsterPrise en main de Jhipster
Prise en main de JhipsterKokou Gaglo
 
Python application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgentsPython application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgentsNicolas Mussat
 
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?Membré Guillaume
 
Retour d'expérience technique Go, gRPC, Kubernetes
Retour d'expérience technique Go, gRPC, KubernetesRetour d'expérience technique Go, gRPC, Kubernetes
Retour d'expérience technique Go, gRPC, KubernetesVincent Composieux
 
DevOps : mission [im]possible ?
DevOps : mission [im]possible ?DevOps : mission [im]possible ?
DevOps : mission [im]possible ?rfelden
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIHugo Hamon
 
IP Multimedia Subsystem : Démarrer avec Mobicents JainSLEE (Partie 1)
IP Multimedia Subsystem : Démarrer avec Mobicents JainSLEE (Partie 1)IP Multimedia Subsystem : Démarrer avec Mobicents JainSLEE (Partie 1)
IP Multimedia Subsystem : Démarrer avec Mobicents JainSLEE (Partie 1)Kokou Gaglo
 
Introduction à SBT
Introduction à SBTIntroduction à SBT
Introduction à SBTJean Detoeuf
 
NightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous DeliveryNightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous DeliveryZenika
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsHugo Hamon
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+ekino
 
SnowCamp IO Grenoble 2017 - Bâtissons ensemble un pipeline avec Jenkins et Do...
SnowCamp IO Grenoble 2017 - Bâtissons ensemble un pipeline avec Jenkins et Do...SnowCamp IO Grenoble 2017 - Bâtissons ensemble un pipeline avec Jenkins et Do...
SnowCamp IO Grenoble 2017 - Bâtissons ensemble un pipeline avec Jenkins et Do...Damien Duportal
 
Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.Amélie DUVERNET
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureJonathan Bonzy
 
Devoxx 17 - Orchestration de conteneurs : le choix des armes !
Devoxx 17 - Orchestration de conteneurs : le choix des armes !Devoxx 17 - Orchestration de conteneurs : le choix des armes !
Devoxx 17 - Orchestration de conteneurs : le choix des armes !Publicis Sapient Engineering
 

Tendances (20)

L'integration continue pour tous
L'integration continue pour tousL'integration continue pour tous
L'integration continue pour tous
 
REX sur l'outilage Continuous Delivery
REX sur l'outilage Continuous DeliveryREX sur l'outilage Continuous Delivery
REX sur l'outilage Continuous Delivery
 
Prise en main de Jhipster
Prise en main de JhipsterPrise en main de Jhipster
Prise en main de Jhipster
 
Python application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgentsPython application packaging @ MeilleursAgents
Python application packaging @ MeilleursAgents
 
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
CI, CD, pipelines, conteneurs : la cohabitation est elle possible ?
 
Retour d'expérience technique Go, gRPC, Kubernetes
Retour d'expérience technique Go, gRPC, KubernetesRetour d'expérience technique Go, gRPC, Kubernetes
Retour d'expérience technique Go, gRPC, Kubernetes
 
REX Openshift à la Poste
REX Openshift à la PosteREX Openshift à la Poste
REX Openshift à la Poste
 
DevOps : mission [im]possible ?
DevOps : mission [im]possible ?DevOps : mission [im]possible ?
DevOps : mission [im]possible ?
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CI
 
IP Multimedia Subsystem : Démarrer avec Mobicents JainSLEE (Partie 1)
IP Multimedia Subsystem : Démarrer avec Mobicents JainSLEE (Partie 1)IP Multimedia Subsystem : Démarrer avec Mobicents JainSLEE (Partie 1)
IP Multimedia Subsystem : Démarrer avec Mobicents JainSLEE (Partie 1)
 
Introduction à SBT
Introduction à SBTIntroduction à SBT
Introduction à SBT
 
NightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous DeliveryNightClazz Build Tools & Continuous Delivery
NightClazz Build Tools & Continuous Delivery
 
Ansible et Jenkins
Ansible et JenkinsAnsible et Jenkins
Ansible et Jenkins
 
Intégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec JenkinsIntégration continue des projets PHP avec Jenkins
Intégration continue des projets PHP avec Jenkins
 
Industrialisation PHP - Canal+
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+
 
Java - Lombok
Java - LombokJava - Lombok
Java - Lombok
 
SnowCamp IO Grenoble 2017 - Bâtissons ensemble un pipeline avec Jenkins et Do...
SnowCamp IO Grenoble 2017 - Bâtissons ensemble un pipeline avec Jenkins et Do...SnowCamp IO Grenoble 2017 - Bâtissons ensemble un pipeline avec Jenkins et Do...
SnowCamp IO Grenoble 2017 - Bâtissons ensemble un pipeline avec Jenkins et Do...
 
Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.Déploiement PHP : de l'âge de pierre à nos jours.
Déploiement PHP : de l'âge de pierre à nos jours.
 
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeureSymphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
 
Devoxx 17 - Orchestration de conteneurs : le choix des armes !
Devoxx 17 - Orchestration de conteneurs : le choix des armes !Devoxx 17 - Orchestration de conteneurs : le choix des armes !
Devoxx 17 - Orchestration de conteneurs : le choix des armes !
 

En vedette

Blockchain for Education - CHiLO Chain -
Blockchain for Education - CHiLO Chain -Blockchain for Education - CHiLO Chain -
Blockchain for Education - CHiLO Chain -Hori Masumi
 
Environmental sustainability of drilling fluids
Environmental sustainability of drilling fluidsEnvironmental sustainability of drilling fluids
Environmental sustainability of drilling fluidssiddharth sharma
 
Smu bba sem 2 winter 2016 assignments
Smu bba sem 2 winter 2016 assignmentsSmu bba sem 2 winter 2016 assignments
Smu bba sem 2 winter 2016 assignmentssolved_assignments
 
Материалы для подготовки к ОГЭ и ЕГЭ. "А.С.Пушкин. "Цыганы", "Повести Белкина".
Материалы для подготовки к ОГЭ и ЕГЭ. "А.С.Пушкин. "Цыганы", "Повести Белкина".Материалы для подготовки к ОГЭ и ЕГЭ. "А.С.Пушкин. "Цыганы", "Повести Белкина".
Материалы для подготовки к ОГЭ и ЕГЭ. "А.С.Пушкин. "Цыганы", "Повести Белкина".Roman-13
 
Exit assessment on miss pathupats
Exit assessment on miss pathupatsExit assessment on miss pathupats
Exit assessment on miss pathupatsayman sarahadil
 
air and noise pollution environmental protection and control
air and noise pollution  environmental protection and controlair and noise pollution  environmental protection and control
air and noise pollution environmental protection and controlSJ BASHA
 
Week 2 Elements of Fables
Week 2 Elements of FablesWeek 2 Elements of Fables
Week 2 Elements of FablesLovely888
 
Trabajos incluidos en el blog
Trabajos incluidos en el blogTrabajos incluidos en el blog
Trabajos incluidos en el blogDayra Camargo
 
Week 2 Elements of a Fairy Tale
Week 2 Elements of a Fairy TaleWeek 2 Elements of a Fairy Tale
Week 2 Elements of a Fairy TaleLovely888
 
Gauss elimination & Gauss Jordan method
Gauss elimination & Gauss Jordan methodGauss elimination & Gauss Jordan method
Gauss elimination & Gauss Jordan methodNaimesh Bhavsar
 
К ОГЭ и ЕГЭ по литературе: "Роман А.С.Пушкина "Евгений Онегин"
К ОГЭ и ЕГЭ по литературе: "Роман А.С.Пушкина "Евгений Онегин"К ОГЭ и ЕГЭ по литературе: "Роман А.С.Пушкина "Евгений Онегин"
К ОГЭ и ЕГЭ по литературе: "Роман А.С.Пушкина "Евгений Онегин"Roman-13
 
Marriage and Women’s Employment in the Middle East and North Africa (MENA)
Marriage and Women’s Employment in the Middle East and North Africa (MENA)Marriage and Women’s Employment in the Middle East and North Africa (MENA)
Marriage and Women’s Employment in the Middle East and North Africa (MENA)Economic Research Forum
 
Basic fire science and fire extingusing techniques
Basic fire science and fire extingusing techniquesBasic fire science and fire extingusing techniques
Basic fire science and fire extingusing techniquesPrathap M D
 
Vzw’s islamonderwijs niet in orde
Vzw’s islamonderwijs niet in ordeVzw’s islamonderwijs niet in orde
Vzw’s islamonderwijs niet in ordeThierry Debels
 
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheHow to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheLeslie Samuel
 
Project plan-web
Project plan-web Project plan-web
Project plan-web kafi7
 

En vedette (20)

Blockchain for Education - CHiLO Chain -
Blockchain for Education - CHiLO Chain -Blockchain for Education - CHiLO Chain -
Blockchain for Education - CHiLO Chain -
 
Environmental sustainability of drilling fluids
Environmental sustainability of drilling fluidsEnvironmental sustainability of drilling fluids
Environmental sustainability of drilling fluids
 
Smu bba sem 2 winter 2016 assignments
Smu bba sem 2 winter 2016 assignmentsSmu bba sem 2 winter 2016 assignments
Smu bba sem 2 winter 2016 assignments
 
Mahmoud mostafa
Mahmoud mostafaMahmoud mostafa
Mahmoud mostafa
 
Материалы для подготовки к ОГЭ и ЕГЭ. "А.С.Пушкин. "Цыганы", "Повести Белкина".
Материалы для подготовки к ОГЭ и ЕГЭ. "А.С.Пушкин. "Цыганы", "Повести Белкина".Материалы для подготовки к ОГЭ и ЕГЭ. "А.С.Пушкин. "Цыганы", "Повести Белкина".
Материалы для подготовки к ОГЭ и ЕГЭ. "А.С.Пушкин. "Цыганы", "Повести Белкина".
 
Exit assessment on miss pathupats
Exit assessment on miss pathupatsExit assessment on miss pathupats
Exit assessment on miss pathupats
 
air and noise pollution environmental protection and control
air and noise pollution  environmental protection and controlair and noise pollution  environmental protection and control
air and noise pollution environmental protection and control
 
Week 2 Elements of Fables
Week 2 Elements of FablesWeek 2 Elements of Fables
Week 2 Elements of Fables
 
Trabajos incluidos en el blog
Trabajos incluidos en el blogTrabajos incluidos en el blog
Trabajos incluidos en el blog
 
Week 2 Elements of a Fairy Tale
Week 2 Elements of a Fairy TaleWeek 2 Elements of a Fairy Tale
Week 2 Elements of a Fairy Tale
 
Gauss elimination & Gauss Jordan method
Gauss elimination & Gauss Jordan methodGauss elimination & Gauss Jordan method
Gauss elimination & Gauss Jordan method
 
К ОГЭ и ЕГЭ по литературе: "Роман А.С.Пушкина "Евгений Онегин"
К ОГЭ и ЕГЭ по литературе: "Роман А.С.Пушкина "Евгений Онегин"К ОГЭ и ЕГЭ по литературе: "Роман А.С.Пушкина "Евгений Онегин"
К ОГЭ и ЕГЭ по литературе: "Роман А.С.Пушкина "Евгений Онегин"
 
Marriage and Women’s Employment in the Middle East and North Africa (MENA)
Marriage and Women’s Employment in the Middle East and North Africa (MENA)Marriage and Women’s Employment in the Middle East and North Africa (MENA)
Marriage and Women’s Employment in the Middle East and North Africa (MENA)
 
Basic fire science and fire extingusing techniques
Basic fire science and fire extingusing techniquesBasic fire science and fire extingusing techniques
Basic fire science and fire extingusing techniques
 
Student profiles feb 2017
Student profiles feb 2017Student profiles feb 2017
Student profiles feb 2017
 
Chapter 1
Chapter 1Chapter 1
Chapter 1
 
Vzw’s islamonderwijs niet in orde
Vzw’s islamonderwijs niet in ordeVzw’s islamonderwijs niet in orde
Vzw’s islamonderwijs niet in orde
 
How to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your NicheHow to Become a Thought Leader in Your Niche
How to Become a Thought Leader in Your Niche
 
Project plan-web
Project plan-web Project plan-web
Project plan-web
 
Kids
KidsKids
Kids
 

Similaire à Chaine de production pipeline

CodeBuilder_DevOpsCenter.pptx
CodeBuilder_DevOpsCenter.pptxCodeBuilder_DevOpsCenter.pptx
CodeBuilder_DevOpsCenter.pptxThomasParaiso1
 
20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders BattleArnaud Héritier
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsJulien Wittouck
 
Configurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdfConfigurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdfHamida Rebai Trabelsi
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logicielsSylvain Leroy
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache MavenArnaud Héritier
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicEmmanuel Hugonnet
 
Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Julien Dubois
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache MavenArnaud Héritier
 
Concept de l’Intégration Continue
Concept de l’Intégration ContinueConcept de l’Intégration Continue
Concept de l’Intégration ContinueFrédéric Sagez
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...XavierPestel
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreStéphane Traumat
 
Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationPresentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationStéphane Traumat
 
WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
 WordCamp Lyon 2015 - WordPress, Git et l'intégration continue WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
WordCamp Lyon 2015 - WordPress, Git et l'intégration continueStéphane HULARD
 
Organiser son CI/CD - présentation
Organiser son CI/CD - présentation Organiser son CI/CD - présentation
Organiser son CI/CD - présentation Julien Garderon
 
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...Publicis Sapient Engineering
 
Qualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & AndroidQualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & AndroidThibaud CAVIN
 
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache MavenArnaud Héritier
 
Evolutions scub foundation 3.0 = 4.0
Evolutions scub foundation 3.0 =  4.0Evolutions scub foundation 3.0 =  4.0
Evolutions scub foundation 3.0 = 4.0adrienhautot
 

Similaire à Chaine de production pipeline (20)

CodeBuilder_DevOpsCenter.pptx
CodeBuilder_DevOpsCenter.pptxCodeBuilder_DevOpsCenter.pptx
CodeBuilder_DevOpsCenter.pptx
 
20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle20091020 - Normandy Jug - Builders Battle
20091020 - Normandy Jug - Builders Battle
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'ts
 
Configurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdfConfigurer GitHub Actions avec Docker et DotNET 8.pdf
Configurer GitHub Actions avec Docker et DotNET 8.pdf
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
At2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville PublicAt2008 Grenoble Hugonnet Sanlaville Public
At2008 Grenoble Hugonnet Sanlaville Public
 
Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache Maven
 
Concept de l’Intégration Continue
Concept de l’Intégration ContinueConcept de l’Intégration Continue
Concept de l’Intégration Continue
 
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libre
 
Presentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub FoundationPresentation du socle technique Java open source Scub Foundation
Presentation du socle technique Java open source Scub Foundation
 
WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
 WordCamp Lyon 2015 - WordPress, Git et l'intégration continue WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
WordCamp Lyon 2015 - WordPress, Git et l'intégration continue
 
Organiser son CI/CD - présentation
Organiser son CI/CD - présentation Organiser son CI/CD - présentation
Organiser son CI/CD - présentation
 
Versioning avec Git
Versioning avec GitVersioning avec Git
Versioning avec Git
 
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...
Open XKE - De l'intégration continue au déploiement continu sur iOS et Androi...
 
Qualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & AndroidQualité & Industrialisation des développements mobiles sur iOS & Android
Qualité & Industrialisation des développements mobiles sur iOS & Android
 
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven
 
Evolutions scub foundation 3.0 = 4.0
Evolutions scub foundation 3.0 =  4.0Evolutions scub foundation 3.0 =  4.0
Evolutions scub foundation 3.0 = 4.0
 

Chaine de production pipeline

  • 1. DEVOPS : Chaîne de production Ma vision du déploiement Nicolas Wallerand (Software developer) n.wallerand@gmail.com
  • 2. DEVOPS Le devops est un mouvement visant à l'alignement de l'ensemble des équipes du système d'information sur un objectif commun, à commencer par les équipes de dev ou dev engineers chargés de faire évoluer le système d'information et les ops ou ops engineers responsables des infrastructures (exploitants, administrateurs système, réseau, bases de données,...). Pour accélérer le cycle de vie des applications et leur qualité. Donc Optimiser le TIME TO MARKET
  • 4. PIPELINE Un PIPELINE est un ensemble d’étapes indépendantes (jobs) dans le processus de développement et qui augmentent le degré de confiance à chacun des niveaux. Le PIPELINE est différent en fonction de l’architecture Serveur Application Monolithique Application cloud/Architecture microservice Le pipeline se généralise dans les outils ● Bitbucket : https://bitbucket.org/product/features/pipelines ● Jenkins : https://jenkins.io/projects/blueocean/ ● Travis : https://travis-ci.org/ ● Gitlab : https://about.gitlab.com/gitlab-ci/ Code Base 12Factor
  • 5. 12 factors I. Base de code Une base de code suivie avec un système de contrôle de version, plusieurs déploiements II. Dépendances Déclarez explicitement et isolez les dépendances III. Configuration Stockez la configuration dans l’environnement IV. Services externes Traitez les services externes comme des ressources attachées V. Build, release, run Séparez strictement les étapes d’assemblage et d’exécution VI. Processus Exécutez l’application comme un ou plusieurs processus sans état VII. Associations de ports Exportez les services via des associations de ports VIII. Concurrence Grossissez à l’aide du modèle de processus IX. Jetable Maximisez la robustesse avec des démarrages rapides et des arrêts gracieux X. Parité dev/prod Gardez le développement, la validation et la production aussi proches que possible XI. Logs Traitez les logs comme des flux d’évènements XII. Processus d’administration Lancez les processus d’administration et de maintenance comme des one-off-processes
  • 6. Worflow des branches Un workflow git, c'est une séries d'opérations bien définies à répéter pour conserver un repo propre. Le choix d’un workflow Git est primordial car le pipeline va s’exécuter automatiquement en fonction des pushs effectués sur une branche. Il interagit directement avec le gestionnaire de version (comme GIT). Le choix de la nomenclature des commits est important.
  • 7. Les grands Principes ● Continuous Integration ● Continuous Delivery ● Continuous Deployment
  • 8. Continuous Integration TEST BUILD Test Unitaire Test Sécurité [...] Déploiement automatique (packagist/Satis/Artifactory) Mise à jour automatiquement de la version du composer.json Modifier le fichier changelog Exemple d’utilisation : Pour des librairies qui sont utilisées seulement en dépendance d’un projet. (Monologue,Acl,etc…) Stage
  • 9. Continuous Delivery TEST BUILD DEPLOY Test Unitaire Test Sécurité [...] Minification/Concat Dépendances Push variable environnement [...] Génération d’un ARTIFACT Déploiement sur le serveur Exemple d’utilisation : Sur des features d’un projet (SPRINT). Manuelle (Programmation MEP) livré à l’équipe suivante (Tests, Qualification, Mise En Production, Ops) Stage
  • 10. Continuous Deployment TEST BUILD DEPLOY Test Unitaire Test Sécurité Tests d'intégration Test IHM Test de performance [...] Minification/Concat Dépendances Push variable environnement [...] Génération d’un ARTIFACT Déploiement sur le serveur Exemple d’utilisation : Sur des petites features simples d’un projet qui n'engendreraient pas de régression (KANBAN). Sur des projets de documentation. AUTO (pas d’intervention humaine Stage
  • 11. Et la qualité ? livrer des bugs... Ceci implique d’avoir une couverture de tests (unitaires, d’intégration, de performances, mutations, etc.) très complète. Outre les tests unitaires, inévitables, on trouvera donc toute une série de tests automatisés comme : ● Tests d’intégration (Fitnesse, Greenpepper, etc.) ● Tests IHM (Selenium, etc.) ● Tests de performance (Gatling, OpenSTA, etc.) ● [...]
  • 12. DEMO* (* avec des slides)
  • 13. Exemple du Continuous Delivery (GITLAB/GITLAB-CI) ● Nouvelle demande (feature d’un projet ) cahier des charges/ spécifications ● Ajout de la feature dans un logiciel de gestion projets (Mingle/JIRA/Issue Gitlab,youtrack) et assignation à un développeur
  • 14.
  • 15. Le développeur fait la tâche qui lui est assignée Il crée une branche (en fonction du workflow git ) à partir de la tâche
  • 16. Le développeur travaille sur son Issue/feature CODE COMMIT PUSHFeature-branch HOOK GIT
  • 17. HOOK GIT / Script de pre-commit Grâce au hook git (script lancé au commit) à nous pouvons lancer une série de vérifications lors de chaque commit pour s'assurer de la qualité du code (linter, CodeSniffer et tests). ● des normes psr (PHP). ● test unitaire. ● phpLint… ● Nomenclature des messages des commits. ● Suppression automatique des var_dump() des console_log(). ● […] En utilisant des outils comme GrumPHP
  • 18. Test TU Build Deploy review validation merge request Test secu Test Build Deploy review Validation Request merge Stage (tester/builder/déployer sur intégration) Pour chaque push du code du développeur Tout les jobs sont exécutés automatiquement (remontée des erreurs) App interne de review utilisation de l’api-gitlab Jobs Quand le développeur estime avoir fini, il demande une validation (CP/MOA) SOUMISSION Merge Master Code review Déployer un environnement propre à la feature (vhost Apache)Intégration continue Un pipeline de jobs va s'exécuter sur les branches features Pour Faire Simple ( pas de branche release/develops)
  • 19. Exécution du pipeline des branches Feature Grâce au job décrit dans le fichier gitlab-ci.yml, le job est exécuté à chaque push d’un code d’une branche autre que la branche master. L’application exécute les tests (TU, Test Sécurité….) L’application est construite L’application est déployée sur le serveur d’intégration
  • 20. Stage TEST Les jobs peuvent: ● Exécuter des tests unitaires (phpunit). ● Exécuter des tests sécurité. ● Exécuter des tests d’acceptation (codeception). ● Loguer le déroulement (date…). ● Retourner des indicateurs de qualités. ● Informer les collaborateurs (email/bot Mattermost). ● […]
  • 21. Stage BUILD Ce job peut : ● Mettre à jour les dépendances (via composer). ● Lancer les tâches de modifications/de concaténation (via gulp/gruntJs). ● Supprimer des fichiers des TU (inutile pour les environnements DEV). ● Créer une archive/artifact du code source. ● Loguer le déroulement (date…). ● Informer les collaborateurs (Email/ bot Mattermost/slack). ● […] Dans un jobs de release : On peut créer un fichier d'environnement qui pushe les variables définies dans le projet Gitlab. Ce fichier est utilisé dans une lib php qui crée des variables d'environnement serveur.
  • 22. Stage REVIEW/INTEGRATION (deployer) Le job doit: ● Déployer l’artifact du code dans le directory du serveur web. ● Créer un vhost (apache/nginx) htttp://issue-name.review.domain.com + reload apache. ● Loguer le déroulement (date…). ● Informer les collaborateurs( email/bot Mattermost). ● […]
  • 23. Quand le développeur estime avoir fini sa feature il « fait une demande de validation » pour le chef de projet Il lance manuellement un job de validation
  • 24. Stage VALIDATION INTÉGRATION Ce job doit : ● Soumettre une demande de validation de la feature au chef de projet. ● Il envoie un email (bot dans Mattermost) avec les informations de l’issue, l’url de review de l’issue etc… Ce job peut : ● Loguer le déroulement (date…) ● Informer les collaborateurs (email/ bot Mattermost) ● […] App interne de review utilisation de l’api-gitlab Il valide Soumission du job de MERGE De la branche feature sur la master
  • 25. Application review Grâce à cette application câblée sur l’api rest de Gitlab (ou autre JIRA) on peut récupérer les informations de l’issue Visualiser l’issue (iframe de http://issue-name.review.domain.com) et exécuter le jobs de demande pull request en cliquant sur « Je valide cette Feature ».
  • 26. Stage VALIDATION MERGE Ce Jobs doit être exécuté manuellement par le chef de projet qui valide la feature. Il permet grâce à l’api Rest de gitlab de créer un pull request entre la branche de la feature et la master et de faire une demande au release manager/Tech Lead de valider le pull request. Le Tech Lead peut faire du code review. L’expert sécurité peut vérifier d'éventuelle faille de sécurité.
  • 27. Accept le merge Request La feature est mergée avec la master Le techLead
  • 28. Exécution du pipeline sur la branche master Grâce au job décrit dans le fichier gitlab-ci.yml , à chaque push d’un code sur la branche master : ● L’application exécute les tests (TU, Test Sécurite….) pour l’intégration de l’ensemble des features. ● L’application est buildée ● L’application est déployée sur le serveur pre-prod (iso prod) On déploie manuellement et on lance le job de déploiement en production. Test Build Deploy pre-pro Test fonctionnel Deploy pro Reporting
  • 29. ZERO DOWNTIME DEPLOYMENT (ZDD) Qui permet de déployer une nouvelle version d’un système sans interrompre le bon fonctionnement du service. Blue/Green Deployment C’est le pattern classique de ZDD. Il suppose que l’application soit hébergé sur au moins deux chaînes applicatives, puisque l’objectif est de déployer la version N+1 d’une application sur une des chaînes, tandis que le service est maintenu sur les chaînes encore en version N.
  • 30. Pour aller plus loin Rajouter du Reporting/Monitorer (surveillance ) ● Sonar ● Analyse de logs ===> ELK ● […] Rajouter des : ● Tests fonctionnels ● Tests d’accessibilité (Axe-core) ● Tests de pénétration (Pentests) ● Tests de performance/de charge ● Métrologie (Avalanche) ● audit sécurité ● […] Feature Flipping Rollback ⇒ on relance le pipeline précédent.
  • 31. QUESTIONS ? Merci ● http://blog.octo.com/feature-flipping/ ● http://blog.octo.com/zero-downtime-deployment/ ● http://blog.octo.com/continuous-deployment/ ● https://github.com/phpro/grumphp ● https://about.gitlab.com/2014/09/29/gitlab-flow/ ● https://www.slideshare.net/MarineKaram/tester-cest-douter-linkvalue-tech