Deploiement continu breizh camp

Preview:

Citation preview

Déploiement continu en production

Claude FalguièreBreizhCamp le 17 Juin 2011

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/

Continuous deployment - Falguière 3

Claude Falguière

@cfalguiereArchitecte Technique

Usines logiciellesPerformances

DevopsJava

Continuous deployment - Falguière 4

Regrouper les développeuses

Java

ConnecterRendre visibles

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

Continuous deployment - Falguière 5

Motivation

Continuous deployment - Falguière 6

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

???

Continuous deployment - Falguière 7

Source : Thoughtworks

Continuous deployment - Falguière 8

Déploiement

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

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

Continuous deployment - Falguière 11

Responsabilités

Confidentialité, SécuritéInterdépendances

Opérations planifiées

assembler → approvisionner

→ installer → déployer

Continuous deployment - Falguière 12

Continu

Continuous deployment - Falguière 13

Batch & queue

Produire un lotLivrer le lot

Continuous deployment - Falguière 14

Livrer

des features

au fur et à mesure

Continuous Flow

Continuous deployment - Falguière 15

DélaiExceptionnelVolume

RéactivitéBanaliseCiblé

Batch & queue

Continuous Flow

Continuous deployment - Falguière 16

Periodicite

Plusieurs écoles

De plusieurs fois par heure à 1 fois par jour

Continuous deployment - Falguière 17

ContinuousIntegration

ContinuousDelivery

ContinuousDeployment

Continuous deployment - Falguière 18

Qui déclenche ?

PO + SM + OPSPromote manuel

Autopromote#deploy #envhabilitations

Continuous deployment - Falguière 19

Déploiement

Continu

Pas seulement automatisé

Pas forcément sans intervention humaine

Continuous deployment - Falguière 20

Jusque là tout va bien

Continuous deployment - Falguière 21

Processus Fast Fail

Analyser les causes

AméliorerPrévenirImpliquer

Continuous deployment - Falguière 22

Livrer au plus tôt

Commiter souventLivrer des features

Feature BranchingFeature flags → par environnement

Feature flippers → par user

Continuous deployment - Falguière 23

Tester au plus tôt

Tests automatisés

Smoke test

Tests en production

Continuous deployment - Falguière 24

Tester en production

Déploiement progressif

Déploiement green-blue

Continuous deployment - Falguière 25

Evaluer au plus tôt

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

Continuous deployment - Falguière 26

Surveiller

Pendant Juste après

Après

MonitoringAutodiagnostic, journaux

Continuous deployment - Falguière 27

REX (1)

Continuous deployment - Falguière 28

Contexte

StartupRefonteDomaine complexe

Difficile à tester en simulation

Grand nombre de serveurs

Continuous deployment - Falguière 29

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

Continuous deployment - Falguière 31

L'usine

Continuous deployment - Falguière 32

Continuous deployment - Falguière 33

Blueprint

Continuous deployment - Falguière 34

Flex

Plus facileMoins de code

Projet Agile

Flex 4Maven 2

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

Continuous deployment - Falguière 36

Java

LegacyRefonte SOA

Conversion Agile

Continuous deployment - Falguière 37

Java

LegacyRefonte SOA

Conversion Agile

StandbyPas de déploiement

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

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 ?

Continuous deployment - Falguière 40

REX (2)

Continuous deployment - Falguière 41

Et j'ai changé de vie

Continuous deployment - Falguière 42

iOS

Continuous deployment - Falguière 43

Distribute for enterprise

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

voulez p

as savoir

Continuous deployment - Falguière 44

Idée générale

Eviter toutes ces manipulations

Mode Agile avec le clientLivraisons fréquentes

Continuous deployment - Falguière 45

Clarifier le processus

Continuous deployment - Falguière 46

Ingrédients et chefs

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

Sylvain Rousseau & David Gageot

Continuous deployment - Falguière 47

Git fetchrebase

ServerLess CI

Continuous deployment - Falguière 48

Git fetchrebase

Air deploy

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

Continuous deployment - Falguière 50

Cachez cette feature qu'on ne saurait voir

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

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 ?

Continuous deployment - Falguière 52

Les facteurs de succès

Cycles courts

Agilité du dev

Acceptation du PO ? Au moins pour le delivery

Continuous deployment - Falguière 53

Automatiser

Continuous deployment - Falguière 54

Installer Facilement

Etape par étapeComprendre ses limites

3) Automatisé 2) Outillé

1) Processus clair

Continuous deployment - Falguière 55

Installer au plus tôt

Déminer Simplifier

Apprendre pour réagir vite en prod

Continuous deployment - Falguière 56

Installer la même chose

Prod

Tests

VM

Continuous deployment - Falguière 57

ci / Production

Nombre 

Sécurité & Confidentialité

Rollback

Continuous deployment - Falguière 58

Gérer la multiplicité

mcollective / RunDeck / Fabric / Capistrano

vs Hudson/Jenkins

vs scripts

Continuous deployment - Falguière 59

Outils utiles

Git vs SVN

Script vs Maven

Continuous deployment - Falguière 60

Et la base ?

Tout scripter dès le dev

Scripts incrémentaux

Ne pas supprimer

Continuous deployment - Falguière 61

Tout automatiser ?

Accepter un processus partiellement

manuel

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

- opérations peu fréquentes

Continuous deployment - Falguière 62

Conclusion

Continuous deployment - Falguière 63

Delivery / Deploiement

Outillage similaire

+

Gérer l'automatisation de la validation

Continuous deployment - Falguière 64

Facteurs favorables

Faible criticité ou totalement automatisable

Agilité des équipesConvevoir par incrément

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

Continuous deployment - Falguière 65

Facteurs favorables

Compréhension de son processus technique

Coopération avec la production

Continuous deployment - Falguière 66

DEVOPS

DEVOPS

Continuous deployment - Falguière 67

Une application ne rend le service

prévu aux utilisateurs que si

elle est

déployée

devops

Continuous deployment - Falguière 68

devops

Peur des déploiements

Ça marche chez moi !

Continuous deployment - Falguière 69

Coopérer dès le début

Abattre les silos

devops

Peur des déploiements

Ça marche chez moi !

Continuous deployment - Falguière 70

Des User Groups

Lille-devopsParis-devopsLyon ???

Et chez vous ?

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

Continuous deployment - Falguière 71

Merci pour votre attention

Je vous écoute

@cfalguiere

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

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

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