Upgrade to Pro — share decks privately, control downloads, hide ads and more …

2016 - DEVOPS & CONTINUOUS DEPLOYMENT

2016 - DEVOPS & CONTINUOUS DEPLOYMENT

Familiarisez-vous avec le Continuous Deployment, la dernière étape du Continuous Integration.

Une release chaque mois est une souffrance pour vous, alors, pourquoi ne pas déployer quotidiennement ?
Vous avez une base de données, et vous avez des fichiers SQL à gérer, pas de soucis, regardez la solution !

Si vous connaissez ces problématiques, vdécouvrez comment le DevOps vous permettra de les résoudre en réalisant un Pipeline de Continuous Deployment.

Nous allez voir comment construire un Pipeline de Continuous Deployment, et comment le DevOps vous permet d’y arriver.

Ci-dessous le code source des TP utilisés :
https://github.com/ykandrirody/training-devops-v2-high-availability-of-web-site
https://github.com/ykandrirody/training-devops-v2-versioning-of-database
https://github.com/ykandrirody/training-devops-v2-continuous-deployment (Suivre le Practical Steps)

Avatar for Yassine KANDRI RODY

Yassine KANDRI RODY

October 19, 2016
Tweet

More Decks by Yassine KANDRI RODY

Other Decks in Programming

