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

Code Factory avec GitLab CI et Rancher
Code Factory avec GitLab CI et RancherCode Factory avec GitLab CI et Rancher
Code Factory avec GitLab CI et RancherSUSE
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfboulonvert
 
Intégration continue et déploiement continue avec Jenkins
Intégration continue et déploiement continue avec JenkinsIntégration continue et déploiement continue avec Jenkins
Intégration continue et déploiement continue avec JenkinsKokou Gaglo
 
Containerd + buildkit breakout
Containerd + buildkit breakoutContainerd + buildkit breakout
Containerd + buildkit breakoutDocker, Inc.
 
Introduction à la démarche Devops
Introduction à la démarche DevopsIntroduction à la démarche Devops
Introduction à la démarche DevopsRomain Chalumeau
 
Présentation docker et kubernetes
Présentation docker et kubernetesPrésentation docker et kubernetes
Présentation docker et kubernetesKiwi Backup
 
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)safwenbenfredj
 
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
 
Sw 100 fr docker conteneurisation des applications
Sw 100 fr docker conteneurisation des applicationsSw 100 fr docker conteneurisation des applications
Sw 100 fr docker conteneurisation des applicationsStephane Woillez
 
Introduction à l’intégration continue avec Jenkins
Introduction à l’intégration continue avec JenkinsIntroduction à l’intégration continue avec Jenkins
Introduction à l’intégration continue avec JenkinsEric Hogue
 
Devops - vision et pratiques
Devops - vision et pratiquesDevops - vision et pratiques
Devops - vision et pratiquesJoseph Glorieux
 
Développement et conception d'une application de générateur des QR Code Dynam...
Développement et conception d'une application de générateur des QR Code Dynam...Développement et conception d'une application de générateur des QR Code Dynam...
Développement et conception d'une application de générateur des QR Code Dynam...shili khadija
 
Kubernetes 101 for Beginners
Kubernetes 101 for BeginnersKubernetes 101 for Beginners
Kubernetes 101 for BeginnersOktay Esgul
 
Rapport PFE Application Web Mobiles belwafi bilel
Rapport PFE Application Web Mobiles belwafi bilelRapport PFE Application Web Mobiles belwafi bilel
Rapport PFE Application Web Mobiles belwafi bilelBelwafi Bilel
 
Introduction To Containers - Builders Day Israel
Introduction To Containers - Builders Day IsraelIntroduction To Containers - Builders Day Israel
Introduction To Containers - Builders Day IsraelAmazon Web Services
 
Docker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerDocker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerThibaut Marmin
 

Tendances (20)

Code Factory avec GitLab CI et Rancher
Code Factory avec GitLab CI et RancherCode Factory avec GitLab CI et Rancher
Code Factory avec GitLab CI et Rancher
 
Docker
DockerDocker
Docker
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
Intégration continue et déploiement continue avec Jenkins
Intégration continue et déploiement continue avec JenkinsIntégration continue et déploiement continue avec Jenkins
Intégration continue et déploiement continue avec Jenkins
 
Containerd + buildkit breakout
Containerd + buildkit breakoutContainerd + buildkit breakout
Containerd + buildkit breakout
 
Introduction à la démarche Devops
Introduction à la démarche DevopsIntroduction à la démarche Devops
Introduction à la démarche Devops
 
Présentation docker et kubernetes
Présentation docker et kubernetesPrésentation docker et kubernetes
Présentation docker et kubernetes
 
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
Rapport de projet_de_fin_d__tudes__pfe__safwen (8)
 
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 ...
 
Ansible tp
Ansible tpAnsible tp
Ansible tp
 
Sw 100 fr docker conteneurisation des applications
Sw 100 fr docker conteneurisation des applicationsSw 100 fr docker conteneurisation des applications
Sw 100 fr docker conteneurisation des applications
 
Introduction à l’intégration continue avec Jenkins
Introduction à l’intégration continue avec JenkinsIntroduction à l’intégration continue avec Jenkins
Introduction à l’intégration continue avec Jenkins
 
Devops - vision et pratiques
Devops - vision et pratiquesDevops - vision et pratiques
Devops - vision et pratiques
 
Docker Basics
Docker BasicsDocker Basics
Docker Basics
 
