réalise/DevOps.md (view raw)
1---
2title: Le DevOps
3theme: ./_themes/5ika.css
4highlightTheme: github
5verticalSeparator: <!--v-->
6revealOptions:
7 transition: 'fade'
8---
9
10# Qu'est-ce qu'on a vu ?
11
12- Comment s'organiser avec Git et GitHub
13- Comment utiliser Docker sur sa machine
14- Comment mettre à disposition une image Docker depuis sa machine
15
16---
17
18# Qu'est-ce qu'on va voir ?
19
20- Qu'est-ce que le DevOps
21- Comment déployer en production
22- Comment automatiser les déploiements
23
24---
25
26# Le DevOps
27
28L'Agilité étendue à l'infrastructure
29
30---
31
32# Avant l'Agile: le modèle Waterfall
33
34Avant l’arrivée du DevOps et de l'Agile, le développement d’une
35application se faisait “en silos” selon le modèle Waterfall.
36
37![Waterfall](./img//waterfall.png)
38
39---
40
41- Métiers clairement définis et **bornés**: l’analyse, le design, le développement, le test, la sécurité, l’opérationnel
42- Le projet passe de silo en silo, chaque corps de métier **donnant au suivant** une fois qu’il a terminé son job
43- La **responsabilité est passée** de main en main selon l’avancée du projet
44- Une fois en production, si on veut changer quelque chose, on doit recommencer l’ensemble du processus
45- On développe **l’ensemble** de l’application d’un coup, il faut donc attendre la toute fin du projet pour avoir un service utilisable
46
47---
48
49L'**Agilité** a permis de résoudre en grande partie ces inconvénients.
50
51Cependant, elle concerne le **développement** d'application mais pas la mise
52à disposition de celle-ci à ces utilisateurs (**déploiement**).
53
54C'est là que le DevOps devient utile.
55
56---
57
58# Avant le DevOps
59
60Les développeurs (devs):
61- développent des nouvelles fonctionnalités, corrigent des bugs
62- apportent constamment du **changement** sur l’application
63- connaissent le code
64- ne connaissent pas l’infrastructure, le réseau, la sécurité IT
65
66
67Les admins système (ops):
68- mettent l’application à disposition des utilisateurs
69- maintiennent la **stabilité** de l’application en utilisation
70- ne connaissent pas le code
71- connaissent l’infrastructure, le réseau et la sécurité IT
72
73---
74
75# Avant le DevOps
76
77D’expérience, dans une équipe IT traditionnelle, certains problèmes se retrouvent partout:
78- Les développeurs et les opérationnels se relancent la balle de la responsabilité lorsqu’un problème / un bug survient
79- La communication entre silos est très procédurale et limitée entre devs et ops, ce qui ne facilite pas la résolution des problèmes
80- Les opérationnels ont la mainmise sur l’infrastructure. Pourtant c’est les développeurs qui créent les besoins de l’application
81- L’Agile règle les processus entre l’analyse, le développement, le client et le design mais les itérations d’Agile ne prennent pas en compte le test, la sécurité et les déploiements.
82
83---
84
85<center>
86
87![Boucle DevOps](img/devops_loop.png)
88
89</center>
90
91---
92
93# C'est quoi le DevOps ?
94
95- Une “nouvelle” façon de considérer le développement et le déploiement d'app, portée sur l’Agilité
96- Un ensemble de métiers qui collaborent ensemble fortement, dont de nouveaux métiers émergeants
97- Des outils et des manières de faire nouvelles
98- Un moyen moderne d’utiliser le Cloud dans son entreprise
99
100---
101
102Attention, les grosses entreprises s’accaparent de plus en plus le terme et en font un Buzz word détourné de l’idée originale du DevOps.
103
104La grosse erreur souvent faite est de penser que "DevOps" est un métier à part entière
105alors que c'est la mise en commun d'un ensemble de corps de métiers.
106
107---
108
109<center>
110
111![DevOps jobs](img/devops_jobs.png)
112
113</center>
114
115---
116
117# Les thèmes du DevOps
118
119Le DevOps apportent de nouvelles manières de faire et des outils qui permettent de mettre les développeurs et les opérationnels autour de la même table pour communiquer et intégrer tout le monde dans les itérations Agile grâce à un ensemble de concepts:
120
121- Responsabilité partagée
122- Intégration continue / Déploiement continue (CI/CD)
123- Infrastructure as code
124- Feedback Loop et apprentissage
125- Fail Fast, Improve faster
126
127---
128
129## CI/CD
130
131Avec le DevOps, le Time to Market passe de quelques mois à quelques jours voir quelques heures grâce au CI / CD.
132On automatise tout ce qui est automatisable pour que les humains se concentrent sur ce qui nécessitent de réelles compétences humaines: créer du code de qualité.
133
134![CI/CD](./img/CI-CD.png)
135
136---
137
138## Infrastructure as Code
139
140Avec le DevOps, les opérationnels se mettent à “faire du code” et peuvent désormais gérer toute une infrastructure à l’aide de scripts et des conteneurs (Docker). On peut utiliser, par exemple:
141
142- Jenkins
143- Jelastic
144- Docker Compose
145- Kubernetes
146
147---
148
149### Exemple d'IaC
150
151```yaml
152version: "3"
153services:
154 web:
155 image: 5ika/deer
156 environment:
157 DB_USER: lapin
158 DB_PASSWORD: lapin
159 DB_HOST: redis
160 ports:
161 - "8000:8080"
162 volumes:
163 - ./uploads:/var/www/uploads
164
165 redis:
166 image: "redis:alpine"
167```
168
169---
170
171## Feedback loop
172
173La Feedback loop correspond aux yeux que l’on a sur l’ensemble des processus et déploiements de notre application.
174Concrètement, c’est un ensemble d’alertes et d’outils de **monitoring** permettant d’être informés de tout ce qui est fait, notamment en cas de plantage.
175
176Grâce à cela, développeurs et opérationnels peuvent rapidement débugger et apprendre ensemble lorsqu’un problème survient pour ensuite faire évoluer les processus et méthodes (CI/CD, IaC, développement, review, test, etc…).
177
178![Feedback loop](./img/feedback_loop.png)
179
180---
181
182### Exemples d'outils pour la feedback loop
183
184- **Logs du CI/CD** (sur GitHub): pour voir si le pipeline s'est bien déroulé
185- **Les logs du serveur**: pour voir ce que fait le serveur
186- **Les ressources du serveur**: pour voir l'utilisation des ressources du serveur
187- **Sentry**: pour attraper les erreurs logicielles et lancer des alertes
188
189---
190
191## Fail fast, Improve faster
192
193La pratique du DevOps considère que si un problème survient alors il vaut mieux qu’il survienne **au plus tôt**.
194En effet, plus on est tard dans notre processus de production, plus la correction d’un bug est coûteuse.
195
196C’est pour cela que l’on met en place différents types de tests de l’application et du code dans nos pipeline de CI/CD.
197Quelques exemples:
198- Avant de pusher son code, on le lint
199- Avant de faire une Merge request, on vérifie que le code passe les tests unitaires
200
201Grâce à la Feedback loop, devs et ops peuvent ensuite corriger et surtout adapter les processus pour que les bugs ne reviennent pas ou soient plus rapidement détectés.
202
203---
204
205# Le DevOps aujourd'hui
206
207- Existe depuis ~15 ans mais pas encore partout
208- Les grosses entreprises ont du mal à passer au DevOps car cela nécessite une refonte de leur manière de faire
209- Communauté très forte poussée par Amazon, Google, Netflix, Microsoft et beaucoup d’autres
210- Volonté de mettre de l’humain dans les infrastructures IT
211
212- Réseau grandissant de personnes poussant le DevOps à Genève
213- Événements communautaires: [Meetups DevOps](https://www.meetup.com/fr-FR/devops-geneve/events/294430889/) / Docker / Kubernetes et DevOpsDays Geneva
214
215---
216
217https://www.commitstrip.com/fr/2015/02/02/is-your-company-ready-for-devops/?setLocale=1