Transformation
DevOps
Brise-glace : ceci ou cela
Faisons connaissance
Transformation
DevOps
You build it, you run it
- Werner Vogels, Amazon CTO
NoCode, DevOps : transformations
Par le pouvoir du test unitaire
Le ‘CAMS model’
#NSFW - don’t Google it
Le ‘CAMS model’
#NSFW - don’t Google it
Culture
Le ‘CAMS model’
#NSFW - don’t Google it
Culture
Automation
Le ‘CAMS model’
#NSFW - don’t Google it
Culture
Automation
Measurement
Le ‘CAMS model’
#NSFW - don’t Google it
Culture
Automation
Measurement
Sharing
Le ‘CAMS model’
#NSFW - don’t Google it
Culture
Automation
Measurement
Sharing
Quizz de connaissances
Connaissez-vous déjà le DevOps ?
Transformation
DevOps
Quiz DevOps
Le DevOps c’est quoi ?
1. une culture
2. un ensemble de bonnes pratiques
3. une collection d’outils
4. toutes les réponses précédentes
Quiz DevOps
On associe parfois l’acronyme C.A.M.S. au DevOps. Que
signifie-t-il ?
1. Create, Anticipate, Migrate, Simplfy
2. Cloud, AWS, Manual, Server
3. Culture, Automation, Measure, Sharing
4. Crap, Another Machine Shutdown
Quiz DevOps
Lequel de ces ensembles d’outils associe-t-on au
DevOps ?
1. VS Code, Eclipse, IntelliJ
2. Ansible, Jenkins, Terraform
3. Subversion, Git, Bash
4. Skiddo, Cubone, Snorlax
Quiz DevOps
Quelles responsabilités sont font partie de DevOps ?
1. Dev
2. Ops
3. Security
4. Testing
Quiz DevOps
Cloud + DevOps, c’est compatible ?
1. Oui oui oui, c’est une combinaison très puissante !
2. Oui, mais ça demande des efforts
3. Pas vraiment
4. Non, pas du tout
Quiz DevOps
L’automatisation, c’est important pour le DevOps ?
1. C’est vital pour des releases plus rapides et plus sûres
2. C’est important, mais ce n’est pas la top priorité
3. C’est important seulement pour certains cas
4. C’est optionnel
Que signifie “DevOps” ?
Process de release
Objectif du DevOps
⏱ Réduire le Time-To-Market
Accélérer la disponibilité pour les utilisateurs finaux
● de fonctionnalités
● d’améliorations
● de bugfixes
➟ Qualité, vitesse
Activité
Reconstitue la boucle d’infinité du DevOps
Transformation
DevOps
Boucle d’infinité du DevOps
● Monitor
● Test
● Plan
● Release
● Build
● Deploy
● Operate
Boucle d’infinité du DevOps
Que cherche à résoudre le DevOps ?
1/ Les frictions et blocages dans le process de
release, qui
● ralentissent le process
● engendrent des efforts superflus
● génèrent des erreurs
Jeu de rôle
Dev et Ops : sommes-nous si différents ?
Transformation
DevOps
Scénario 1
2 participants :
● le responsable développement
● le responsable ops
Scénario :
A son arrivée au bureau, le responsable ops découvre que les devs ont mis en production, la veille au
soir, une nouvelle version de leur application publique sans en être averti.
Le responsable dev estime qu’il n’avait pas le choix car un bug critique a été repéré par un client.
Les utilisateurs n’ont pas encore découvert la nouvelle version…
Scénario 2
3 participants :
● le responsable développement
● le responsable ops
● le chef de projet
Scénario :
Les développeurs ont travaillé dur sur une nouvelle mise à jour de l'application. Ils sont impatients de
déployer et de voir comment elle fonctionne en production. Cependant, les ops sont sceptiques quant
à la fiabilité de la mise à jour et craignent que cela ne cause des problèmes pour les utilisateurs.
Les développeurs argumentent que la mise à jour a été rigoureusement testée et qu'elle apportera de
nombreuses améliorations pour les utilisateurs. Les ops sont préoccupés car la mise à jour n'a pas été
testée en environnement de production et qu'il y a un risque de perturbation pour les utilisateurs.
Le conflit s'intensifie lorsque les deux parties sont incapables de parvenir à un accord et que la
décision finale revient au gestionnaire de projet. Le gestionnaire de projet doit trouver un moyen de
satisfaire les deux parties et de prendre une décision qui convient à l'entreprise dans son ensemble.
Scénario 3
3 participants :
● le responsable développement
● le responsable ops
● le PDG
Scénario :
Dans une belle entreprise de la tech, les développeurs et les ops sont deux équipes différentes, mais
travaillent étroitement ensemble pour assurer le bon fonctionnement de l'entreprise.
Cependant, un conflit commence à surgir entre les deux équipes. Les dev accusent les ops de ne pas
être assez rapides pour déployer leurs mises à jour, ce qui entraîne des retards et des bugs dans le
système. Les ops, de leur côté, accusent les dev de ne pas leur fournir assez de documentation et de
ne pas prévoir suffisamment de temps de test avant les déploiements.
Les tensions montent entre les deux équipes et ils commencent à s'éviter autant que possible. Le PDG
entre en scène pour animer une séance de médiation et trouver une issue au problème
Que cherche à résoudre le DevOps ?
2/ Les manques de collaboration et les conflits
d’intérêt
● Les devs n’ont pas la main sur l’infra ; les ops
ne savent pas comment fonctionne le code.
Cela peut mettre une mise en production en
danger.
● Les deux équipes ont des préoccupations
différentes
○ Les devs veulent sortir rapidement de
nouvelles améliorations
○ Les ops veulent maintenir la stabilité
Objectif du DevOps (rappel)
Ils ont pourtant un objectif
commun :
Livrer rapidement des
applications de haute qualité
à leurs utilisateurs
“A team is not a group of people who work together. A team is a group of
people who trust each other”
- Simon Sinek
Que cherche à résoudre le DevOps ?
3/ Le travail manuel
● est lent
● favorise l’apparition d’erreurs
● freine le partage de connaissances
● est difficile à tracer
● est difficile à reproduire
Cas idéal du DevOps
● Une automatisation exhaustive
● Des process bien rationalisés
➟ on peut aller jusqu’à déployer plusieurs fois par jour 😎 🚀
Retour d’expérience
Le métier de DevOps
Transformation
DevOps
Qu’est-ce qui constitue le DevOps ?
● une culture
● des bonnes pratiques
● des outils
À retenir :
● c’est tout ce qui peut aider le process de sortir du logiciel rapidement
et avec une bonne qualité
● à la base, c’est surtout la croyance que les devs et ops devaient
travailler plus souvent ensemble
1001 façons d’implémenter le DevOps
Problème :
Cette définition est trop large ; il y a autant de
manières d’interpréter le DevOps qu’il y a
d’entreprises
Certains schémas communs ont émergé, et
notamment celui de DevOps en tant que rôle,
qu’il soit endossé par un dev, un ops, ou par
quelqu’un qui ne fait que du DevOps
La trousse à outils du DevOps
Carte heuristique
Les outils, notions, langages dans le
Transformation
contexte DevOps
DevOps
Activité : carte heuristique
Énoncé : Constituez une carte heuristique des
● concepts, notions
● frameworks
● best practices
● outils
● langages
que vous connaissez et qui pourraient avoir un intérêt pour le DevOps
Au cœur du DevOps : un process de release rationalisé
Comment devenir ingénieur DevOps ?
● Quels outils et concepts apprendre ?
● Les tâches et responsabilités
● Les frontières entre DevOps,
développement et opes
Comment devenir ingénieur DevOps ?
Identifier les catégories
Concepts de Réseau et
OS, système CI / CD
développement securité
Langage de Orchestration
Cloud provider Conteneurs
scripting de conteneurs
Contrôle de
Monitoring Infra as code
version
Comment devenir ingénieur DevOps ?
Choisir un outil par catégorie
Concepts de Réseau et
OS, système CI / CD
développement securité
Langage de Orchestration
Cloud provider Conteneurs
scripting de conteneurs
Contrôle de
Monitoring Infra as code
version
Comment devenir ingénieur DevOps ?
Utiliser ces outils en combinaison
Débat
Le SysOps, c’est quoi ?
Transformation
DevOps
Débat
Classez ces besoins métiers : Cloud ou on-prem ?
Transformation
DevOps
Cloud ou on-prem ?
Cloud computing : avantages
● Time-to-market plus court
○ Déploiements accélérés
○ Favorise l’expérimentation de nouvelles idées
● Plus grande flexibilité et aptitude à scaler sans avoir à investir en infra
● Peut permettre de faire des économies
○ Scale-down et scale-in quand on a des ressources en excès
● Peut permettre d’améliorer la sécurité
○ grâce aux nombreuses fonctionnalités orientées sécu, la
maintenance automatique et la gestion centralisée
● Prévention de la perte de données
○ backup, disaster recovery
Cloud computing : limitations
● Risque de vendor lock-in
● Moins de contrôle sur l’infra sous-jacente
● Questionnement sur des sujets de sécurité comme les données
privées et les menaces en ligne
● L’intégration avec un SI existant peut être compliquée
● Attention aux coûts non-anticipés
Cloud computing : une affaire de choix
Dans le cloud, on a toujours plusieurs manière de faire.
Il s’agit de mettre le curseur et choisir si on privilégie le contrôle ou le
confort.
Le cloud à la Jean-Cloud
Une manière “artisanale” de faire du cloud serait
● de provisionner une VM
● d’en prendre le contrôle
● de la configurer
● d’installer les logiciels
● d’installer l’application cible
Automatisation cloud : pourquoi ?
● Gagner du temps
● Réduire le risque d’erreur
● Intégrer le provisioning et les tests d’infra à la CI / CD
● Créer un système facilement reproductible
● Décrire l’infra sous forme humainement lisible
Automatisation : gestion de configuration
C’est un processus qui
permet de maintenir les
serveurs et logiciels dans
l'état souhaité et d'en
préserver la cohérence, au fil
des changements effectués.
Automatisation du cloud :
l’infra-as-code
Pour tous les autres
composants il y a l’IaC
(infrastructure-as-code) !
Et évidemment, on peut
combiner les deux.
Virtualisation : rappels
● Un serveur physique peut
porter plusieurs applications
● Chaque application tourne
dans une VM
Virtualisation : bénéfices
● Meilleur pooling des ressources (une seule machine physique
“divisée” en plusieurs machines virtuelles)
● Plus facile à mettre à l’échelle
● Les VMs peuvent être mises dans le cloud
Virtualisation : limitations
● Chaque VM nécessite
○ une allocation CPU
○ du stockage
○ de la mémoire
○ un OS “guest” complet
● Plus on a de VMs, plus on a besoin de ressources
● OS “guest” = gâchis de ressources
● La portabilité des applications n’est pas garantie
Conteneurs : introducton
● Packaging standardisé pour
les applications et
dépendances
● Les applications sont isolées
les unes des autres
● Le noyau de l’OS est partagé
Conteneurs vs VMs
Glossaire Docker
Lab
Docker : concepts et manipulation
Transformation
DevOps
https://docs.docker.com/get-started/
Docker : récap
Pendant ce TP Docker, on a appris :
● les commandes de base
● à créer, manipuler, partager une image
● persister la donnée
● combiner des conteneurs en “stack”
● améliorer une image (taille, sécurité)
Débat
Docker : les bonnes et mauvaises raisons
Transformation
de l’utiliser
DevOps
Docker : vrai ou faux ?
CI / CD : exemple de
process
CI / CD : les 8 principes
● Repeatable Reliable Process
● Automate Everything
● Version Control Everything
● Bring the Pain Forward
● Build-in Quality
● "Done" Means Released
● Everyone is Responsible
● Continuous improvement
CI / CD : paysage
GitHub Actions : définitions
Chaque workflow est défini dans un fichier propre dans .github/workflows
● Event : événement de repo qui déclenche le workflow
● Job : série de steps qui se déroule sur un même runner
● Action : application personnalisée pour GitHub Actions
● Runner : serveur qui exécute un workflow
GitHub Actions : anatomie d’un workflow
Nom du workflow
Déclencheur
Nom du job
Image docker sur
laquelle va tourner
le job
Step qui utilise du
Step qui utilise une script
action
Lab
CI avec GitHub Actions
Transformation
Créer et pousser une image Docker
DevOps
Pourquoi l’orchestration ?
Pas facile de scaler un nombre croissant
de conteneurs
C’est quoi l’orchestration ?
L'orchestration des conteneurs est un
processus qui automatise le déploiement,
la gestion, la mise à l'échelle, la mise en
réseau et la disponibilité des applications
basées sur des conteneurs.
La vie sans orchestration
…et la mode est aux micro-services…
Fonctionnalités courantes
● Provisioner des hôtes
● Instancier d’un ensemble de conteneurs
● Remplacer des conteneurs défaillants
● Lier les conteneurs
● Exposer des services à l‘extérieur du cluster
● Mise à l’échelle
Situation dans la stack système
Situation dans la stack système
L'orchestration de conteneurs assure la médiation entre les applications ou les
services d’une part, et les runtimes de conteneurs d’autre part.
Leurs trois missions principales sont :
● Gestion des services : labels, groupes, espaces de noms, dépendances,
équilibrage des charges, readiness checks.
● Planification : attribution, réplication, résurrection, mise à l’échelle, rolling
deployment, mises à niveau.
● Gestion des ressources : mémoire, CPU, GPU, volumes, ports, adresses IP
Quelques outils d’orchestration
Docker Swarm fournit des
fonctionnalités de clustering natives
pour les conteneurs Docker
Il transforme un groupe de Docker
engines en un seul Docker engine
virtuel
Alternatives à l’orchestration
Services managés
Confort d’utilisation
Orchestration
Scripting
Évaluation /quizz
Avez-vous compris DevOps ?
Transformation
DevOps
Autres ressources
● DevOps learning path
● Intro to Kubernetes
● Play with Docker (Docker sandbox)
● Play with Kubernetes (Kubernetes sandbox)
● GitHub Actions doc
Transformation
DevOps
Merci
Contactez-nous
[email protected]https://www.linkedin.com/in/kim-david-nguyen