Introduction
au DevOps
Bonjour !
Guillaume Leroy
Intégrateur
[email protected]
@gleroypro
2
Credits
Cours réalisé avec Damien Pacaud,
responsable de l’infrastructure chez Teads
3
1.
Historique
Il était une fois dans une galaxie
lointaine, très lointaine...
Avant
Analystes Administrateurs
programmeurs système
5
Analystes programmeurs
⬡ Fonctionnalités
⬡ Vélocités
⬡ Nouveautés technologiques
6
Administrateurs système
⬡ Stabilité (on parle de uptime)
⬡ Scalabilité
⬡ Capacité à réparer rapidement (MTTR)
⬡ Maîtriser le changement
⬡ Mesurer les impacts
7
Problèmes
⬡ Mauvaise communication
⬡ Chez moi ça marche!
⬡ Moins de responsabilité chez un
programmeur
8
2001
Manifeste Agile
9
“ Nous découvrons de
meilleures approches
du développement
logiciel en le
pratiquant et en
aidant les autres à le
pratiquer
10
Cycle de vie d’un projet
Vie en production Développement
Corrections de bugs 4 1 Création de fonctionnalités
Maintenance
Mise en production
Recette
Accessibilité du projet par le client
3 2 Intégration des différents travaux
Satisfaire les contraintes clients
(temps de réponse, uptime…) Vérification du bon fonctionnement
Identification des bugs
11
Et techniquement parlant ?
⬡ Plus de tests automatisés !
⬡ Démocratisation de l’intégration continue
⬡ Faciliter le déploiement des applications
12
Et humainement parlant ?
?
Administrateurs
système
13
2009
Velocity Conf 09 (1)
(1) https://www.youtube.com/watch?v=LdOe18KhtT4 14
2.
DevOps mindset
Culture du DevOps
“ Automation
Culture
Measurement
Sharing
16
Culture
⬡ Casser les murs entre les équipes
⬡ Accepter le changement
⬡ Transparence
17
Automation
⬡ Automate all the things!
⬡ One-click build
⬡ One-click deploy
18
Measurement
⬡ Monitor all the things!
⬡ Ce qui ne peut être mesuré n’existe pas
⬡ Distribution
19
Sharing
⬡ Le code
⬡ Les outils
⬡ Les connaissances
20
DevOps Loop
21
3.
Les outils
Cloud, conteneurisation, IaC...
Docker
Conteneurisation
23
Conteneur
⬡ Virtualization au niveau de l’OS
⬡ Isolation des accès et des ressources
d’un processus
⬡ Chroot / CGroup / Namespace
24
Docker
⬡ A facilité la création de conteneur
⬡ Facilite la création d’environnement
25
Architecture
26
Concept
⬡ Image
⬡ Conteneur
⬡ Réseau
⬡ Volume
27
Orchestration
⬡ Management du cycle de vie des
conteneurs
⬡ Partage des ressources d’un cluster
28
Cloud
29
Solutions
IaaS PaaS SaaS
Infrastructure as a Service Platform as a Service Software as a Service
Fournit des machines Orchestre des
Boîte noire
virtuelles conteneurs
AWS, GCP Heroku, OpenShift -
30
Régions
31
VPC
⬡ Réseau privé virtuel
⬡ Un VPC par région
⬡ Un sous réseau par zone
32
Instance
⬡ Configuration de l’OS
⬡ Configuration des resources
33
Load Balancer
⬡ Composant managé
⬡ Équilibre le trafic entre plusieurs
instances
⬡ Ajoute / retire des instances de manière
autonome en fonction du trafic
34
Élasticité
⬡ Groupe d’instances
⬡ Ajuste le nombre d’instance
⬡ Condition de mise à l’échelle
configurable
35
Object storage
⬡ Espace de stockage infini
⬡ Temps d’accès très lents
36
Base de données
⬡ Configuration du SGBD
⬡ Haute disponibilité
37
Coût
⬡ On paye ce que l’on consomme
⬡ Assez complexe
⬡ Vérifier régulièrement les factures
38
IaC
Infrastructure as Code
39
IaC
⬡ Décrire une infrastructure dans du code
⬡ Automatisation
⬡ Reproductibilité
⬡ Versionable
⬡ Relecture
⬡ Documentation
40
Choix
Spécifique au vendeur Généraliste Personnalisé
Cloud formation,
Terraform Bash, Go, Perl...
Deployment manager
41
4.
L’automatisation
CI/CD
CI
Continuous Integration
43
Intégration...
⬡ Mettre en commun les différents
travaux des développeurs
⬡ S’assurer de la bonne exécution du build
et des tests
44
… continue
⬡ Automatiser l’exécution du build et des
tests
⬡ Réaliser cette opération à chaque
changement apporté au code
45
Objectifs
⬡ Réduire les impacts des bugs
⬡ Améliorer la qualité et la quantité des
tests
⬡ Augmenter la fréquence des releases
⬡ Réduire les risques
46
CD : Continuous Deployment
⬡ Déploiement automatisé
⬡ Éviter les arrêts de service
⬡ Automatisation des rollbacks si une
erreur survient
47
Stratégies de déploiement
Rolling update Blue/Green Canary
Nouvelle version dans
Nouvelle version dans un
Incrémentale, serveur un groupe de serveur,
groupe de serveur, redirection
par serveur redirection du trafic
du trafic
progressive
48
Objectifs
⬡ Limiter les impacts
⬡ Rendre les mises en production
anecdotique
⬡ Réduire le time to market d’une
fonctionnalité
49
Exemple de pipeline
⬡ Build
⬡ Exécution des tests unitaires
⬡ Conteneurisation
⬡ Lancement d’un conteneur dans un
environnement
⬡ Exécution des tests d’intégration
50
Exemple de pipeline
⬡ Exécution des tests de non régression
⬡ Release
⬡ Déploiement sur le serveur de recette
⬡ Déploiement sur le serveur de
préproduction
⬡ Déploiement en production
51
Liste non exhaustive d’outils
⬡ Jenkins
⬡ GitLab CI
⬡ Travis
⬡ GitHub Actions
⬡ ...
52
5.
Provisionnement
Un peu d’admin sys’
Définition
⬡ Installation des logiciels
⬡ Configuration
⬡ Mise à disposition
54
Manuel
⬡ Risque d’erreurs
⬡ Non uniforme sur toutes les machines
⬡ Pas de documentation
⬡ Ne passe pas la mise à l’échelle
55
Outils de provisionnement
⬡ Deux types : avec et sans agent
⬡ Deux manières : pull et push
⬡ Deux philosophies : descriptif et déclaratif
56
Quelques outils...
⬡ Salt
⬡ Puppet
⬡ Ansible
57
5.
Monitoring
S’assurer qu’un service en production
reste en production
Monitoring
⬡ Métriques
⬡ Logs
⬡ Dataviz
59
Monitoring
⬡ Système & réseau
⬡ Logs applicatif
⬡ Dataviz
60
Alerting
⬡ Passage d’un seuil
⬡ Différents niveaux d’alertes
⬡ Email, Slack...
61
Base de données temporelle
⬡ Modèle de données basé sur le temps
⬡ Temps-valide
⬡ Temps-transaction
⬡ Donnée bi-temporelle
62
Quelques outils
⬡ Elasticsearch Logstash Kibana (ELK)
⬡ Prometheus
⬡ Nagios
⬡ Grafana
⬡ ...
63
6.
Futur
Nom de Zeus...
Serverless
⬡ Pas de déploiement
⬡ Juste du code
⬡ Contraintes sur les resources fortes
65
Ops
⬡ Développement d’outils
⬡ Partage des responsabilités
66
Merci à
tous !
Des questions ?
Par mail :
[email protected]
67