SlideShare une entreprise Scribd logo
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

Tendances

DevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | Edureka
DevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | EdurekaDevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | Edureka
DevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | Edureka
Edureka!
 
Solaris Kernel Debugging V1.0
Solaris Kernel Debugging V1.0Solaris Kernel Debugging V1.0
Solaris Kernel Debugging V1.0
Jarod Wang
 
Gitlab CI/CD
Gitlab CI/CDGitlab CI/CD
Gitlab CI/CD
JEMLI Fathi
 
BPF / XDP 8월 세미나 KossLab
BPF / XDP 8월 세미나 KossLabBPF / XDP 8월 세미나 KossLab
BPF / XDP 8월 세미나 KossLab
Taeung Song
 
CI/CD (DevOps) 101
CI/CD (DevOps) 101CI/CD (DevOps) 101
CI/CD (DevOps) 101
Hazzim Anaya
 
CI/CD
CI/CDCI/CD
CI/CD
AmitDhodi
 
XPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARM
XPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARMXPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARM
XPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARM
The Linux Foundation
 
Tutoriel GIT
Tutoriel GITTutoriel GIT
Tutoriel GIT
Francois ANDRE
 
DevOps intro
DevOps introDevOps intro
DevOps intro
Abdelrhman Shawky
 
What is Jenkins | Jenkins Tutorial for Beginners | Edureka
What is Jenkins | Jenkins Tutorial for Beginners | EdurekaWhat is Jenkins | Jenkins Tutorial for Beginners | Edureka
What is Jenkins | Jenkins Tutorial for Beginners | Edureka
Edureka!
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et Docker
Stephane Manciot
 
Jenkins vs GitLab CI
Jenkins vs GitLab CIJenkins vs GitLab CI
Jenkins vs GitLab CI
CEE-SEC(R)
 
Gitlab ci-cd
Gitlab ci-cdGitlab ci-cd
Gitlab ci-cd
Dan MAGIER
 
Docker Containers - Talk Linux Day 2015
Docker Containers - Talk Linux Day 2015Docker Containers - Talk Linux Day 2015
Docker Containers - Talk Linux Day 2015
Fabio Ferrari
 
Gitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement ContinueGitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement Continue
Vincent Composieux
 
Git pour les (pas si) nuls
Git pour les (pas si) nulsGit pour les (pas si) nuls
Git pour les (pas si) nuls
Malk Zameth
 
Devops Porto - CI/CD at Gitlab
Devops Porto - CI/CD at GitlabDevops Porto - CI/CD at Gitlab
Devops Porto - CI/CD at Gitlab
Filipa Lacerda
 
Docker internals
Docker internalsDocker internals
Docker internals
Rohit Jnagal
 
GitLab for CI/CD process
GitLab for CI/CD processGitLab for CI/CD process
GitLab for CI/CD process
HYS Enterprise
 
Presentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequencesPresentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequences
Stéphane Di Cioccio
 

Tendances (20)

DevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | Edureka
DevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | EdurekaDevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | Edureka
DevOps vs Agile | DevOps Tutorial For Beginners | DevOps Training | Edureka
 
Solaris Kernel Debugging V1.0
Solaris Kernel Debugging V1.0Solaris Kernel Debugging V1.0
Solaris Kernel Debugging V1.0
 
Gitlab CI/CD
Gitlab CI/CDGitlab CI/CD
Gitlab CI/CD
 
BPF / XDP 8월 세미나 KossLab
BPF / XDP 8월 세미나 KossLabBPF / XDP 8월 세미나 KossLab
BPF / XDP 8월 세미나 KossLab
 
CI/CD (DevOps) 101
CI/CD (DevOps) 101CI/CD (DevOps) 101
CI/CD (DevOps) 101
 
CI/CD
CI/CDCI/CD
CI/CD
 
XPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARM
XPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARMXPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARM
XPDS16: Porting Xen on ARM to a new SOC - Julien Grall, ARM
 
Tutoriel GIT
Tutoriel GITTutoriel GIT
Tutoriel GIT
 
DevOps intro
DevOps introDevOps intro
DevOps intro
 
What is Jenkins | Jenkins Tutorial for Beginners | Edureka
What is Jenkins | Jenkins Tutorial for Beginners | EdurekaWhat is Jenkins | Jenkins Tutorial for Beginners | Edureka
What is Jenkins | Jenkins Tutorial for Beginners | Edureka
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et Docker
 
Jenkins vs GitLab CI
Jenkins vs GitLab CIJenkins vs GitLab CI
Jenkins vs GitLab CI
 
Gitlab ci-cd
Gitlab ci-cdGitlab ci-cd
Gitlab ci-cd
 
