Agilité / DevOps / Continuous Integration / Continuous Delivery - Présentation S2LQ 2016

Preview:

Citation preview

Retourd'expériencededéploiementd'uneinfonuagiqueprivéeausein

d'unegrandeorganisation20septembre2016

Michel-MarieMAUDET-@mmaudet

1

Quisuisje?COOdeLINAGORADirecteurdesopérations

Militantlibristedepuis1996Animateurd'unsite(plusenlignedepuis2001)surlesressourceLinuxd'Internet-->Googlem'atué!Anciendel'Arméedel'AiretamoureuxdelaCorse;-)

2

EditeurOpenSourceDigitalBoosterAgilenative

PrésentàMontréaldepuis2013.Equipede10collaboreursàvotreservice.

DesmandatspourlaVilledeMontréal,HydroQuébec,laVilledeLaval...

3

Delalignedecodeaudéploiementduservice

enproduction

4

JamesprojetApachedepuisplusdedixansplusieursdizainesdecontributeursaucoursdesonhistoireplusieursmilliersdecommitsplusde200000lignesdecodejavaplusde100projetsmavenv2enproductiondepuisdesannées,communautéd'utilisateurssatisfaitv3démarréilya10ans,projetjamaisterminéetdécouragementdelacommunautéplusd'activitédedévelopementdepuis2012

http://james.apache.org/

5

Jamesen2014Gestionducodesource

Envoidemodification(patch)parmailouàtraverslebugtracker

intégrationàlademandeparuncommiter

6 . 1

Jamesen2014Intégrationcontinue

L'intégrationcontinueestuneactivitéparticulière

Lecontributeurnepeutpasyparticiper(aucundroitsurl'administrationdeJenkins)

6 . 2

DesproblématiquessimilairesenentrepriseRéactivité/TimetomarketModernisationetagilitédetouteslesphasesducycledeviedesapplicationsQualitédeserviceRéductionducoûtd'exploitation&dedéveloppement

7 . 1

Uneréalitéenentreprise:faiblessesduSI

Délaidemiseàdispositiond'environnementQualitédeservice(interruptiondeservices,performance)Difficultédemigration(versionsuccessivesdel'application&desdonnées)Lecassetêtedelagestiondesconfigurationsentrelesdifférentsenvironnements(dev,test,preprod,prod)Risquesurlaconcentrationdesconnaissances

7 . 2

Versuneinfonuagiqueprivée

StandardiserlematérieletlesinfrastructuresparlavirtualisationToutautomatiser(processus,manipulationduhardware,etc)Adopterlesméthodologiesdes"GéantsduWeb"Capitalisersurlesapprochesadoptéesautourducode(approcheDevOps)

7 . 3

Méthodesdedévelopementetd'exploitation

PrincipesduDevOpsCAMS(Culture,Automation,Measurement,Sharing)Agilitédeboutenbout(Intégrationcontinue,Déploiementcontinu)

8 . 1

Méthodesdedévelopementetd'exploitation

DevOpsStratégiequiviseàgomerlalimiteentrel'exploitationetledéveloppementenutilisantdesméthodesetdesoutils

communsentrelesdeuxmondes.

8 . 2

Méthodesdedévelopementetd'exploitation

DéploiementcontinuStratégiededévelopementvisantàpublierautomatiquement

enpré/productiontoutemodificationvalidantlestestsd'acceptance

8 . 3

Méthodesdedévelopementetd'exploitationIntégrationcontinue

automatisationdetâches(compilation,testunitaires,testsfonctionnels,...)exécutionsystématiquepeuxreposersurunebriquelogicielle(Jenkins,TravisCI,...)vérifiechaquemodificationducode 8 . 4

Méthodesdedévelopementetd'exploitation

Pipelinedel'intégrationd'unePull-Request

8 . 5

Agilitédudéveloppement

ArchitectureadaptéeAdoptationdesarchitecturemicro-servicesClusteringStatelessservices

9 . 1

Agilitédudéveloppement

LaPull-RequestBranchementducodesursonpropredépôtPréparationd'unhistoriquedemodification"racontantunehistoire"SoumissiondelabranchepourintégrationàmasterRelecture,validationetintégration

9 . 2

9 . 3

Résuméd'unePRsousGitHub

