DevOps 4 Null Une introduction à devops @alaindelafosse @elisev_ Des Visions Différentes Développement Opérations Planning et la date de livraison Qualité de service et disponibilité Couts de développement Cout d’exploitation Release plannings Changements, Incidents Dernières technologies Technologies standards Environnements de « développement » Environnements de “production” Fréquents et importants changements Minimisent les changements en production Méthodes agiles Organisation et processus structurés (ITIL) Pensent à ce qui va faire marcher les choses Pensent à tout ce qui ne va pas marcher 2 Des cycles différents Déploiement Release Tests DEV Changements Conception Gestion des Problèmes Bugfixing OPS Monitoring Détection Développement Analyse Incident 3 DevOps Méthodes Agiles Idée Responsables Produit Développeurs Produit Opérations Service DevOps 4 Etendre les limites de l’équipe AGILE DEVOPS DevOps buzzword Ne pas se laisser embrouiller par l’usage abusif du terme dans des contextes parfois farfelus Equipes ou postes de devops Dénomination pas très pertinente, reflète des choix d’organisation ou une volonté de mettre en avant le coté automatisation dans un poste. Outils devops Supportant la démarche. Parfois des outils d’automatisation ou de déploiement « rebrandés ». Logiciel voire matériel devops, si si ! « Leading edge storage technologies enable DevOps to use actual production data in a test environment. » 6 Les piliers: CAMS Partage « Sharing » Mesure Culture Automatisation 7 Devops Culture CULTURE Respect mutuel Engagements respectés Célébration des succès Partage de connaissances Retours et feedback valorisés Refus du blâme Communication honnête et franche Développer les interactions Favoriser l’écoute Erreurs admises 8 DevOps Automatisation: Pipeline Au delà de l’automatisation, un vrai pipeline d’outils Gestion de source Build Intégration continue Tests Archive Déploiement Monitorer GitLab Zoom Page suivante • • On aurait pu rajouter la génération et collection des logs, gestion de release, revue de code, etc Plein de langages de scripts utilisables (Python, Powershell, Shellscripts) avec des librairies (libcloud, vmware, etc) 9 DevOps Automatisation : Périmètre Software - Binaires (scripts, exécutables, librairies) - Ressources (fichiers de traduction, images) - Templates de configuration (composant, instances) - Information de version - Monitoring - Outils d’administration (scripts) Middleware - Version, instances, ports Structures de données (BDD, etc) OS - Version, Comptes, Configuration AD/DNS, partitionnement VM / Serveur Stockage Réseau - Spécifications (CPU, RAM, Disques, interfaces réseau) Espace, Niveau de RAID, SAN, Backup Adresses, VLAN d’appartenance, load-balancer, firewall 10 DevOps Automatisation: évolution des outils Configuration Configuration OS & applicative Déploiement logiciel Configuration OS & applicative Déploiement des logiciels et de leur dépendances. Déploiement plateforme Orchestration de service Configuration OS & applicative Configuration OS & applicative Déploiement des logiciels et des dépendances logicielles. Déploiement des logiciels et des dépendances logicielles. Approvisionnement et Configuration de l’infrastructure and provisioning Approvisionnement et Configuration de l’infrastructure and provisioning Orchestration du déploiement Orchestration du déploiement Orchestration de services (instances, loadbalancing, gestion de charge) 11 DevOps Automatisation: Zoom sur 3 outils Ansible Terraform Puppet Approche centralisée (agentless) d’exécution de scénarios de déploiement procédurés (playbooks) rédigés en YAML. Approche centralisée (agentless) mais orienté déclaratif et plus focalisé orchestration que déploiement Approche avec agent; orienté déclaration d’état cible plus orienté gestion de configuration + Code plus simple Courbe d’apprentissage Outil complémentaire (Tower) + Plus connoté cloud Pas du YAML ;-) + Scalable - - Ruby & DSL Plus orienté infrastructure et moins applicatif Quand l’utiliser ? Performance (attention à l’échelle) Pas (peu) d’introspection, bcp de variables Quand l’utiliser ? Mise en place rapide et centralisée Déploiement important et hétérogènes Quand l’utiliser ? Quand le déploiement est traité par une approche conteneur et que l’on utilise de/des clouds 12 DevOps Mesures: Indicateurs de performance Nombre de déploiements ou changes par semaine Cela peut être le nb de lignes de code, le nb de composants impliqués, voire le nombre de user stories intégrés. Capacité à remettre en service une plateforme par le redéploiement des configurations; des logiciels et des éléments d’infrastructures Volume des changements Temps de cycle de l’idée à la production Délai de remise en service Pourcentage de déploiements ratés Permet de mesurer le degré de maturité pour l’intégralité du pipeline: qualité du code, pratiques de développement, automatisation (« time to market ») Les échecs et erreurs sont normaux (qui ne fait jamais de bug?) mais il faut surveiller l’évolution du pourcentage. Délai de déploiement Mesurer le délai nécessaire entre la fin de l’écriture d’un patch et la disponibilité en production. 13 DevOps Partage Outillage Processus Tous les acteurs participent à toutes les étapes du processus. Les mêmes outils pour toutes les équipes pour toutes les plateformes. Priorités Les équipes doivent partager les mêmes priorités ! Responsabilité Tout le monde se mobilise lorsque le build, le déploiement, ou l’application buguent. Emplacement Objectifs Les équipes doivent partager les mêmes objectifs ! Temps de cycle et stabilité Moyens de communication Colocaliser les équipes ! Tout ce qui peut rapprocher les équipes Donner accès aux chat rooms de prod aux développeurs. Donner des accès JIRA aux ops ! 14 DevOps vs ITIL DEVOPS ITIL / ITSM Mouvement avec des bonnes pratiques s’appliquant à tout le cycle du développement aux opérations. Catalogue structuré de pratiques à mettre en œuvre dans les opérations. Un changement continu ET contrôlé Processus ITIL Détail Outillage Nouvelles pratiques possibles Change management Mise en place d’un suivi précis des changements sur la plateforme avec un processus d’approbation préalable (CAB) Changements et rollback automatisés par outil de gestion de clefs de configuration. Audit automatiques. Changement et rollback auto. Canary testing, A/B testing Configuration management Description de l’infrastructure dans une base de données Mise en place et renseignement d’une CMDB Découverte et déploiement automatique de l’infrastructure Incident management Processus de gestion des incidents de production: inventaire, communication, analyse d’impact Monitoring fullstack Réserver du temps dans un sprint aux équipes (dev+ops) pour investiguer les incidents à chaud ! Problem management Processus de gestion des incidents récurrents: cad problème Discuter avec les responsables produits pour mettre des problèmes à traiter dans le backlog 15 DevOps Transition La réalité L’objectif Dans nos organisations, pour plein de bonnes et mauvaises raisons, et même si nous savons que ce n’est pas optimal nous avons des pratiques et des organisations en place, des contraintes en terme de budget et de temps. Pourtant, nous avons tous un objectif ambitieux pour notre organisation. 16 Transition DevOps: recette Vision en rapport avec la stratégie de l’entreprise (définir des objectifs SMART: par ex un déploiement par jour dans un an), ne pas se bloquer sur une organisation cible. Vision + Développer à la fois les compétences techniques (avec quoi: maitrise des outils) mais aussi organisationnelles (pourquoi, comment) et pour tout le monde ! Compétences + Priorité globale, reconnaissance et célébration des succès et des efforts Motivation + Du temps, de l’argent, des compétences extérieures, des conférences … Partager la vision aux équipes, s’assurer du support du top management, laisser décider les équipes des itérations et des objectifs associés (carpaccio) Ressources + Plan d’action Pas de Vision = Pas de Compétences = Pas de Motivation = Pas de Ressources = Pas de Plan = Confusion Anxiété Changement partiel Frustration Faux départ = Changement 17 DevOps Transition: Six Trucs Commencer par la culture Tout est automatisable ! Approche Carpaccio Automatiser ce qui fait mal Penser ROI Intégrer la sécurité 18 Pratiques DevOps Gestion du changement automatisé Tests de DRP Disponibilité Tests de Rollback Système de déploiement configurable Monitoring Code maintenable Déploiement Continu A/B Canary testing Architecture couplage faible Trunk based développement Automatisation déploiement Automatisation build Tests automatisés Gestion configuration En résumé • Devops est un mouvement qui étend Agile en intégrant les opérations dans les itérations • Quatre axes: culture, automatisation, mesure, partage • L’outillage peut se voir comme un pipeline et couvre tout le workflow • Complémentaire ITIL • Pour adopter devops il faut : une vision, des compétences, une motivation, des ressources et un plan MERCI ! DES QUESTIONS?