devfest nantes 2016 - spinnaker
TRANSCRIPT
DEVFEST NANTES 16
Continuous Deployment with SpinnakerAutomate all your deployments!
Stéphane Lagraulet - Ippon Technologies
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
4DEVFEST NANTES 16
Who am I ?
Stéphane Lagraulet
Architecte SI
Ippon depuis 2013
@stephlag
Code depuis...
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
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
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
12DEVFEST NANTES 16
● Infrastructure○ standardisée○ automatisée○ à la demande○ immutable
● Gestionnaire de cloud / de containers○ Tolérance aux pannes○ Scalabilité
IAAS / IAC
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
15DEVFEST NANTES 16
Le cycle de vie d’un microservice
Code RepositoryContinuous Integration
Image repository
Continuous Delivery
BuildsGets
Tags
Gets
Running Cluster(all envs)
Monitoring tool
Supervises
Delivers
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
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)
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
20DEVFEST NANTES 16
Intégration continue
Releases
Config
Sources
Versioning
Releases
Documentation
Docker Images
21DEVFEST NANTES 16
Intégration continue = déploiement en continu ?
Releases
Config
Sources
Versioning
Releases
Documentation
Docker Images
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
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
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
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
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
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
33DEVFEST NANTES 16
Spinnaker - vue globale (sur GCE)
https://github.com/GoogleCloudPlatform/spinnaker-deploymentmanager
Web InterfaceLoad Balancer
JenkinsSpinnaker
Redis Cloud Storage
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...
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
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