74
Déploiement continu en production Claude Falguière BreizhCamp le 17 Juin 2011

Deploiement continu breizh camp

Embed Size (px)

Citation preview

Page 1: Deploiement continu breizh camp

Déploiement continu en production

Claude FalguièreBreizhCamp le 17 Juin 2011

Page 2: Deploiement continu breizh camp

Continuous deployment - Falguière 2

Copyright notice

● Vous êtes libre de :● Reproduire, distribuer et communiquer cette création au public● Modifier cette création

● Selon les conditions suivantes :● Paternité. Vous devez citer le nom de l'auteur original de la

manière indiquée par l'auteur de l'oeuvre ou le titulaire des droits qui vous confère cette autorisation (mais pas d'une manière qui suggérerait qu'ils vous soutiennent ou approuvent votre utilisation de l'oeuvre).

● Rien dans ce contrat ne diminue ou ne restreint le droit moral de l'auteur ou des auteurs.

http://creativecommons.org/licenses/by/3.0/

Page 3: Deploiement continu breizh camp

Continuous deployment - Falguière 3

Claude Falguière

@cfalguiereArchitecte Technique

Usines logiciellesPerformances

DevopsJava

Page 4: Deploiement continu breizh camp

Continuous deployment - Falguière 4

Regrouper les développeuses

Java

ConnecterRendre visibles

http://jduchess.org/duchess-france@duchessfr

Page 5: Deploiement continu breizh camp

Continuous deployment - Falguière 5

Motivation

Page 6: Deploiement continu breizh camp

Continuous deployment - Falguière 6

 Je fais du déploiement continu j'ai ajouté cargo pour déployer sur CI

???

Page 7: Deploiement continu breizh camp

Continuous deployment - Falguière 7

Source : Thoughtworks

Page 8: Deploiement continu breizh camp

Continuous deployment - Falguière 8

Déploiement

Page 9: Deploiement continu breizh camp

Continuous deployment - Falguière 9

Deploiement

mvn deploy

mettre à disposition des utilisateurs Avertir les utilisateurs Arrêter le service Installer Vérifier Avertir les utilisateurs

Page 10: Deploiement continu breizh camp

Continuous deployment - Falguière 10

Provisioning

L'affectation plus ou moins automatisée de ressources à un utilisateur

<votre-smartphone-préféré>Store/Market Packages LinuxRepo Maven

Approvisionnement

Page 11: Deploiement continu breizh camp

Continuous deployment - Falguière 11

Responsabilités

Confidentialité, SécuritéInterdépendances

Opérations planifiées

assembler → approvisionner

→ installer → déployer

Page 12: Deploiement continu breizh camp

Continuous deployment - Falguière 12

Continu

Page 13: Deploiement continu breizh camp

Continuous deployment - Falguière 13

Batch & queue

Produire un lotLivrer le lot

Page 14: Deploiement continu breizh camp

Continuous deployment - Falguière 14

Livrer

des features

au fur et à mesure

Continuous Flow

Page 15: Deploiement continu breizh camp

Continuous deployment - Falguière 15

DélaiExceptionnelVolume

RéactivitéBanaliseCiblé

Batch & queue

Continuous Flow

Page 16: Deploiement continu breizh camp

Continuous deployment - Falguière 16

Periodicite

Plusieurs écoles

De plusieurs fois par heure à 1 fois par jour

Page 17: Deploiement continu breizh camp

Continuous deployment - Falguière 17

ContinuousIntegration

ContinuousDelivery

ContinuousDeployment

Page 18: Deploiement continu breizh camp

Continuous deployment - Falguière 18

Qui déclenche ?

PO + SM + OPSPromote manuel

Autopromote#deploy #envhabilitations

Page 19: Deploiement continu breizh camp

Continuous deployment - Falguière 19

Déploiement

Continu

Pas seulement automatisé

Pas forcément sans intervention humaine

Page 20: Deploiement continu breizh camp

Continuous deployment - Falguière 20

Jusque là tout va bien

Page 21: Deploiement continu breizh camp

Continuous deployment - Falguière 21

Processus Fast Fail

Analyser les causes

AméliorerPrévenirImpliquer

Page 22: Deploiement continu breizh camp

Continuous deployment - Falguière 22

Livrer au plus tôt

Commiter souventLivrer des features

Feature BranchingFeature flags → par environnement

Feature flippers → par user

Page 23: Deploiement continu breizh camp

Continuous deployment - Falguière 23

Tester au plus tôt

Tests automatisés

Smoke test

Tests en production

Page 24: Deploiement continu breizh camp

Continuous deployment - Falguière 24

Tester en production

Déploiement progressif

Déploiement green-blue

Page 25: Deploiement continu breizh camp

Continuous deployment - Falguière 25

Evaluer au plus tôt

Inclure les retours des utilisateursbeta test (feature flippers)A/B testing (feature flags)

Page 26: Deploiement continu breizh camp

Continuous deployment - Falguière 26

Surveiller

Pendant Juste après

Après

MonitoringAutodiagnostic, journaux

Page 27: Deploiement continu breizh camp

Continuous deployment - Falguière 27

REX (1)

Page 28: Deploiement continu breizh camp

Continuous deployment - Falguière 28

Contexte

StartupRefonteDomaine complexe

Difficile à tester en simulation

Grand nombre de serveurs

Page 29: Deploiement continu breizh camp

Continuous deployment - Falguière 29

Page 30: Deploiement continu breizh camp

Continuous deployment - Falguière 30

Idée générale

Fiabiliser les livraisonsTests automatisésAnalyse du code

Synchronisation entre les 2 équipes

Gérer la multiplicité (15 serveurs)Automatisation de l'installation

Page 31: Deploiement continu breizh camp

Continuous deployment - Falguière 31

L'usine

Page 32: Deploiement continu breizh camp

Continuous deployment - Falguière 32

Page 33: Deploiement continu breizh camp

Continuous deployment - Falguière 33

Blueprint

Page 34: Deploiement continu breizh camp

Continuous deployment - Falguière 34

Flex

Plus facileMoins de code

Projet Agile

Flex 4Maven 2

Page 35: Deploiement continu breizh camp

Continuous deployment - Falguière 35

Flex

Plus facileMoins de code

Projet Agile

Flex 4Maven 2

Livraisons fréquentes

Amélioration du temps de déploiement

Page 36: Deploiement continu breizh camp

Continuous deployment - Falguière 36

Java

LegacyRefonte SOA

Conversion Agile

Page 37: Deploiement continu breizh camp

Continuous deployment - Falguière 37

Java

LegacyRefonte SOA

Conversion Agile

StandbyPas de déploiement

Page 38: Deploiement continu breizh camp

Continuous deployment - Falguière 38

On part de loin

Code, Deploy … and Pray

CVS → SVN → 1 repository

Ant → Maven → HudsonCommiter régulièrement

Tester unitairement

Page 39: Deploiement continu breizh camp

Continuous deployment - Falguière 39

Les facteurs de succès

Bon contact avec la production Acceptation du PO

Manque de maîtrise des outils en dev Soutien des équipes support et QA ?

Page 40: Deploiement continu breizh camp

Continuous deployment - Falguière 40

REX (2)

Page 41: Deploiement continu breizh camp

Continuous deployment - Falguière 41

Et j'ai changé de vie

Page 42: Deploiement continu breizh camp

Continuous deployment - Falguière 42

iOS

Page 43: Deploiement continu breizh camp

Continuous deployment - Falguière 43

Distribute for enterprise

.ipa + icônes + descripteurs+ provisioning profile + des tas de clicsVous ne

voulez p

as savoir

Page 44: Deploiement continu breizh camp

Continuous deployment - Falguière 44

Idée générale

Eviter toutes ces manipulations

Mode Agile avec le clientLivraisons fréquentes

Page 45: Deploiement continu breizh camp

Continuous deployment - Falguière 45

Clarifier le processus

Page 46: Deploiement continu breizh camp

Continuous deployment - Falguière 46

Ingrédients et chefs

GitRakeiWebKitune pincée de Bashquelques fichiers PHPrsync (ma touche perso)

Sylvain Rousseau & David Gageot

Page 47: Deploiement continu breizh camp

Continuous deployment - Falguière 47

Git fetchrebase

ServerLess CI

Page 48: Deploiement continu breizh camp

Continuous deployment - Falguière 48

Git fetchrebase

Air deploy

Page 49: Deploiement continu breizh camp

Continuous deployment - Falguière 49

Rester simple

Mono branche

300 lignes de script

Ignorer les tâches peu fréquentesLa gestion des certificats (développeur, provisioning profile, ...)

Page 50: Deploiement continu breizh camp

Continuous deployment - Falguière 50

Cachez cette feature qu'on ne saurait voir

ou comment j'ai mis des feature flags ...

Page 51: Deploiement continu breizh camp

Continuous deployment - Falguière 51

Bilan

Entièrement automatisé Promote manuel

A adapter pour la StoreSon petit frère tourne sur l'Apple Store

Automatisation des tests sous iOS ?

Page 52: Deploiement continu breizh camp

Continuous deployment - Falguière 52

Les facteurs de succès

Cycles courts

Agilité du dev

Acceptation du PO ? Au moins pour le delivery

Page 53: Deploiement continu breizh camp

Continuous deployment - Falguière 53

Automatiser

Page 54: Deploiement continu breizh camp

Continuous deployment - Falguière 54

Installer Facilement

Etape par étapeComprendre ses limites

3) Automatisé 2) Outillé

