6 sites web
5 applications mobiles
49 millions de visites/mois
53 millions de podcasts téléchargés/mois
...
Slide 5
Slide 5 text
Frontend Assets
Content Data
Message Bus
API
Streaming
API API API API
Slide 6
Slide 6 text
API API API API API
Message Bus
Slide 7
Slide 7 text
Une stack technique variée
Slide 8
Slide 8 text
+
CI/CD
Slide 9
Slide 9 text
D’où nous venons
Hooks
Résultats des jobs
Gitlab pour la gestion
des repos git
Jenkins pour les tests
et les déploiements
Slide 10
Slide 10 text
Pourquoi ça ne
marchait pas
Context Switching entre Gitlab et Jenkins
Config Jenkins statique, pas de customisation
L’équipe “CI/CD” en charge de tous les jobs
Temps d’attente en “Queue” importants
Slide 11
Slide 11 text
Là où on
voulait aller
Centraliser le code, la CI, les déploiements
Laisser la main aux équipes sur leur workflow de
mise en production
Fournir les outils et non les process
Slide 12
Slide 12 text
Le passage sur Kubernetes
Gitlab Kubernetes Executor
Runner A
Runner B
Runner ...
Master
Job
Job
Job
Job
Job
Job Job
Job
Job
Job Job
Job
Job
Slide 13
Slide 13 text
Le passage sur Kubernetes
Nodepool de Spot Instances
Job
Job
Job
Job
Job
Job
Job
Job
Job
Job
Job
Job
Job
Spot Spot Classic Classic
Slide 14
Slide 14 text
Le passage sur Kubernetes
Intégration native avec Prometheus, Grafana, AlertManager
Slide 15
Slide 15 text
Le passage sur Kubernetes
En résumé
Optimisation des coûts
Réduction des délais d’attente (CI “illimitée”)
Monitoring & Supervision
Maintenabilité
Slide 16
Slide 16 text
Problème suivant…
build ?
Slide 17
Slide 17 text
Sur Kubernetes, tout est conteneur
docker build n’est pas adapté à ce modèle
Build des images Docker
La problématique du build
Kaniko
github.com/GoogleContainerTools/kaniko
Construction d’images docker
“Rootless”
Pas besoin de daemon docker
Pas besoin d’être root
Peut tourner dans un pod kubernetes
Consommation “ À la demande ”
Très peu de “Pending Jobs” gitlab
Slide 25
Slide 25 text
Process vs Tools
L’équipe CI/CD est responsable de l’outillage
Les équipes de dev sont responsables de leur
workflow de déploiement
Slide 26
Slide 26 text
Métriques
Fréquence de déploiement en production
10/jour avant, 50/jour aujourd’hui
Temps de déploiement sur Kubernetes
de 6 minutes à 20s
Coût d’hébergement de la CI/CD
70% de gain annuels