Développement et conception d'une application de générateur des QR Code Dynam...
Développement et conception d'une application de générateur des QR Code Dynam...Développement et conception d'une application de générateur des QR Code Dynam...
Développement et conception d'une application de générateur des QR Code Dynam...
 
Kubernetes 101 for Beginners
Kubernetes 101 for BeginnersKubernetes 101 for Beginners
Kubernetes 101 for Beginners
 
Rapport PFE Application Web Mobiles belwafi bilel
Rapport PFE Application Web Mobiles belwafi bilelRapport PFE Application Web Mobiles belwafi bilel
Rapport PFE Application Web Mobiles belwafi bilel
 
Introduction To Containers - Builders Day Israel
Introduction To Containers - Builders Day IsraelIntroduction To Containers - Builders Day Israel
Introduction To Containers - Builders Day Israel
 
Jenkins
JenkinsJenkins
Jenkins
 
Docker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à DockerDocker Tours Meetup #1 - Introduction à Docker
Docker Tours Meetup #1 - Introduction à Docker
 

Similaire à Organiser son CI/CD - présentation

Chaine de production pipeline
Chaine de production   pipelineChaine de production   pipeline
Chaine de production pipelineNicolas wallerand
 
Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Formation GIT gratuite par ippon 2014
Formation GIT gratuite par ippon 2014Ippon
 
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.5Microsoft
 
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.pptxThomasParaiso1
 
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 èreMicrosoft
 
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.pdfHamida 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'tsJulien Wittouck
 
Outils de construction pour la recherche
Outils de construction pour la rechercheOutils de construction pour la recherche
Outils de construction pour la rechercheJohan Moreau
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache MavenArnaud 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
 
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 Parischristophep21
 
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++Microsoft
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Ippon
 

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
 
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
 
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
 
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0
 

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-CharentesJulien 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"
 

Dernier