1) Processus clair

Page 55: Deploiement continu breizh camp

Continuous deployment - Falguière 55

Installer au plus tôt

Déminer Simplifier

Apprendre pour réagir vite en prod

Page 56: Deploiement continu breizh camp

Continuous deployment - Falguière 56

Installer la même chose

Prod

Tests

VM

Page 57: Deploiement continu breizh camp

Continuous deployment - Falguière 57

ci / Production

Nombre 

Sécurité & Confidentialité

Rollback

Page 58: Deploiement continu breizh camp

Continuous deployment - Falguière 58

Gérer la multiplicité

mcollective / RunDeck / Fabric / Capistrano

vs Hudson/Jenkins

vs scripts

Page 59: Deploiement continu breizh camp

Continuous deployment - Falguière 59

Outils utiles

Git vs SVN

Script vs Maven

Page 60: Deploiement continu breizh camp

Continuous deployment - Falguière 60

Et la base ?

Tout scripter dès le dev

Scripts incrémentaux

Ne pas supprimer

Page 61: Deploiement continu breizh camp

Continuous deployment - Falguière 61

Tout automatiser ?

Accepter un processus partiellement

manuel

- sécurisation / vérification- migration de bases

- opérations peu fréquentes

Page 62: Deploiement continu breizh camp

