devfest nantes 2016 - spinnaker

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

Upload: stephan-lagraulet

Post on 12-Apr-2017

134 views

Category:

Technology


0 download

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

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

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 InterfaceLoad Balancer

JenkinsSpinnaker

Redis Cloud 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