PRd'unutilisateurn'ayantpassignélaCLA

9 . 4

Agilitédudéveloppement

LaPull-Request:automatisationexécutiondestestssurunesimulationd'intégrationducodeauditducodeparunoutilapproprié

9 . 5

Agilitédudéveloppement

Outillageorchestration:Jenkins

TravisCI

CircleCI

https://jenkins.io/

https://travis-ci.org/

https://circleci.com/9 . 6

Agilitédudéveloppement

Outillagetests:Cucumber

REST-assured

AssertJ

https://cucumber.io/

http://rest-assured.io/

http://joel-costigliola.github.io/assertj/9 . 7

Agilitédudéveloppement

Outillagetests:Protactor

Mocha

WebDriver

http://www.protractortest.org/

https://mochajs.org/

http://webdriver.io/9 . 8

Agilitédudéveloppement

Outillageaudit:Sonarhttp://www.sonarqube.org/

9 . 9

Agilitédudéveloppement

Outillagegit/PR:Stash

GitHub

https://www.atlassian.com/stash/

https://github.com/

9 . 10

Agilitédudéploiement

GénérationdeslivrablesArtifacts(package/imagesdocker)àchaquecommit:rpm,deb,dockerDéploiementdesartifacts:DockerRegistry,Artifactory,Nexus

10 . 1

Agilitédudéploiement

DéploiementdeslivrablesTéléchargementdesartifactsRollingupgrade/blue-greendeployment:Kubernetes,Marathon/MesosChangementsbasededonnéesActivationdesfeatures:ff4j

10 . 2

AgilitédudéploiementFeatureflippingconfiguration

10 . 3

AgilitédudéploiementFeatureflippingdonnéesd'utilisationdesfonctionnalités

10 . 4

Agilitédudéploiement

GestiondelabasededonnéesPasdemiseàjourdelabasededonnéesMaiscréationdenouvellestablesoucolonnesRapiditédemigration,ellesefaitaufuretàmesureAucunepertededonnées,lesanciennesdonnéessonttoujoursdisponibles(anciennestables)Basculementprogressif,lesnouvellesdonnéessontcrééesdanslesnouvellestables

10 . 5

AgilitédudéploiementGestiondelabasededonnées

10 . 6

ContinousIntegrationasCode/"ImmutableInfrastructure"

ConceptAucuneintéractionavecl'IHMApplicationdesméthodesdedévelopementFacilitéd'utilisationpourn'importequelcontributeurauprojet

11 . 1

ContinousIntegrationasCode

ConfigurationdeJenkinsInstallationautomatiquedespluginsConfigurationdelaCIetdespluginsautomatique

11 . 2

ContinousIntegrationasCode

Coderlebuilddevotreapplication

Lebuildfaitpartiducodedel'applicationvalidationdesmodificationsparPR

11 . 3

ContinousIntegrationasCode

Extraitd'unpipelinedebuild

11 . 4

Jamesen2016:CIascodeLivraisoncontinue(générationetdéploiementdesimages)Déploiementcontinueàchaquecommit(miseàjoursduservice)Processdedevéloppementàl'étatdel'artNouvelledynamiquedanslacommunautécardéveloppementréellementdécentraliséRapiditédemiseàdispositiondesnouvellesversions

12

C'estaussipossibleenEntreprise

EnServiceConseilAuditdesbesoins/StratégieCloudOpenSourceDesignetconceptiondel’architectureSélectiondescomposantsmatérielsetlogiciels

13

C'estaussipossibleenEntreprise

EnServiceConseilAuditdesbesoins/StratégieCloudOpenSourceAccompagnementdéploiementméthodologiesAgile&DevOpsDesignetconceptiondel’architectureSélectiondescomposantsmatérielsetlogiciels

14

C'estaussipossibleenEntreprise

AccompagnementetExpertiseDéploiementdel’infrastructureConfigurationdel’ensembledesfonctionsAutomatisationdelagestionFormations

15

C'estaussipossibleenEntreprise

SupportetmaintenanceOSSAsurIaasOpenStack/Docker/RoboconfSupportdespilesCI/CDAccompagnementàlamigrationHébergementducloudendatacenterouchezvous

16

Mercipourvotreattention

Questions/Réponses

Nouscontacter:canada@linagora.com 17

Recommended