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,157