SlideShare une entreprise Scribd logo
2
Plus lue
5
Plus lue
Ou comment diviser par 18 le coût de la chaîne CI/CD…
Julien Garderon – juin 2021
Sommaire
—
Dépôt typique Python (ex.)
Modalités de build
Organisation totale
Négocier les versions
Ajuster les coûts
Page blanche
Concepts fondamentaux
Python
C
Monde « Java »
Javascript Typescript
LISP (CL)
Forth
Abstraction
Code
machine
Code
pseudo-machine
Bytecode
Interprétation
2
1
1 : Compilation (changement d’abstraction ; ex. compilation du C vers du code machine)
2 : Transcompilation (changement de format d’abstraction ; ex. transcompilation de Typescript vers du
Javascript)
=> Exemple d’un changement de langage : procédural vers fonctionnel ; changement syntaxique entre des
versions, etc.
Concepts de « construction », « compilation », etc.
« Un compilateur source à source,
transpileur ou transcompilateur est
un type de compilateur qui prend le
code source d'un langage de
programmation et le compile dans
un autre langage de
programmation. Un compilateur
source-à-source opère sur deux
langages avec approximativement
le même niveau d'abstraction,
alors qu'un compilateur traditionnel
compile un langage de haut niveau
vers un langage de bas niveau. »
– Wikipédia, Compilateur source à
source
Format
le « grand flou » entre la pure interprétation et le code machine
Bas niveau Haut niveau
Dépôt Git
(avec code Python)
Registre
PIP
Dépôt typique python
Étape 1 : test statique
Étape 2 : test dynamique
Étape 3 : création de la doc
Étape 4 : création de l’artefact PIP
Étape 5 : enregistrement auprès du registre
Chaîne de
construction
d’un élément
Étapes « qualité »
Étapes « connaissance »
(dont génération des graphiques
avec PlantUML, Kroki, etc.)
Étapes « mise à disposition »
! (alerte de fin : web hook)
et
Module 1
Module 2
Applicatif
Installateur
Déploiement
2 2’
Module 1 Module 2 Applicatif InstallateurDéploiement
1 1’
Ex. 1 : Chaîne unique (« intégrée »)
Ex. 2 : Chaînes multiples
Modalités de build
Runner plus puissant
(max du besoin sur la
chaîne) ; gérer
davantage les
branches ; créer des
bypass
Adapter chaque runner à
sa tâche ; tests locaux ;
optimiser le « time to
execute » ; gérer
finement les versions
On prend le max de la construction
(car parallélisation)
Exemple ici d’un projet d’applicatif
Python avec deux modules, un corps
principal sous le format d’un package
et un installateur (.deb). L’ensemble
est fourni sous le format d’une image
Docker, pour être utilisé dans un
orchestrateur type Kubernetes
Dépôt module 1
Dépôt module 2
Dépôt applicatif
Dépôt de déploiement
Dépôt d’installateur
Registre
PIP
Registre
DEB
Registre
Conteneur
Registre
documentation
Orchestrateur
1
2 3
4
Organisation totale
Un dépôt
= un
sous-projet
L’organisation du projet peut impacter l’organisation
des dépôts – et inversement (ex. classique entre
un projet monolithique vs un projet multiple sous le
format de micro-services). Il doit rester une
cohérence d’ensemble
v1
Dépôt module 1 Dépôt module 2 Dépôt applicatif Dépôt de déploiement
Dépôt d’installateur
v1
v2
v3
v4
v2
v3
v4
v5
v6
v1
v2
v3
v4
v5
v6
v7
v8
v1
v2
v3
v4
(origine)
Instant « T1 » => déploiement v(g) 1
Ex. dernière version dispo.
●
Module 1 = v1
●
Module 2 = v2
●
App = v2
●
Installateur = v1
Instant « T2 » => déploiement v(g) 2 à 4
Ex. fixer une version
●
Module 1 = v2
●
Module 2 = v3
●
App = v5 à v7 suivant
●
Installateur = v3
Suivant la date de livraison, pour une
même version « v3 » de mon installateur,
je livre en réalité 3 images différentes
pour le « run »
Négocier les versions
Temps
Ajuster les coûts
Besoin technique :
●
chaîne unique : B2-15
●
0,1169 € / heure
●
42,00 € / mois
●
chaînes multiples : B2-7
●
0,0619 € / heure
●
22 € / mois
Durées horaires (hors coût projet, estimations fictives) :
●
Construction module 1 : 1
●
Construction module 2 : 0,5
●
Construction applicatif : 0,75
●
Construction installateur : 0,25
●
Déploiement : 1
Durée cumulée pour un déploiement (avec build) :
●
Intégrée : 1 + 0.5 + 0.75 + 0.25 + 1 = 3,5
●
Parallèle : max(1 ; 0.5; 0.75; 0.25) + 1 = 2
Coût d’un déploiement :
●
Intégrée (B2-15) :
●
Location horaire : 3.5 => 4 x 0,1169 = 0,40915 €
●
Location mensuelle : 42 €
●
Parallèle (B2-7) :
●
Location horaire : 2 x 0,0619 = 0,1238 €
●
Location mensuelle : 22 €
Point de bascule location horaire vs mensuelle :
●
Intégrée : 42 / 0,40915 = 102 déploiements
●
Parallèle : 22 / 0,1238 = 176 déploiements
Nbre de déploiements 1 10 100 125 150 175 200 1000
Intégré (mensuelle) 42 42 42 42 42 42 42 43
Intégré (horaire) 0,40915 4,0915 40,915 51,14375 61,3725 71,60125 81,83 409,15
Parallèle (mensuelle) 22 22 22 22 22 22 22 23
Parallèle (horaire) 0,1238 1,238 12,38 15,475 18,57 21,665 24,76 123,8
1 10 100 125 150 175 200 1000
0
15
30
45
60
75
90
105
120
135
Evol. coûts d'une livraison de version
Chaîne de compilation et déploiement, par modalité
Intégré (mensuelle)
Intégré (horaire)
Parallèle (mensuelle)
Parallèle (horaire)
Nbre de déploiements prévus / mois
en
€
HT
1h x 24 x 30 = 720h ; hors 44,56 € si location horaire (au lieu de 22 € en location
mensuelle) => pousse à la location mensuelle
Organiser son CI/CD - présentation