Docker Containers - Talk Linux Day 2015
Docker Containers - Talk Linux Day 2015Docker Containers - Talk Linux Day 2015
Docker Containers - Talk Linux Day 2015
 
Gitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement ContinueGitlab CI : Integration et Déploiement Continue
Gitlab CI : Integration et Déploiement Continue
 
Git pour les (pas si) nuls
Git pour les (pas si) nulsGit pour les (pas si) nuls
Git pour les (pas si) nuls
 
Devops Porto - CI/CD at Gitlab
Devops Porto - CI/CD at GitlabDevops Porto - CI/CD at Gitlab
Devops Porto - CI/CD at Gitlab
 
Docker internals
Docker internalsDocker internals
Docker internals
 
GitLab for CI/CD process
GitLab for CI/CD processGitLab for CI/CD process
GitLab for CI/CD process
 
Presentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequencesPresentation DevOps : enjeux , objectifs, consequences
Presentation DevOps : enjeux , objectifs, consequences
 

Similaire à Organiser son CI/CD - présentation

Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipeline
Nicolas wallerand
 
Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014
Ippon
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
boulonvert
 
Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5
Microsoft
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Jasmine Conseil
 
Git ou le renouveau du contrôle de version
Git ou le renouveau du contrôle de versionGit ou le renouveau du contrôle de version
Git ou le renouveau du contrôle de versiongoldoraf
 
CodeBuilder_DevOpsCenter.pptx
CodeBuilder_DevOpsCenter.pptxCodeBuilder_DevOpsCenter.pptx
CodeBuilder_DevOpsCenter.pptx
ThomasParaiso1
 
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
Publicis Sapient Engineering
 
Présentation sur Maven 2 et petit retour d'expérience
Présentation sur Maven 2 et petit retour d'expériencePrésentation sur Maven 2 et petit retour d'expérience
Présentation sur Maven 2 et petit retour d'expérienceKhanh Maudoux
 
Présentation Maven
Présentation MavenPrésentation Maven
Présentation MavenSOAT
 
Keynote .NET 2015 : une nouvelle ère
Keynote .NET 2015 : une nouvelle èreKeynote .NET 2015 : une nouvelle ère
Keynote .NET 2015 : une nouvelle ère
Microsoft
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
MSDEVMTL
 
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
Hamida Rebai Trabelsi
 
Introdot Netc Sharp Fr
Introdot Netc Sharp FrIntrodot Netc Sharp Fr
Introdot Netc Sharp FrGregory Renard
 
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
Julien Wittouck
 
Outils de construction pour la recherche
Outils de construction pour la rechercheOutils de construction pour la recherche
Outils de construction pour la recherche
Johan Moreau
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache Maven
Arnaud Héritier
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Cellenza
 
Compte rendu Blend Web Mix 2015
Compte rendu Blend Web Mix 2015Compte rendu Blend Web Mix 2015
Compte rendu Blend Web Mix 2015
SQLI DIGITAL EXPERIENCE
 
C++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in ParisC++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in Paris
christophep21
 

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

Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipeline
 
Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
 
Git ou le renouveau du contrôle de version
Git ou le renouveau du contrôle de versionGit ou le renouveau du contrôle de version
Git ou le renouveau du contrôle de version
 
CodeBuilder_DevOpsCenter.pptx
CodeBuilder_DevOpsCenter.pptxCodeBuilder_DevOpsCenter.pptx
CodeBuilder_DevOpsCenter.pptx
 
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
XebiCon'17 : Monitoring et métrologie pour les conteneurs - Jean-Pascal Thie...
 
Présentation sur Maven 2 et petit retour d'expérience
Présentation sur Maven 2 et petit retour d'expériencePrésentation sur Maven 2 et petit retour d'expérience
Présentation sur Maven 2 et petit retour d'expérience
 
Présentation Maven
Présentation MavenPrésentation Maven
Présentation Maven
 
Keynote .NET 2015 : une nouvelle ère
Keynote .NET 2015 : une nouvelle èreKeynote .NET 2015 : une nouvelle ère
Keynote .NET 2015 : une nouvelle ère
 
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
 
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
 
Introdot Netc Sharp Fr
Introdot Netc Sharp FrIntrodot Netc Sharp Fr
Introdot Netc Sharp Fr
 
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
 
Outils de construction pour la recherche
Outils de construction pour la rechercheOutils de construction pour la recherche
Outils de construction pour la recherche
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache Maven
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1
 
Compte rendu Blend Web Mix 2015
Compte rendu Blend Web Mix 2015Compte rendu Blend Web Mix 2015
Compte rendu Blend Web Mix 2015
 
C++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in ParisC++ 11 - Tech Days 2014 in Paris
C++ 11 - Tech Days 2014 in Paris
 

Plus de Julien Garderon

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

Plus de Julien Garderon (9)

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

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