Continuous deployment - Falguière 62

Conclusion

Page 63: Deploiement continu breizh camp

Continuous deployment - Falguière 63

Delivery / Deploiement

Outillage similaire

+

Gérer l'automatisation de la validation

Page 64: Deploiement continu breizh camp

Continuous deployment - Falguière 64

Facteurs favorables

Faible criticité ou totalement automatisable

Agilité des équipesConvevoir par incrément

Maîtrise des outils (DVCS, TDD, ...)

Page 65: Deploiement continu breizh camp

Continuous deployment - Falguière 65

Facteurs favorables

Compréhension de son processus technique

Coopération avec la production

Page 66: Deploiement continu breizh camp

Continuous deployment - Falguière 66

DEVOPS

DEVOPS

Page 67: Deploiement continu breizh camp

Continuous deployment - Falguière 67

Une application ne rend le service

prévu aux utilisateurs que si

elle est

déployée

devops

Page 68: Deploiement continu breizh camp

Continuous deployment - Falguière 68

devops

Peur des déploiements

Ça marche chez moi !

Page 69: Deploiement continu breizh camp

Continuous deployment - Falguière 69

Coopérer dès le début

Abattre les silos

devops

Peur des déploiements

Ça marche chez moi !

Page 70: Deploiement continu breizh camp

Continuous deployment - Falguière 70

Des User Groups

Lille-devopsParis-devopsLyon ???

Et chez vous ?

http://parisdevops.fr/http://devops.fr

Page 71: Deploiement continu breizh camp

Continuous deployment - Falguière 71

Merci pour votre attention

Je vous écoute

@cfalguiere

Page 72: Deploiement continu breizh camp

Continuous deployment - Falguière 72

Quelques Lectureshttp://continuousdelivery.com/

http://continuousdelivery.com/2011/05/make-large-scale-changes-incrementally-with-branch-by-abstraction/

http://continuousdelivery.com/2010/08/continuous-delivery-vs-continuous-deployment/

http://www.slideshare.net/ashmaurya/continuous-deployment-startup-lessons-learned

http://programmerjoe.com/2009/02/19/the-hard-part-of-continuous-deployment/

http://programmerjoe.com/2009/02/12/continuous-deployment-with-thick-clients/

http://www.codemanship.co.uk/parlezuml/blog/?postid=955

http://www.tvagile.com/2010/08/04/continuous-integration-pipelines-and-deployment/

http://www.slicedbreaddesign.com/blog/index.php/2009/11/is-continuous-deployment-good-for-users

http://code.flickr.com/blog/2009/12/02/flipping-out/

http://martinfowler.com/bliki/BlueGreenDeployment.html

http://eng.wealthfront.com/2010/05/deployment-infrastructure-for.html

Page 73: Deploiement continu breizh camp

Continuous deployment - Falguière 73

Crédits photo

http://www.flickr.com/photos/jurvetson/5126137767

http://www.flickr.com/photos/pjb2332/1892076224

http://www.flickr.com/photos/wirralwater/3304595702

http://www.flickr.com/photos/deltamike/112665695

http://www.flickr.com/photos/grill/5704051872

http://www.flickr.com/photos/hugo90/5360024969

http://www.flickr.com/photos/theplanetdotcom/4878815037

http://www.flickr.com/photos/edvvc/1972546648

Page 74: Deploiement continu breizh camp

Continuous deployment - Falguière 74

Crédits photohttp://www.flickr.com/photos/ecru76/2709226929

http://www.flickr.com/photos/seeminglee/3929959851

http://www.flickr.com/photos/publicresourceorg/4245550588

http://www.flickr.com/photos/pjb2332/2209369645

http://www.flickr.com/photos/theleticiabertin/5344450700

http://www.flickr.com/photos/abbot45/309058972

http://www.flickr.com/photos/pjb2332/2095801220