Contenu connexe

PPTX
Présentation Git & GitHub
PDF
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
PPTX
DEVOPS
PDF
Gitlab CI : Integration et Déploiement Continue
PPTX
Presentation DevOps : enjeux , objectifs, consequences
PDF
Architecture microservices avec docker
PPTX
PPTX
Fundamentals of DevOps and CI/CD
Présentation Git & GitHub
Pipeline Devops - Intégration continue : ansible, jenkins, docker, jmeter...
DEVOPS
Gitlab CI : Integration et Déploiement Continue
Presentation DevOps : enjeux , objectifs, consequences
Architecture microservices avec docker
Fundamentals of DevOps and CI/CD

Tendances (20)

PDF
Présentation du DevOps
PDF
Intégration continue et déploiement continue avec Jenkins
PPTX
Présentation de git
PDF
DevOps beyond the Tools
PDF
Introduction à DevOps
PDF
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
PDF
DevOps with Ansible
PPTX
Presentation-DEVOPS-par-GDG
PPTX
What is DevOps? | DevOps Introduction | DevOps Tools | DevOps Tutorial For Be...
PDF
Continuous Integration/Deployment with Gitlab CI
PDF
Git Branching Model
PPTX
Intégration continue
PPTX
Jenkins CI
PPTX
Introduction to CI/CD
PPTX
Docker introduction & benefits
PDF
Cours Devops Sparks.pptx.pdf
PDF
Kubernetes Application Deployment with Helm - A beginner Guide!
PPTX
Gitlab CI/CD
PDF
What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...
PPTX
Helm.pptx
Présentation du DevOps
Intégration continue et déploiement continue avec Jenkins
Présentation de git
DevOps beyond the Tools
Introduction à DevOps
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
DevOps with Ansible
Presentation-DEVOPS-par-GDG
What is DevOps? | DevOps Introduction | DevOps Tools | DevOps Tutorial For Be...
Continuous Integration/Deployment with Gitlab CI
Git Branching Model
Intégration continue
Jenkins CI
Introduction to CI/CD
Docker introduction & benefits
Cours Devops Sparks.pptx.pdf
Kubernetes Application Deployment with Helm - A beginner Guide!
Gitlab CI/CD
What is DevOps | DevOps Introduction | DevOps Training | DevOps Tutorial | Ed...
Helm.pptx
Publicité

