Training DevOps
Cours
21/12/2018
Qui sommes-nous ?
Gautier DARCHEN <gdarchen@takima.fr>
Jonathan LE BLOAS <jlebloas@takima.fr>
Qu'est-ce que le "DevOps" ?
Le devops est un mouvement en ingénierie informatique et une pratique technique visant à l'unification du développement logiciel (dev) et de l'administration des infrastructures informatiques (ops), notamment l'administration système.
(Wikipédia)
Objectifs différents
- Ops (Exploitation / Run)
- Stabilité
- Qualité
- Sécurité
- Contrôle
- Flexibilité
- Développeurs (Build)
- Évolutions rapides
- Qualité
Rapport à l'agilité
Globalisation des méthodes agiles à l'ensemble du SI
- Boucle de feedback plus rapide
- Qualité via tests réguliers
- Communication / partage
Principes
- Améliorer la qualité
- Amélioration continue
- Mises en production plus fréquentes
- Résolution de bugs plus simple
- Meilleur Time-To-Market
- Culture de l'automatisation
- Gains de temps
- Réduction de coûts
- Implication des développeurs au run
- Moins d'erreurs humaines
Bonnes pratiques
Automation
- Tests
- Infrastructure as code
- Configuration
- Monitoring
- Alerting
Toute action manuelle est un bug
Toolchains
- Coding – code development and review, source code management tools, code merging
- Building – continuous integration tools, build status
- Testing – continuous testing tools that provide feedback on business risks
- Packaging – artifact repository, application pre-deployment staging
- Releasing – change management, release approvals, release automation
- Configuring – infrastructure configuration and management, infrastructure as code tools
- Monitoring – applications performance monitoring, end-user experience
Continous Integration
Automation to build and test application whenever new commits are pushed
Continous Delivery
Continuous Integration + Deploy application to production by "clicking on a button" (Release to customers is often, but on demand).
Continous Deployment
Continuous Delivery but without human intervention (Release to customers is on-going).
Continuous Deployment
Suite d'étapes automatisées pour mettre en place le principe de CI/CD
Pipeline
https://public.joomeo.com/files/5a7ca816a3a29
Plan- Code
- Integrate / Test
- Release
- Deploy
Operate
Pipeline simplifiée
Code
Integrate
-
Test
Release
Deploy
Code
Integrate
-
Test
Release
Deploy
- Utilisation de gestionnaires de code source (clients Git)
- GitHub
- Gitlab
- BitBucket
- Choix d'un workflow d'utilisation de Git
- Featured Branch
- Gitflow
- ...
Code
Code - workflow (1.1)
Feature Branch Workflow
Marie commence une fonctionnalité
Marie publie une fonctionnalité
master branch
marie's feature branch
illustrations extraites du site atlassian.com
Code - workflow (1.2)
Feature Branch Workflow
https://medium.com/devsondevs/gitflow-workflow-continuous-integration-continuous-delivery-7f4643abb64f
Marie va déjeuner
git push -u origin marys-feature
Marie termine sa fonctionnalité
git push
Guillaume reçoit
pull request
Marie publie la fct
git pull origin marys-feature
illustrations extraites du site atlassian.com
Code (2)
Exemple du Gitflow
https://medium.com/devsondevs/gitflow-workflow-continuous-integration-continuous-delivery-7f4643abb64f
Code
Integrate
-
Test
Release
Deploy
Différents types de tests
- Unitaires (sur les services)
- Intégration (sur les DAO)
- End-To-End (sur les contrôleurs)
- UI Testing (interface graphique)
- etc.
Integrate/Test
Tests unitaires
Tests d'intégration
Tests E2E
UI
Testing
Analyse de la qualité du code
- Définition de métriques à respecter
- Pourcentage de couverture de tests
- Dette technique, Code smell...
Integrate/Test
Code
Integrate
-
Test
Release
Deploy
- Héberger l'artifact de l'application
Artifact: An artifact is something that is either produced or used by a project.
-
Exemples:
- Fichier .jar pour un projet Maven sur un Nexus
- Image Docker sur un registry Docker
- Des fichiers sur un FTP
- Gestion des différentes versions de l'application (releases)
Release
Code
Integrate
-
Test
Release
Deploy
Deploy
- Déploiement de l'application en production
- Version théoriquement saine car préalablement testée et analysée
- D'où l'importance d'avoir une grande couverture de tests
Application exemple
Architecture REST
L'utilisation des outils DevOps sera appliquée au développement d'une application prédéfinie (Etudiants, ...) mise en oeuvre par un serveur REST
Application exemple
Ce serveur REST sera réalisé par une application Java qui expose les ressources du système au moyen d'URL qui peuvent être interrogée par des requêtes HTTP.
source : http://total-qa.com/rest-services/
Conclusion
La session des Lundi 07/01/2018 et Mardi 08/01/2018 vous permettra d'aborder
- les techniques du DevOps pour vous donner une première expérience d'outillage d'une chaine de développement avant le PIC
- le codage sur un système existant (un serveur REST)
Training DevOps - Cours
By Gautier Darchen
Training DevOps - Cours
- 1,184