Transcript

  1. Formation : DevOps-Continuous Deployment FORMATION : DEVOPS & CONTINUOUS DEPLOYMENT

    Conçue et présentée par : Yassine KANDRI RODY Membre des communautés : Startech Agile et .Net
  2. Formation : DevOps-Continuous Deployment Communauté agile de Softeam Cadextan Mission

    Présenter des événements et des formations autour de l’agilité STARTECH AGILE 2
  3. Formation : DevOps-Continuous Deployment 1. DevOps 2. Les bases du

    déploiement continu 3. Configuration 4. Infrastructure 5. Base de données 6. Pipeline 7. LE déploiement continu ? SOMMAIRE 3
  4. Formation : DevOps-Continuous Deployment Des tickets pour chaque action Déploiements

    manuels suivant des procédures Manque de tests automatisés Souplesse des environnements SANS DEVOPS - PROBLÉMATIQUES 5
  5. Formation : DevOps-Continuous Deployment Dev – Ops Communication qui passe

    par des tickets Dev  Ops Rapprocher le dev aux processus et métier de l’Ops Ops  Dev Problématiques pour tester en environnement type production DEVOPS – RAPPROCHER DEV ET OPS 6
  6. Formation : DevOps-Continuous Deployment LE MUR DE LA CONFUSION Je

    veux du changement Je veux de la stabilité Dev Ops 7
  7. Formation : DevOps-Continuous Deployment CAMS : • Culture • Automatisation

    • Mesure • Share DEVOPS – LES PILLIERS DEV OPS Automatiser Partager Culture Mesurer 9
  8. Formation : DevOps-Continuous Deployment Contre :  La dévalorisation du

    travail  Manque d’implication / désengagement Pour :  Responsabilisation  Encourager ce qui apporte de la valeur  Valoriser les erreurs  Respect  Respecter les autres membres  Identifier les contributions de chacun  Mettre en valeur les plus values de chacun  Confiance  Confiance Ops  Dev : stabilité des livrables, « ouverture » de la prod  Confiance Dev  Ops : maitrise des Ops DEVOPS – LES PILIERS : CULTURE 10
  9. Formation : DevOps-Continuous Deployment Diminue :  les erreurs manuels

     le temps des étapes  les taches chronophages  Les cycles de release Améliore :  Prédictibilité  Reproductibilité  Les processus de déploiement DEVOPS – LES PILIERS : AUTOMATISATION 11
  10. Formation : DevOps-Continuous Deployment Connaitre son niveau Valider les choix

    Anticiper les risques Mesurer les capacités Repérer les points de contention Repérer les taux d’attente DEVOPS – LES PILIERS : MESURE 12
  11. Formation : DevOps-Continuous Deployment Casser le mur de la confusion

    L’humain au cœur des interactions Stimuler et émuler les employés Renforcer la confiance Frustration  Consensus Fluidifier la communication Améliorer le feedback Rapprocher les collaborateurs Partager les retours lors des rétrospectives DEVOPS – LES PILIERS : PARTAGE Je veux du changement Je veux de la stabilité Dev Ops Je veux du changement Je veux de la stabilité Dev Ops 13
  12. Formation : DevOps-Continuous Deployment Déployer : la dernière étape de

    l’intégration continue Neal Ford Déploiement continu 14
  13. Formation : DevOps-Continuous Deployment Processus de déploiement • Répétable •

    Fiable • Automatisé • « Versionné » Continuellement amélioré De la responsabilité de toute l’équipe PRINCIPES DU DÉPLOIEMENT CONTINU 16
  14. Formation : DevOps-Continuous Deployment Détecter les problèmes plus rapidement ?

    Réduire les couts ? Eliminer le stress des opérations manuelles ? Automatiser le déploiement ? Déployer tous les jours ? Tout au long de la journée ? Livrer les nouvelles fonctionnalités plus rapidement ? Déployer plus souvent ? POURQUOI FAIRE DU CONTINUOUS DEPLOYMENT ? 18
  15. Formation : DevOps-Continuous Deployment • Avoir dans le SCM (Source

    Code Management) (svn / git) : • Code source • Configuration • Scripts de déploiements • Scripts d’installation de l’infrastructure • Documentation • Tests automatisés avec de l’Intégration Continue • TDD / Tests unitaires • BDD / Tests fonctionnels • TNR / Tests de non régression • Chaine d’Intégration Continue • Travailler en agilité LES PRÉREQUIS AU CONTINUOUS DEPLOYMENT 19
  16. Formation : DevOps-Continuous Deployment Gérer tous les environnements avec le

    même outil de configuration Chaque environnement est autonome Versionner les modifications des configurations dans un SCM Synchroniser le SCM et l’outil de configuration au moment de livraison de l’environnement GESTION DE LA CONFIGURATION 21
  17. Formation : DevOps-Continuous Deployment /hiera/common.yaml : npp_path: « \\\\srv-abcd\\npp.exe »

    /hiera.yaml :backends: yaml :yaml: :datadir: «./hiera » :hierarchy: - « %{::fqdn} » - common :logger: console /puppet.conf [main] hiera_config=$confdir/hiera.yaml YAML / PUPPET 23
  18. Formation : DevOps-Continuous Deployment Description de l’infrastructure : • fichiers

    de configuration • scripts • outil de gestion d’infrastructure Liste des : • Environnements • Machines • Equipements réseaux Description des : • Produits • Configurations • Services • Utilisateurs • Recettes INFRA AS CODE 25
  19. Formation : DevOps-Continuous Deployment Provisionner un élément de l’infrastructure le

    plus rapidement possible à partir d’un serveur vierge : • Prédictible • Répétable • Automatisé INFRA AS CODE : OBJECTIF 26
  20. Formation : DevOps-Continuous Deployment Recréer un environnement à partir de

    zero Refactoring Comparer des versions Comparer des environnements Provisionnement à la demande depuis le cloud Plus de consistance Même infrastructure logicielle pour tous les environnements INFRA AS CODE : AVANTAGES 27
  21. Formation : DevOps-Continuous Deployment Adapter l’architecture de l’application Mettre en

    place un Load Balancer (Répartiteur de charge) Gestion des sessions des applications web PROBLEMATIQUE ZERO DOWNTIME 31
  22. Formation : DevOps-Continuous Deployment DEPLOIEMENT EN ZERO DOWNTIME : CANARY

    RELEASE App – Version N App – Version N + 1 Load Balancer App – Version N App – Version N Load Balancer App – Version N + 1 App – Version N + 1 Load Balancer 32
  23. Formation : DevOps-Continuous Deployment (SQL + modifications) dans le SCM

    Base de données + Binaire : en même temps Tests ÉVOLUTION DE LA BASE DE DONNÉES 34
  24. Formation : DevOps-Continuous Deployment Effectuer des petits changements  Plus

    facile à débugger et à déployer Les gros changements ?  Les découper en plus petits Un id/version pour chaque changement  Ordre / unicité d’exécution Ne pas dupliquer les changements Une version pour chaque mise à jour  Construire un environnement rapidement Savoir créer un environnement facilement BEST PRACTICES 35
  25. Formation : DevOps-Continuous Deployment Quand l’utiliser : Environnements en haute

    disponibilité Principe : Etaler les modifications sur plusieurs REL, afin de les faire par type Expand en version : N Modifications de structure : Ajout Déploiement Contract en version : N+1 ou N+2 Modifications de suppression Déploiement PATTERN : EXPAND & CONTRACT 36
  26. Formation : DevOps-Continuous Deployment Analyse l’état de la base par

    rapport aux modifications demandées Possibilité d’appliquer les modifications à grande échelle de manière automatisée Intégration dans un processus de déploiement continu Test automatisé des mises à jour AVANTAGES DES OUTILS D’APPLICATION DU CHANGEMENT 38
  27. Formation : DevOps-Continuous Deployment L’outil d’intégration continue : 1. Récupère

    la dernière version du SCM 2. Compile les sources 3. Fixer une version à partir de : 1. Version de l’assembly 2. Id du dernier commit 3. Date de build 4. Package un livrable 5. Publie le livrable dans un repository (Nexus, Archiva, …) 6. Publie le livrable dans l’outil de déploiement 7. Déploie le livrable dans un environnement DEMARRAGE D’UN PIPELINE 43
  28. Formation : DevOps-Continuous Deployment Le pipeline de déploiement est l’étape

    qui suit les jobs d’intégration continue • Préparation des environnements • Déploiement • Les tests • Promotion vers les environnements suivants • Feedback à chaque étape DEPLOYMENT PIPELINE LCL DEV INT PRE ISO PRD 45
  29. Formation : DevOps-Continuous Deployment Un pipeline se compose de plusieurs

    étapes : Du commit jusqu’à la PROD Plus on avance dans les étapes, plus on se rapproche des exigences de la PROD Progressivement, automatiser les passages d’une étape à la suivante Le pipeline doit construire une chaine logique pour l’application Découper son pipeline : • Niveau de granularité attendu • Pourquoi on crée une étape ? • Résultat à produire ? • Feedback attendu de l’environnement ? Paralléliser les taches  Réduire le temps d’exécution • Fan out : Plusieurs tâches en parallèle • Fan In : attendre la fin de plusieurs étapes traitées en parallèle Haute disponibilité ? Rollback ? + de confiance dans l’application  + prête à être déployée « On Demand » COMMENT CONSTRUIRE LE PIPELINE ? 46
  30. Formation : DevOps-Continuous Deployment Fort contrat entre le livrable et

    le SCM Même livrable, sur toute la chaine Ne pas sauter d’étape LES RÈGLES D’OR DURANT LE PIPELINE ? 47