DEVFEST NANTES 16
Continuous Deployment with Spinnaker
Automate 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
Projet & Contexte
4DEVFEST NANTES 16
Who am I ?
Stéphane Lagraulet
Architecte SI
Ippon depuis 2013
@stephlag
Code depuis...
5DEVFEST NANTES 16
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
Déploiements old school
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
Concepts
11DEVFEST NANTES 16
● Integration
● Delivery
● Deployment
Continuous *
12DEVFEST NANTES 16
● Infrastructure
○ standardisée
○ automatisée
○ à la demande
○ immutable
● Gestionnaire de cloud / de containers
○ Tolérance aux pannes
○ Scalabilité
IAAS / IAC
13DEVFEST NANTES 16
DevOps - équipes autonomes
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 Repository
Continuous
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
Intégration continue
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
Spinnaker - les origines
25DEVFEST NANTES 16
Netflix (pre 2014) - Jenkins + Asgard + Mimir
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
27DEVFEST NANTES 16
Netflix (2015) - Spinnaker rise
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
Spinnaker - architecture
30DEVFEST NANTES 16
Spinnaker
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 Interface
Load Balancer
JenkinsSpinnaker
RedisCloud Storage
34DEVFEST NANTES 16
Spinnaker - vue détaillée
35DEVFEST NANTES 16
Spinnaker - intégration Netflix
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...
Spinnaker - demo
38DEVFEST NANTES 16
Spinnaker - demo
39DEVFEST NANTES 16
Spinnaker - static demo
40DEVFEST NANTES 16
Spinnaker - static demo 2
41DEVFEST NANTES 16
Spinnaker - challenges
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
Merci! Questions ?
@stephlag
@ippontech
github.com/stephlag

DevFest Nantes 2016 - Spinnaker

  • 1.
    DEVFEST NANTES 16 ContinuousDeployment with Spinnaker Automate all your deployments! Stéphane Lagraulet - Ippon Technologies
  • 2.
    2DEVFEST NANTES 16 Vousallez 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.
  • 4.
    4DEVFEST NANTES 16 Whoam I ? Stéphane Lagraulet Architecte SI Ippon depuis 2013 @stephlag Code depuis...
  • 5.
  • 6.
    6DEVFEST NANTES 16 Leprojet 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.
  • 8.
    8DEVFEST NANTES 16 Unlong 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.
    9DEVFEST NANTES 16 Lesdifficulté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.
  • 11.
    11DEVFEST NANTES 16 ●Integration ● Delivery ● Deployment Continuous *
  • 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.
    13DEVFEST NANTES 16 DevOps- équipes autonomes
  • 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.
    15DEVFEST NANTES 16 Lecycle 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.
    16DEVFEST NANTES 16 Ledé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.
    17DEVFEST NANTES 16 Ledé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.
    18DEVFEST NANTES 16 Ledé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.
  • 20.
    20DEVFEST NANTES 16 Intégrationcontinue Releases Config Sources Versioning Releases Documentation Docker Images
  • 21.
    21DEVFEST NANTES 16 Intégrationcontinue = déploiement en continu ? Releases Config Sources Versioning Releases Documentation Docker Images
  • 22.
    22DEVFEST NANTES 16 Intégrationcontinue - 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.
    23DEVFEST NANTES 16 Lechoix 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.
  • 25.
    25DEVFEST NANTES 16 Netflix(pre 2014) - Jenkins + Asgard + Mimir
  • 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.
    27DEVFEST NANTES 16 Netflix(2015) - Spinnaker rise
  • 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.
  • 30.
  • 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.
    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.
    33DEVFEST NANTES 16 Spinnaker- vue globale (sur GCE) https://github.com/GoogleCloudPlatform/spinnaker-deploymentmanager Web Interface Load Balancer JenkinsSpinnaker RedisCloud Storage
  • 34.
  • 35.
    35DEVFEST NANTES 16 Spinnaker- intégration Netflix
  • 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.
  • 38.
  • 39.
  • 40.
  • 41.
  • 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.
    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.