DevFest Nantes 2016 - Spinnaker

238 views

Published on

Spinnaker est un outil open source de déploiement continu multi-cloud développé par Netflix.
Vous savez déjà construire vos applications avec Jenkins, venez découvrir comment automatiser tous vos déploiements.
Nous verrons ensemble comment créer une plate forme complète de déploiement continu jusqu'en production, à base de canary, blue/green et rollback.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

DevFest Nantes 2016 - Spinnaker

  1. 1. DEVFEST NANTES 16 Continuous Deployment with Spinnaker Automate all your deployments! Stéphane Lagraulet - Ippon Technologies
  2. 2. 2DEVFEST NANTES 16 Vous allez voir... ● Les origines de Spinnaker ● L’architecture de Spinnaker ● Spinnaker en action ● Les challenges à relever ● Le projet et le contexte ● Le déploiement old school ● Les concepts décryptés ● De l’intégration continue au déploiement en continu
  3. 3. Projet & Contexte
  4. 4. 4DEVFEST NANTES 16 Who am I ? Stéphane Lagraulet Architecte SI Ippon depuis 2013 @stephlag Code depuis...
  5. 5. 5DEVFEST NANTES 16
  6. 6. 6DEVFEST NANTES 16 Le projet Component Team en charge du moteur de recherche d’un site de e-commerce ● 2015 ○ microservices pour alimenter, interroger et superviser les composants du moteur ○ plateforme d’intégration continue ● 2016 ○ consolidation de l’architecture avec Spring Cloud ○ utilisation des microservices dans d’autres équipes ○ cluster Mesos / Marathon ● 2017 ○ généralisation de l’architecture de micro-services ○ plateforme de déploiement en continu
  7. 7. Déploiements old school
  8. 8. 8DEVFEST NANTES 16 Un long chemin vers la production ● Développement ● Recette des développements ● Merge des développements ● Construction du package ● Livraison en préproduction ● Tests de non régression ● Livraison en production
  9. 9. 9DEVFEST NANTES 16 Les difficultés de ce modèle ● Cycle long ● Opérations manuelles ● Equipe dédiée ● Partage de responsabilités ● Beaucoup de changements ● Fort risque de régression ● Tests de non régression coûteux
  10. 10. Concepts
  11. 11. 11DEVFEST NANTES 16 ● Integration ● Delivery ● Deployment Continuous *
  12. 12. 12DEVFEST NANTES 16 ● Infrastructure ○ standardisée ○ automatisée ○ à la demande ○ immutable ● Gestionnaire de cloud / de containers ○ Tolérance aux pannes ○ Scalabilité IAAS / IAC
  13. 13. 13DEVFEST NANTES 16 DevOps - équipes autonomes
  14. 14. 14DEVFEST NANTES 16 ● Autonomes et indépendants ● Des produits et non des projets ● Smart endpoints and dumb pipes (Unix way) ● Gouvernance décentralisée ● Persistance polyglotte et décentralisée ● Tolérance à la panne (design for failure) ● Cloud-ready apps ● Infrastructure automatisée Caractéristiques des microservices
  15. 15. 15DEVFEST NANTES 16 Le cycle de vie d’un microservice Code Repository Continuous Integration Image repository Continuous Delivery BuildsGets Tags Gets Running Cluster (all envs) Monitoring tool Supervises Delivers
  16. 16. 16DEVFEST NANTES 16 Le déploiement en continu, c’est quoi? ● Logiciel / Service construit avec un cycle de vie défini ● Déployabilité >> nouvelles fonctionnalités ● Retour rapide et automatisé sur le système en production ● Déploiement en une seule action de n’importe quelle version du logiciel sur n’importe quel environnement
  17. 17. 17DEVFEST NANTES 16 Le déploiement en continu, prérequis ● Proche relation de collaboration avec tous les acteurs impliqués dans la livraison (DevOps) ● Qualité intégrée dans le produit dès la conception (TU, TI, Benchs) ● Automatisation poussée des processus permettant d’effectuer une livraison (Deployment Pipeline)
  18. 18. 18DEVFEST NANTES 16 Le déploiement en continu, les gains! ● Déploiements à faible risque ● Des fonctionnalités vraiment “terminées” ● Feedback utilisateur rapide ● Time to market réduit ● Meilleure qualité ● Coûts réduits ● Équipes plus satisfaites
  19. 19. Intégration continue
  20. 20. 20DEVFEST NANTES 16 Intégration continue Releases Config Sources Versioning Releases Documentation Docker Images
  21. 21. 21DEVFEST NANTES 16 Intégration continue = déploiement en continu ? Releases Config Sources Versioning Releases Documentation Docker Images
  22. 22. 22DEVFEST NANTES 16 Intégration continue - les limites ● Fait pour construire des artefacts ● Pas de gestion ○ du provisionning de machines ○ des répartiteurs de charges ○ des réseaux ○ déploiement multi-datacenter ○ des stratégies de déploiement
  23. 23. 23DEVFEST NANTES 16 Le choix de Spinnaker ● Outil complet de déploiement en continu ● Objectifs ○ Rendre les déploiements sûrs et vérifiables ○ Devenir le standard des outils de déploiement ○ Pas de lien avec un seul fournisseur de cloud ○ Accélérer les déploiements pour les rendres plus “atomiques” ○ Proposer plusieurs stratégies de déploiement ○ Retour rapide sur une version précédente ○ Aucune interruption de service ○ Automatisation de la gestion des ressources ● Utilisé par Netflix pour déployer plus de 3000 fois par jour
  24. 24. Spinnaker - les origines
  25. 25. 25DEVFEST NANTES 16 Netflix (pre 2014) - Jenkins + Asgard + Mimir
  26. 26. 26DEVFEST NANTES 16 Netflix (2015) - Spinnaker ● Reprise des concepts existants ● Initiative full OSS ● Réécriture complète en architecture micro services ○ Services spring boot en Groovy ● Gestion du multi cloud ● Partenariats ○ Google ○ Microsoft ○ Pivotal
  27. 27. 27DEVFEST NANTES 16 Netflix (2015) - Spinnaker rise
  28. 28. 28DEVFEST NANTES 16 Spinnaker.io (2016) ● Open source depuis novembre 2015 ● Support complet ○ AWS ○ Google Cloud Platform ○ Kubernetes ○ Titus (Netflix) ● En développement / test ○ Azure ○ OpenStack ○ CloudFoundry
  29. 29. Spinnaker - architecture
  30. 30. 30DEVFEST NANTES 16 Spinnaker
  31. 31. 31DEVFEST NANTES 16 Spinnaker - pipelines ● Pipeline ○ Configuration ○ Triggers ■ Jenkins ■ Git commit ■ Docker push ○ Etapes (stages) ■ auto ou manuelles ● Enchaînement des pipelines ○ workflow complet de déploiement
  32. 32. 32DEVFEST NANTES 16 Spinnaker - concepts ● Server group ○ Load Balancer ○ Security Group ○ Machine type ○ Capacity ● Cluster ○ Vue logique d’un groupe de serveurs ● Application ○ Vue logique d’un ensemble de clusters associés à une application
  33. 33. 33DEVFEST NANTES 16 Spinnaker - vue globale (sur GCE) https://github.com/GoogleCloudPlatform/spinnaker-deploymentmanager Web Interface Load Balancer JenkinsSpinnaker RedisCloud Storage
  34. 34. 34DEVFEST NANTES 16 Spinnaker - vue détaillée
  35. 35. 35DEVFEST NANTES 16 Spinnaker - intégration Netflix
  36. 36. 36DEVFEST NANTES 16 Spinnaker - extensions ● Halyard ○ Simplifie le déploiement de Spinnaker ● Foremast ○ Automatisation de la création de pipelines ● ChaosMonkey ○ Destruction au hasard d’instances en production...
  37. 37. Spinnaker - demo
  38. 38. 38DEVFEST NANTES 16 Spinnaker - demo
  39. 39. 39DEVFEST NANTES 16 Spinnaker - static demo
  40. 40. 40DEVFEST NANTES 16 Spinnaker - static demo 2
  41. 41. 41DEVFEST NANTES 16 Spinnaker - challenges
  42. 42. 42DEVFEST NANTES 16 Spinnaker - challenges ● Documentation peu mise à jour et incomplète ● Complexe à mettre en place ● Peu adapté aux petites structures ● On the edge - bugs UI ● Solution hostée (GCP en bêta) ● Slack is your friend
  43. 43. 43DEVFEST NANTES 16 Spinnaker - nos attentes ● Authentification - en cours de dev avec le module fiat ○ pas d’Active Directory ● Construction clouddriver pour Mesos ● Configuration plus simple avec docker compose
  44. 44. Merci! Questions ? @stephlag @ippontech github.com/stephlag

×