Top Banner
DEVFEST NANTES 16 Continuous Deployment with Spinnaker Automate all your deployments! Stéphane Lagraulet - Ippon Technologies
44

DevFest Nantes 2016 - Spinnaker

Apr 12, 2017

Download

Technology

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: DevFest Nantes 2016 - Spinnaker

DEVFEST NANTES 16

Continuous Deployment with SpinnakerAutomate all your deployments!

Stéphane Lagraulet - Ippon Technologies

Page 2: DevFest Nantes 2016 - Spinnaker

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

Page 3: DevFest Nantes 2016 - Spinnaker

Projet & Contexte

Page 4: DevFest Nantes 2016 - Spinnaker

4DEVFEST NANTES 16

Who am I ?

Stéphane Lagraulet

Architecte SI

Ippon depuis 2013

@stephlag

Code depuis...

Page 5: DevFest Nantes 2016 - Spinnaker

5DEVFEST NANTES 16

Page 6: DevFest Nantes 2016 - Spinnaker

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

Page 7: DevFest Nantes 2016 - Spinnaker

Déploiements old school

Page 8: DevFest Nantes 2016 - Spinnaker

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

Page 9: DevFest Nantes 2016 - Spinnaker

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

Page 10: DevFest Nantes 2016 - Spinnaker

Concepts

Page 11: DevFest Nantes 2016 - Spinnaker

11DEVFEST NANTES 16

● Integration

● Delivery

● Deployment

Continuous *

Page 12: DevFest Nantes 2016 - Spinnaker

12DEVFEST NANTES 16

● Infrastructure○ standardisée○ automatisée○ à la demande○ immutable

● Gestionnaire de cloud / de containers○ Tolérance aux pannes○ Scalabilité

IAAS / IAC

Page 13: DevFest Nantes 2016 - Spinnaker

13DEVFEST NANTES 16

DevOps - équipes autonomes

Page 14: DevFest Nantes 2016 - Spinnaker

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

Page 15: DevFest Nantes 2016 - Spinnaker

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

Page 16: DevFest Nantes 2016 - Spinnaker

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

Page 17: DevFest Nantes 2016 - Spinnaker

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)

Page 18: DevFest Nantes 2016 - Spinnaker

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

Page 19: DevFest Nantes 2016 - Spinnaker

Intégration continue

Page 20: DevFest Nantes 2016 - Spinnaker

20DEVFEST NANTES 16

Intégration continue

Releases

Config

Sources

Versioning

Releases

Documentation

Docker Images

Page 21: DevFest Nantes 2016 - Spinnaker

21DEVFEST NANTES 16

Intégration continue = déploiement en continu ?

Releases

Config

Sources

Versioning

Releases

Documentation

Docker Images

Page 22: DevFest Nantes 2016 - Spinnaker

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

Page 23: DevFest Nantes 2016 - Spinnaker

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

Page 24: DevFest Nantes 2016 - Spinnaker

Spinnaker - les origines

Page 25: DevFest Nantes 2016 - Spinnaker

25DEVFEST NANTES 16

Netflix (pre 2014) - Jenkins + Asgard + Mimir

Page 26: DevFest Nantes 2016 - Spinnaker

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

Page 27: DevFest Nantes 2016 - Spinnaker

27DEVFEST NANTES 16

Netflix (2015) - Spinnaker rise

Page 28: DevFest Nantes 2016 - Spinnaker

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

Page 29: DevFest Nantes 2016 - Spinnaker

Spinnaker - architecture

Page 30: DevFest Nantes 2016 - Spinnaker

30DEVFEST NANTES 16

Spinnaker

Page 31: DevFest Nantes 2016 - 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

Page 32: DevFest Nantes 2016 - Spinnaker

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

Page 33: DevFest Nantes 2016 - Spinnaker

33DEVFEST NANTES 16

Spinnaker - vue globale (sur GCE)

https://github.com/GoogleCloudPlatform/spinnaker-deploymentmanager

Web InterfaceLoad Balancer

JenkinsSpinnaker

Redis Cloud Storage

Page 34: DevFest Nantes 2016 - Spinnaker

34DEVFEST NANTES 16

Spinnaker - vue détaillée

Page 35: DevFest Nantes 2016 - Spinnaker

35DEVFEST NANTES 16

Spinnaker - intégration Netflix

Page 36: DevFest Nantes 2016 - Spinnaker

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...

Page 37: DevFest Nantes 2016 - Spinnaker

Spinnaker - demo

Page 38: DevFest Nantes 2016 - Spinnaker

38DEVFEST NANTES 16

Spinnaker - demo

Page 39: DevFest Nantes 2016 - Spinnaker

39DEVFEST NANTES 16

Spinnaker - static demo

Page 40: DevFest Nantes 2016 - Spinnaker

40DEVFEST NANTES 16

Spinnaker - static demo 2

Page 41: DevFest Nantes 2016 - Spinnaker

41DEVFEST NANTES 16

Spinnaker - challenges

Page 42: DevFest Nantes 2016 - Spinnaker

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

Page 43: DevFest Nantes 2016 - Spinnaker

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