Similaire à Organiser son CI/CD - présentation (20)

PDF
Deployer en continu, Benoît Lafontaine, USIEVENT 2013
PDF
DevMobCA: Continuous integration
PPTX
Présentation DEVOPS_Mauritanie.pptx
PPTX
Présentation DEVOPS-Majeur.pptx
PPTX
Présentation DEVOPSS.pptx
PPTX
Présentation DEVOPS_.pptx
PPTX
Présentation DEVOPS_Black.pptx
PDF
Industrialisation PHP - Canal+
PDF
Integration continue et déploiement automatisé
PPTX
Présentation DEVOPS_hyper.pptx
PDF
Code, ship and run
PDF
NightClazz Build Tools & Continuous Delivery Avancé
PPTX
Présentation DEVOPS_DIR.pptx
PPTX
Présentation DEVOPS.pptx
PPTX
Présentation DEVOPS_PO.pptx
PPTX
Présentation DEVOPS_CONSOLE.pptx
PDF
Deploy automatic in the cloud
PDF
Déploiement continu, l'agilité maximisée ? - Pierre-Martin Tardif
PPT
At2008 Grenoble Hugonnet Sanlaville Public
PDF
Outils de gestion de projets
Deployer en continu, Benoît Lafontaine, USIEVENT 2013
DevMobCA: Continuous integration
Présentation DEVOPS_Mauritanie.pptx
Présentation DEVOPS-Majeur.pptx
Présentation DEVOPSS.pptx
Présentation DEVOPS_.pptx
Présentation DEVOPS_Black.pptx
Industrialisation PHP - Canal+
Integration continue et déploiement automatisé
Présentation DEVOPS_hyper.pptx
Code, ship and run
NightClazz Build Tools & Continuous Delivery Avancé
Présentation DEVOPS_DIR.pptx
Présentation DEVOPS.pptx
Présentation DEVOPS_PO.pptx
Présentation DEVOPS_CONSOLE.pptx
Deploy automatic in the cloud
Déploiement continu, l'agilité maximisée ? - Pierre-Martin Tardif
At2008 Grenoble Hugonnet Sanlaville Public
Outils de gestion de projets
Publicité

Plus de Julien Garderon (9)

PPTX
Audit sécurité - campus CESI Angoulême 2019
PDF
Penser son système d’information, appréhender ses évolutions
PDF
Penser son Système d’Information, Appréhender ses évolutions
PDF
"Sauver le TER" en Nouvelle-Aquitaine
PDF
Parc automobile régional de Poitou-Charentes (2012)
PDF
Intelligence Politique, renseignement, influence et organisation de l'informa...
PDF
Lot de document #1 - Budget régional de Poitou-Charentes
PDF
Tract - "Vous avez le droit de savoir !"
PDF
"Le milliard de promesses irréalisées"
Audit sécurité - campus CESI Angoulême 2019
Penser son système d’information, appréhender ses évolutions
Penser son Système d’Information, Appréhender ses évolutions
"Sauver le TER" en Nouvelle-Aquitaine
Parc automobile régional de Poitou-Charentes (2012)
Intelligence Politique, renseignement, influence et organisation de l'informa...
Lot de document #1 - Budget régional de Poitou-Charentes
Tract - "Vous avez le droit de savoir !"
"Le milliard de promesses irréalisées"

