Upload
michel-marie-maudet
View
421
Download
2
Embed Size (px)
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