Provinlait 2024-Leviers fourrages - Madrid Aurélie Frayssinhes, Sandra (Cha...
Provinlait 2024-Leviers fourrages - Madrid  Aurélie  Frayssinhes, Sandra (Cha...Provinlait 2024-Leviers fourrages - Madrid  Aurélie  Frayssinhes, Sandra (Cha...
Provinlait 2024-Leviers fourrages - Madrid Aurélie Frayssinhes, Sandra (Cha...idelewebmestre
 
04-La génomique, un outil pour la sélection des ovins
04-La génomique, un outil pour la sélection des ovins04-La génomique, un outil pour la sélection des ovins
04-La génomique, un outil pour la sélection des ovinsInstitut de l'Elevage - Idele
 
01-La génétique s’adapte à la demande de la filière ovine
01-La génétique s’adapte à la demande de la filière ovine01-La génétique s’adapte à la demande de la filière ovine
01-La génétique s’adapte à la demande de la filière ovineInstitut de l'Elevage - Idele
 
05-La génétique, un levier majeur pour les enjeux à venir
05-La génétique, un levier majeur pour les enjeux à venir05-La génétique, un levier majeur pour les enjeux à venir
05-La génétique, un levier majeur pour les enjeux à venirInstitut de l'Elevage - Idele
 
2024 03 27 JTC actualités C Perrot (idele).pdf
2024 03 27 JTC actualités C Perrot (idele).pdf2024 03 27 JTC actualités C Perrot (idele).pdf
2024 03 27 JTC actualités C Perrot (idele).pdfidelewebmestre
 
Pour une traite de qualité, mieux comprendre l’interface trayon-manchon
Pour une traite de qualité, mieux comprendre l’interface trayon-manchonPour une traite de qualité, mieux comprendre l’interface trayon-manchon
Pour une traite de qualité, mieux comprendre l’interface trayon-manchonInstitut de l'Elevage - Idele
 
JTC_2024_TC Bâtiment et bien-être estival.pdf
JTC_2024_TC Bâtiment et bien-être estival.pdfJTC_2024_TC Bâtiment et bien-être estival.pdf
JTC_2024_TC Bâtiment et bien-être estival.pdfidelewebmestre
 
[2024] Comment scaler une application PHP vieille de plus de 20 ans ?
[2024] Comment scaler une application PHP vieille de plus de 20 ans ?[2024] Comment scaler une application PHP vieille de plus de 20 ans ?
[2024] Comment scaler une application PHP vieille de plus de 20 ans ?LAHAXE Arnaud
 
02-Le bélier de sélection:investissement technique, économique,environnemental
02-Le bélier de sélection:investissement technique, économique,environnemental02-Le bélier de sélection:investissement technique, économique,environnemental
02-Le bélier de sélection:investissement technique, économique,environnementalInstitut de l'Elevage - Idele
 
Présentation_Soirée-Information_ St-Eugène.pptx
Présentation_Soirée-Information_ St-Eugène.pptxPrésentation_Soirée-Information_ St-Eugène.pptx
Présentation_Soirée-Information_ St-Eugène.pptxVille de Châteauguay
 

Dernier (13)

JTC 2024 - Approche collective de la santé
JTC 2024 - Approche collective de la santéJTC 2024 - Approche collective de la santé
JTC 2024 - Approche collective de la santé
 
JTC 2024 - Actualités sur le bien-être animal
JTC 2024 - Actualités sur le bien-être animalJTC 2024 - Actualités sur le bien-être animal
JTC 2024 - Actualités sur le bien-être animal
 
Provinlait 2024-Leviers fourrages - Madrid Aurélie Frayssinhes, Sandra (Cha...
Provinlait 2024-Leviers fourrages - Madrid  Aurélie  Frayssinhes, Sandra (Cha...Provinlait 2024-Leviers fourrages - Madrid  Aurélie  Frayssinhes, Sandra (Cha...
Provinlait 2024-Leviers fourrages - Madrid Aurélie Frayssinhes, Sandra (Cha...
 
04-La génomique, un outil pour la sélection des ovins
04-La génomique, un outil pour la sélection des ovins04-La génomique, un outil pour la sélection des ovins
04-La génomique, un outil pour la sélection des ovins
 
01-La génétique s’adapte à la demande de la filière ovine
01-La génétique s’adapte à la demande de la filière ovine01-La génétique s’adapte à la demande de la filière ovine
01-La génétique s’adapte à la demande de la filière ovine
 
05-La génétique, un levier majeur pour les enjeux à venir
05-La génétique, un levier majeur pour les enjeux à venir05-La génétique, un levier majeur pour les enjeux à venir
05-La génétique, un levier majeur pour les enjeux à venir
 
2024 03 27 JTC actualités C Perrot (idele).pdf
2024 03 27 JTC actualités C Perrot (idele).pdf2024 03 27 JTC actualités C Perrot (idele).pdf
2024 03 27 JTC actualités C Perrot (idele).pdf
 
Pour une traite de qualité, mieux comprendre l’interface trayon-manchon
Pour une traite de qualité, mieux comprendre l’interface trayon-manchonPour une traite de qualité, mieux comprendre l’interface trayon-manchon
Pour une traite de qualité, mieux comprendre l’interface trayon-manchon
 
JTC_2024_TC Bâtiment et bien-être estival.pdf
JTC_2024_TC Bâtiment et bien-être estival.pdfJTC_2024_TC Bâtiment et bien-être estival.pdf
JTC_2024_TC Bâtiment et bien-être estival.pdf
 
[2024] Comment scaler une application PHP vieille de plus de 20 ans ?
[2024] Comment scaler une application PHP vieille de plus de 20 ans ?[2024] Comment scaler une application PHP vieille de plus de 20 ans ?
[2024] Comment scaler une application PHP vieille de plus de 20 ans ?
 
03-La sélection pour la résistance au parasitisme
03-La sélection pour la résistance au parasitisme03-La sélection pour la résistance au parasitisme
03-La sélection pour la résistance au parasitisme
 
02-Le bélier de sélection:investissement technique, économique,environnemental
02-Le bélier de sélection:investissement technique, économique,environnemental02-Le bélier de sélection:investissement technique, économique,environnemental
02-Le bélier de sélection:investissement technique, économique,environnemental
 
Présentation_Soirée-Information_ St-Eugène.pptx
Présentation_Soirée-Information_ St-Eugène.pptxPrésentation_Soirée-Information_ St-Eugène.pptx
Présentation_Soirée-Information_ St-Eugène.pptx
 

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