Dernier (10)

PPTX
FormationFormation e pFormationour HC .pptx
PDF
Régulateurs-Numériques cours dasservissement
PDF
CHAPITRE 3 Typologie des réseaux [Enregistrement automatique] 4.pdf
PPTX
A Recurrent Neural Network (RNN)s a type of artificial neural network
PDF
Cours SPC resumé-1.pdf...................
PPTX
CH1-RMELLOULI-Données des problèmes d'ordonnancement de la production.pptx
PPTX
Lirrigation-et-le-drainage-en-agriculture-Principes-et-Pratiques.pptx
PPTX
Introduction aux Systèmes temps réel.pptx
PDF
Chapitre 7 - Routage dynamique...........
PPTX
Logique séquentielle : les fondamentaux
FormationFormation e pFormationour HC .pptx
Régulateurs-Numériques cours dasservissement
CHAPITRE 3 Typologie des réseaux [Enregistrement automatique] 4.pdf
A Recurrent Neural Network (RNN)s a type of artificial neural network
Cours SPC resumé-1.pdf...................
CH1-RMELLOULI-Données des problèmes d'ordonnancement de la production.pptx
Lirrigation-et-le-drainage-en-agriculture-Principes-et-Pratiques.pptx
Introduction aux Systèmes temps réel.pptx
Chapitre 7 - Routage dynamique...........
Logique séquentielle : les fondamentaux

