Retour	d'expérience	de	déploiement
d'une	infonuagique	privée	au	sein
d'une	grande	organisation
20	septembre	2016
Michel-Marie	MAUDET	-	@mmaudet
1
Qui	suis	je	?
COO	de	LINAGORA
Directeur	des	opérations
Militant	libriste	depuis	1996
Animateur	d'un	site	(plus	en	ligne
depuis	2001)	sur	les	ressource
Linux	d'Internet	-->	Google	m'a	tué
!
Ancien	de	l'Armée	de	l'Air
et	amoureux	de	la	Corse	;-)
2
Editeur	Open	Source
Digital	Booster
Agile	native
Présent	à	Montréal	depuis	2013.	Equipe	de	10
collaboreurs	à	votre	service.
Des	mandats	pour	la	Ville	de	Montréal,	Hydro
Québec,	la	Ville	de	Laval...
3
De	la	ligne	de	code	au
déploiement	du	service
en	production
4
James
projet	Apache	depuis	plus	de	dix	ans
plusieurs	dizaines	de	contributeurs	au	cours	de	son	histoire
plusieurs	milliers	de	commits
plus	de	200000	lignes	de	code	java
plus	de	100	projets	maven
v2	en	production	depuis	des	années,	communauté
d'utilisateurs	satisfait
v3	démarré	il	y	a	10	ans,	projet	jamais	terminé	et
découragement	de	la	communauté
plus	d'activité	de	dévelopement	depuis	2012
http://james.apache.org/
5
James	en	2014
Gestion	du	code	source
Envoi	de	modification	(patch)	par
mail	ou	à	travers	le	bug	tracker
intégration	à	la	demande	par	un	commiter
6 . 1
James	en	2014
Intégration	continue
L'intégration	continue	est	une
activité	particulière
Le	contributeur	ne	peut	pas	y	participer	(aucun	droit	sur
l'administration	de	Jenkins)
6 . 2
Des	problématiques
similaires	en	entreprise
Réactivité	/	Time	to	market
Modernisation	et	agilité	de	toutes	les	phases	du	cycle	de	vie
des	applications
Qualité	de	service
Réduction	du	coût	d'exploitation	&	de	développement
7 . 1
Une	réalité	en	entreprise
:	faiblesses	du	SI
Délai	de	mise	à	disposition	d'environnement
Qualité	de	service	(interruption	de	services,	performance)
Difficulté	de	migration	(version	successives	de	l'application
&	des	données)
Le	casse	tête	de	la	gestion	des	configurations	entre	les
différents	environnements	(dev,	test,	preprod,	prod)
Risque	sur	la	concentration	des	connaissances
7 . 2
Vers	une	infonuagique
privée
Standardiser	le	matériel	et	les	infrastructures	par	la
virtualisation
Tout	automatiser	(processus,	manipulation	du	hardware,	etc)
Adopter	les	méthodologies	des	"Géants	du	Web"
Capitaliser	sur	les	approches	adoptées	autour	du	code
(approche	DevOps)
7 . 3
Méthodes	de
dévelopement	et
d'exploitation
Principes	du	DevOps	CAMS	(Culture,	Automation,
Measurement,	Sharing)
Agilité	de	bout	en	bout	(Intégration	continue,	Déploiement
continu)
8 . 1
Méthodes	de
dévelopement	et
d'exploitation
DevOps
Stratégie	qui	vise	à	gomer	la	limite	entre	l'exploitation	et	le
développement	en	utilisant	des	méthodes	et	des	outils
communs	entre	les	deux	mondes.
8 . 2
Méthodes	de
dévelopement	et
d'exploitation
Déploiement	continu
Stratégie	de	dévelopement	visant	à	publier	automatiquement
en	pré/production	toute	modification	validant	les	tests
d'acceptance
8 . 3
Méthodes	de
dévelopement	et
d'exploitation
Intégration	continue
automatisation	de	tâches	(compilation,	test	unitaires,	tests
fonctionnels,	...)
exécution	systématique
peux	reposer	sur	une	brique	logicielle	(Jenkins,	Travis	CI,	...)
vérifie	chaque	modification	du	code 8 . 4
Méthodes	de
dévelopement	et
d'exploitation
Pipeline	de	l'intégration	d'une	Pull-Request
8 . 5
Agilité	du
développement
Architecture	adaptée
Adoptation	des	architecture	micro-services
Clustering
Stateless	services
9 . 1
Agilité	du
développement
La	Pull-Request
Branchement	du	code	sur	son	propre	dépôt
Préparation	d'un	historique	de	modification	"racontant	une
histoire"
Soumission	de	la	branche	pour	intégration	à	master
Relecture,	validation	et	intégration
9 . 2
9 . 3
Résumé	d'une	PR	sous	GitHub	
	
PR	d'un	utilisateur	n'ayant	pas	signé	la	CLA	
9 . 4
Agilité	du
développement
La	Pull-Request	:	automatisation
exécution	des	tests	sur	une	simulation	d'intégration	du	code
audit	du	code	par	un	outil	approprié
9 . 5
Agilité	du
développement
Outillage
orchestration	:
Jenkins	
Travis	CI	
Circle	CI	
https://jenkins.io/
https://travis-ci.org/
https://circleci.com/
9 . 6
Agilité	du
développement
Outillage
tests	:
Cucumber	
REST-assured	
AssertJ	
https://cucumber.io/
http://rest-assured.io/
http://joel-costigliola.github.io/assertj/
9 . 7
Agilité	du
développement
Outillage
tests	:
Protactor	
Mocha	
WebDriver	
http://www.protractortest.org/
https://mochajs.org/
http://webdriver.io/
9 . 8
Agilité	du
développement
Outillage
audit	:
Sonar	http://www.sonarqube.org/
9 . 9
Agilité	du
développement
Outillage
git	/	PR	:
Stash	
GitHub	
https://www.atlassian.com/stash/
https://github.com/
9 . 10
Agilité	du	déploiement
Génération	des	livrables
Artifacts	(package	/	images	docker)	à	chaque	commit:	rpm,
deb,	docker
Déploiement	des	artifacts:	DockerRegistry,	Artifactory,
Nexus
10 . 1
Agilité	du	déploiement
Déploiement	des	livrables
Téléchargement	des	artifacts
Rolling	upgrade	/	blue-green	deployment	:	Kubernetes,
Marathon/Mesos
Changements	base	de	données
Activation	des	features	:	ff4j
10 . 2
Agilité	du	déploiement
Feature	flipping	configuration
10 . 3
Agilité	du	déploiement
Feature	flipping	données	d'utilisation	des	fonctionnalités
10 . 4
Agilité	du	déploiement
Gestion	de	la	base	de	données
Pas	de	mise	à	jour	de	la	base	de	données
Mais	création	de	nouvelles	tables	ou	colonnes
Rapidité	de	migration,	elle	se	fait	au	fur	et	à	mesure
Aucune	perte	de	données,	les	anciennes	données	sont
toujours	disponibles	(anciennes	tables)
Basculement	progressif,	les	nouvelles	données	sont	créées
dans	les	nouvelles	tables
10 . 5
Agilité	du	déploiement
Gestion	de	la	base	de	données
10 . 6
Continous	Integration	as
Code	/	"Immutable
Infrastructure"
Concept
Aucune	intéraction	avec	l'IHM
Application	des	méthodes	de	dévelopement
Facilité	d'utilisation	pour	n'importe	quel	contributeur	au
projet
11 . 1
Continous	Integration	as
Code
Configuration	de	Jenkins
Installation	automatique	des	plugins
Configuration	de	la	CI	et	des	plugins	automatique
11 . 2
Continous	Integration	as
Code
Coder	le	build	de	votre
application
Le	build	fait	parti	du	code	de	l'application
validation	des	modifications	par	PR
11 . 3
Continous	Integration	as
Code
Extrait	d'un	pipeline	de	build
11 . 4
James	en	2016	:
CI	as	code
Livraison	continue	(génération	et	déploiement	des	images)
Déploiement	continue	à	chaque	commit	(mise	à	jours	du
service)
Process	de	devéloppement	à	l'état	de	l'art
Nouvelle	dynamique	dans	la	communauté	car
développement	réellement	décentralisé
Rapidité	de	mise	à	disposition	des	nouvelles	versions
12
C'est	aussi	possible	en
Entreprise
En	Service	Conseil
Audit	des	besoins	/	Stratégie	Cloud	Open	Source
Design	et	conception	de	l’architecture
Sélection	des	composants	matériels	et	logiciels
13
C'est	aussi	possible	en
Entreprise
En	Service	Conseil
Audit	des	besoins	/	Stratégie	Cloud	Open	Source
Accompagnement	déploiement	méthodologies	Agile	&
DevOps
Design	et	conception	de	l’architecture
Sélection	des	composants	matériels	et	logiciels
14
C'est	aussi	possible	en
Entreprise
Accompagnement	et	Expertise
Déploiement	de	l’infrastructure
Configuration	de	l’ensemble	des	fonctions
Automatisation	de	la	gestion
Formations
15
C'est	aussi	possible	en
Entreprise
Support	et	maintenance
OSSA	sur	Iaas	OpenStack/Docker/Roboconf
Support	des	piles	CI	/	CD
Accompagnement	à	la	migration
Hébergement	du	cloud	en	datacenter	ou	chez	vous
16
Merci	pour	votre
attention
Questions	/	Réponses
Nous	contacter	:
canada@linagora.com 17

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