--- title: Le DevOps theme: ./_themes/5ika.css highlightTheme: github verticalSeparator: revealOptions: transition: 'fade' --- # Qu'est-ce qu'on a vu ? - Comment s'organiser avec Git et GitHub - Comment utiliser Docker sur sa machine - Comment mettre à disposition une image Docker depuis sa machine --- # Qu'est-ce qu'on va voir ? - Qu'est-ce que le DevOps - Comment déployer en production - Comment automatiser les déploiements --- # Le DevOps L'Agilité étendue à l'infrastructure --- # Avant l'Agile: le modèle Waterfall Avant l’arrivée du DevOps et de l'Agile, le développement d’une application se faisait “en silos” selon le modèle Waterfall. ![Waterfall](./img//waterfall.png) --- - Métiers clairement définis et **bornés**: l’analyse, le design, le développement, le test, la sécurité, l’opérationnel - Le projet passe de silo en silo, chaque corps de métier **donnant au suivant** une fois qu’il a terminé son job - La **responsabilité est passée** de main en main selon l’avancée du projet - Une fois en production, si on veut changer quelque chose, on doit recommencer l’ensemble du processus - 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 --- L'**Agilité** a permis de résoudre en grande partie ces inconvénients. Cependant, elle concerne le **développement** d'application mais pas la mise à disposition de celle-ci à ces utilisateurs (**déploiement**). C'est là que le DevOps devient utile. --- # Avant le DevOps Les développeurs (devs): - développent des nouvelles fonctionnalités, corrigent des bugs - apportent constamment du **changement** sur l’application - connaissent le code - ne connaissent pas l’infrastructure, le réseau, la sécurité IT Les admins système (ops): - mettent l’application à disposition des utilisateurs - maintiennent la **stabilité** de l’application en utilisation - ne connaissent pas le code - connaissent l’infrastructure, le réseau et la sécurité IT --- # Avant le DevOps D’expérience, dans une équipe IT traditionnelle, certains problèmes se retrouvent partout: - Les développeurs et les opérationnels se relancent la balle de la responsabilité lorsqu’un problème / un bug survient - 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 - Les opérationnels ont la mainmise sur l’infrastructure. Pourtant c’est les développeurs qui créent les besoins de l’application - 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. ---
![Boucle DevOps](img/devops_loop.png)
--- # C'est quoi le DevOps ? - Une “nouvelle” façon de considérer le développement et le déploiement d'app, portée sur l’Agilité - Un ensemble de métiers qui collaborent ensemble fortement, dont de nouveaux métiers émergeants - Des outils et des manières de faire nouvelles - Un moyen moderne d’utiliser le Cloud dans son entreprise --- Attention, 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. La grosse erreur souvent faite est de penser que "DevOps" est un métier à part entière alors que c'est la mise en commun d'un ensemble de corps de métiers. ---
![DevOps jobs](img/devops_jobs.png)
--- # Les thèmes du DevOps Le 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: - Responsabilité partagée - Intégration continue / Déploiement continue (CI/CD) - Infrastructure as code - Feedback Loop et apprentissage - Fail Fast, Improve faster --- ## CI/CD Avec le DevOps, le Time to Market passe de quelques mois à quelques jours voir quelques heures grâce au CI / CD. On 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é. ![CI/CD](./img/CI-CD.png) --- ## Infrastructure as Code Avec 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: - Jenkins - Jelastic - Docker Compose - Kubernetes --- ### Exemple d'IaC ```yaml version: "3" services: web: image: 5ika/deer environment: DB_USER: lapin DB_PASSWORD: lapin DB_HOST: redis ports: - "8000:8080" volumes: - ./uploads:/var/www/uploads redis: image: "redis:alpine" ``` --- ## Feedback loop La Feedback loop correspond aux yeux que l’on a sur l’ensemble des processus et déploiements de notre application. Concrè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. Grâ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…). ![Feedback loop](./img/feedback_loop.png) --- ### Exemples d'outils pour la feedback loop - **Logs du CI/CD** (sur GitHub): pour voir si le pipeline s'est bien déroulé - **Les logs du serveur**: pour voir ce que fait le serveur - **Les ressources du serveur**: pour voir l'utilisation des ressources du serveur - **Sentry**: pour attraper les erreurs logicielles et lancer des alertes --- ## Fail fast, Improve faster La pratique du DevOps considère que si un problème survient alors il vaut mieux qu’il survienne **au plus tôt**. En effet, plus on est tard dans notre processus de production, plus la correction d’un bug est coûteuse. C’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. Quelques exemples: - Avant de pusher son code, on le lint - Avant de faire une Merge request, on vérifie que le code passe les tests unitaires Grâ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. --- # Le DevOps aujourd'hui - Existe depuis ~15 ans mais pas encore partout - Les grosses entreprises ont du mal à passer au DevOps car cela nécessite une refonte de leur manière de faire - Communauté très forte poussée par Amazon, Google, Netflix, Microsoft et beaucoup d’autres - Volonté de mettre de l’humain dans les infrastructures IT - Réseau grandissant de personnes poussant le DevOps à Genève - Événements communautaires: [Meetups DevOps](https://www.meetup.com/fr-FR/devops-geneve/events/294430889/) / Docker / Kubernetes et DevOpsDays Geneva --- https://www.commitstrip.com/fr/2015/02/02/is-your-company-ready-for-devops/?setLocale=1