Organiser son CI/CD - présentation

  • 1. Ou comment diviser par 18 le coût de la chaîne CI/CD… Julien Garderon – juin 2021 Sommaire — Dépôt typique Python (ex.) Modalités de build Organisation totale Négocier les versions Ajuster les coûts Page blanche Concepts fondamentaux
  • 2. Python C Monde « Java » Javascript Typescript LISP (CL) Forth Abstraction Code machine Code pseudo-machine Bytecode Interprétation 2 1 1 : Compilation (changement d’abstraction ; ex. compilation du C vers du code machine) 2 : Transcompilation (changement de format d’abstraction ; ex. transcompilation de Typescript vers du Javascript) => Exemple d’un changement de langage : procédural vers fonctionnel ; changement syntaxique entre des versions, etc. Concepts de « construction », « compilation », etc. « Un compilateur source à source, transpileur ou transcompilateur est un type de compilateur qui prend le code source d'un langage de programmation et le compile dans un autre langage de programmation. Un compilateur source-à-source opère sur deux langages avec approximativement le même niveau d'abstraction, alors qu'un compilateur traditionnel compile un langage de haut niveau vers un langage de bas niveau. » – Wikipédia, Compilateur source à source Format le « grand flou » entre la pure interprétation et le code machine Bas niveau Haut niveau
  • 3. Dépôt Git (avec code Python) Registre PIP Dépôt typique python Étape 1 : test statique Étape 2 : test dynamique Étape 3 : création de la doc Étape 4 : création de l’artefact PIP Étape 5 : enregistrement auprès du registre Chaîne de construction d’un élément Étapes « qualité » Étapes « connaissance » (dont génération des graphiques avec PlantUML, Kroki, etc.) Étapes « mise à disposition » ! (alerte de fin : web hook) et
  • 4. Module 1 Module 2 Applicatif Installateur Déploiement 2 2’ Module 1 Module 2 Applicatif InstallateurDéploiement 1 1’ Ex. 1 : Chaîne unique (« intégrée ») Ex. 2 : Chaînes multiples Modalités de build Runner plus puissant (max du besoin sur la chaîne) ; gérer davantage les branches ; créer des bypass Adapter chaque runner à sa tâche ; tests locaux ; optimiser le « time to execute » ; gérer finement les versions On prend le max de la construction (car parallélisation) Exemple ici d’un projet d’applicatif Python avec deux modules, un corps principal sous le format d’un package et un installateur (.deb). L’ensemble est fourni sous le format d’une image Docker, pour être utilisé dans un orchestrateur type Kubernetes
  • 5. Dépôt module 1 Dépôt module 2 Dépôt applicatif Dépôt de déploiement Dépôt d’installateur Registre PIP Registre DEB Registre Conteneur Registre documentation Orchestrateur 1 2 3 4 Organisation totale Un dépôt = un sous-projet L’organisation du projet peut impacter l’organisation des dépôts – et inversement (ex. classique entre un projet monolithique vs un projet multiple sous le format de micro-services). Il doit rester une cohérence d’ensemble
  • 6. v1 Dépôt module 1 Dépôt module 2 Dépôt applicatif Dépôt de déploiement Dépôt d’installateur v1 v2 v3 v4 v2 v3 v4 v5 v6 v1 v2 v3 v4 v5 v6 v7 v8 v1 v2 v3 v4 (origine) Instant « T1 » => déploiement v(g) 1 Ex. dernière version dispo. ● Module 1 = v1 ● Module 2 = v2 ● App = v2 ● Installateur = v1 Instant « T2 » => déploiement v(g) 2 à 4 Ex. fixer une version ● Module 1 = v2 ● Module 2 = v3 ● App = v5 à v7 suivant ● Installateur = v3 Suivant la date de livraison, pour une même version « v3 » de mon installateur, je livre en réalité 3 images différentes pour le « run » Négocier les versions Temps
  • 7. Ajuster les coûts Besoin technique : ● chaîne unique : B2-15 ● 0,1169 € / heure ● 42,00 € / mois ● chaînes multiples : B2-7 ● 0,0619 € / heure ● 22 € / mois Durées horaires (hors coût projet, estimations fictives) : ● Construction module 1 : 1 ● Construction module 2 : 0,5 ● Construction applicatif : 0,75 ● Construction installateur : 0,25 ● Déploiement : 1 Durée cumulée pour un déploiement (avec build) : ● Intégrée : 1 + 0.5 + 0.75 + 0.25 + 1 = 3,5 ● Parallèle : max(1 ; 0.5; 0.75; 0.25) + 1 = 2 Coût d’un déploiement : ● Intégrée (B2-15) : ● Location horaire : 3.5 => 4 x 0,1169 = 0,40915 € ● Location mensuelle : 42 € ● Parallèle (B2-7) : ● Location horaire : 2 x 0,0619 = 0,1238 € ● Location mensuelle : 22 € Point de bascule location horaire vs mensuelle : ● Intégrée : 42 / 0,40915 = 102 déploiements ● Parallèle : 22 / 0,1238 = 176 déploiements Nbre de déploiements 1 10 100 125 150 175 200 1000 Intégré (mensuelle) 42 42 42 42 42 42 42 43 Intégré (horaire) 0,40915 4,0915 40,915 51,14375 61,3725 71,60125 81,83 409,15 Parallèle (mensuelle) 22 22 22 22 22 22 22 23 Parallèle (horaire) 0,1238 1,238 12,38 15,475 18,57 21,665 24,76 123,8 1 10 100 125 150 175 200 1000 0 15 30 45 60 75 90 105 120 135 Evol. coûts d'une livraison de version Chaîne de compilation et déploiement, par modalité Intégré (mensuelle) Intégré (horaire) Parallèle (mensuelle) Parallèle (horaire) Nbre de déploiements prévus / mois en € HT 1h x 24 x 30 = 720h ; hors 44,56 € si location horaire (au lieu de 22 € en location mensuelle) => pousse à la location mensuelle