all repos — slides @ dd23301e4567c63669a7d53d084ef399ac52f436

Reveal-md slides I made for various occasions

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