Retour d'experience du Groupe Express Roularta sur l'intégration de Puppet (mais finalement Chef) dans leur système d'information, permettant en quelques cliques et quelques minutes de mettre en place une ou plusieurs machines de développement parfaitement fonctionnelle et à jour, le tout hébergé sur le cloud Amazon.
2. SÉBASTIEN
ANGÈLE
DIRECTEUR
ADJOINT
DES
NOUVEAUX
MÉDIAS
-‐ GROUPE
EXPRESS
ROULARTA
NICOLAS
SILBERMAN
CONSULTANT
EN
ARCHITECTURE
IT
-‐ VANILLE
CARAMEL
ENSEIGNANT
-‐ ESSEC
BUSINESS
SCHOOL
ANCIEN
PRÉSIDENT
DE
L’AFUP
3. ¡ Groupe
historique
de
presse
L’Express,
L’Expansion,
L’Entreprise,
Mieux
Vivre
Votre
Argent,
L’Express
Styles,
Côté
Sud,
Côté
Ouest,
Zeste,
Point
de
Vue,
Studio
Ciné
Live,
Lire,
Classica,
A
nous
Paris,
L’Etudiant…
¡ Sur
le
web
:
7 millions de VU/mois
TOP 5 des sites d’actu
1 million de VU/mois
Leader de la déco
4.
5. ¡ «
Non,
chez
moi,
ça
marche…
»
¡ «
C’est
normal,
je
ne
t’ai
pas
tout
installé,
ne
regarde
pas
cette
partie
du
site...
»
¡ «
Ah
bon,
tu
voulais
tester
ça
aussi
?
»
¡ “T’inquiète
pas,
ça
marchera
en
prod…
»
6. ¡ Les
postes
de
dev
:
standalone
ou
avec
serveur
de
dev
¡ La
recette
/
demo
/
staging
¡ La
preprod
¡ La
prod
13. ● le
middleware
● les
applicatifs
● les
BDDs
● les
fichiers
(images,
pdfs,...)
14. ¡ Industrialisation
du
code
:
Git
¡ Expérience
du
déploiement
continu
(Capistrano)
¡ Des
compétences
DevOps
15. ¡ C’est
un
mouvement
¡ Réduire
les
frictions
entre
§ Les
devs
§ Les
ops
(aka
admin
sys
ou
barbus)
¡ Pour
une
belle
phrase
commune
:
«
travailler
ensemble
pour
produire
de
la
valeur
pour
l'entreprise
»
sources wikipedia
16. ● Offres
de
service
● API
● Instances
proposées
● …
et
envie
de
s’amuser
!
17.
18. ¡ Démarrer
une
instance
EC2
chez
Amazon
est
très
facile,
on
choisi
les
caractéristiques
de
la
machine
et
c'est
parti
¡ Démarrer
une
stack
complète
est
également
assez
simple
avec
CloudFormation
¡ On
peux
par
exemple
demander
via
l'API
d'Amazon:
§ Créer
un
serveur
MySQL
Master/Slave
§ Démarrer
une
instance
EC2
et
lui
communique
le
EndPoint
MySQL
afin
qu'il
configure
ses
applications
en
fonction
19. ¡ Facile
de
se
noyer
et
de
se
perdre
dans
les
offres
:
§ Se
faire
accompagner
par
quelqu’un
qui
connait
pour
gagner
du
temps
¡ Si
aucune
expérience
dans
le
Cloud,
attention
à
la
maîtrise
du
budget
§ Poser
des
alertes
sur
des
seuils
budgétaires
¡ Gouvernance
des
machines
et
optimisation
des
ressources
§ Optimiser
au
plus
près
:
une
machine
qui
ne
fait
rien
n’a
aucune
raison
d’
être
allumée
20. ¡ Logiciel
qui
permet
de
gérer
les
déploiements
système
et
applicatif
¡ Historiquement
:
scripts
Bash
et
Cfengine
¡ Deux
candidats
open
source
:
§ Puppet
(Ruby)
§ Chef
(Erlang)
¡ Et
Ansible
?
On
ne
connaissait
pas
!
21.
22. ¡ Précédentes
expériences
sur
des
stacks
plus
petites
dans
l’équipe
¡ Expérience
significative
de
Nicolas
Silberman
chez
Mediapart
sur
les
problématiques
d'environnement
de
développement
¡ Volonté
de
rapidement
démarrer
sur
le
projet.
23. ¡ Pour
démarrer
:
utiliser
Foreman
directement
¡ Attention
:
configuration
de
type
hiera
(fichiers
YAML
fournissant
des
variables)
non
compatible
avec
Foreman:
lourd
travail
d'adaptation
pour
repasser
en
Foreman.
¡ Recettes
de
la
communauté
sont
utilisés
par
un
grand
nombre
et
quand
elles
sont
maintenues,
elles
sont
d'excellente
qualité.
24. ¡ Complexité
avec
l'arbre
de
dépendances.
¡ Il
n'est
pas
rare
de
se
poser
la
question:
cette
action
doit-‐elle
être
réalisée
avant
celle
la
?
¡ Exemple
de
Dépendance:
§ install_apache
§ créer
un
Vhost
§ restart_apache
25. ¡ Puppet
compile
l'ensemble
des
recettes,
réalise
un
arbre
de
dépendances
et
joue
les
modifications
à
faire
sur
le
système
dans
l'ordre
des
dépendances
qu'il
a
déterminé
¡ Quand
on
atteint
la
vingtaine
(ou
même
cinquantaine)
de
niveau
de
dépendances,
trouver
d'où
est
le
problème
devient
compliqué.
26.
27.
28.
29. ¡ Tutoriaux
de
la
communauté
et
la
documentation
fournie
par
AWS
faisait
uniquement
mention
de
Chef
(même
si
la
doc
Puppet
arrive
doucement
sur
AWS)
¡ Choix
de
Chef
par
notre
hébergeur
pour
la
prod
¡ Recettes
plus
simples
à
écrire
31. ¡ Au
début
:
images
de
Base
(AMI)
des
distributions
linux
¡ Maintenant
:
Packer.io
pour
construire
des
images
avec
:
§ Nginx
compilé
(gestion
des
SSI)
§ Autres
briques
:
MySQL,
Redis,
MemCache,
RabbitMQ,
Apache,
Php,…
32.
33.
34. ¡ Un
tableau
de
variable
pour
:
§ Créer
les
Vhost
Nginx
§ Cloner
le
projet,
exécuter
un
composer
install
§ Cloner
un
sous
repository
dans
un
sous-‐dossier
§ Remplacer
des
fichiers
au
sein
du
dépot
(fichiers
de
configuration)
§ Créer
des
règles
spécifiques
dans
Varnish
§ Lancer
des
commandes
de
warmup,
de
générations
de
cache,
…
35.
36.
37.
38. ¡ A
remonter
de
la
prod
tous
les
jours
:
§ 10
bases
de
donnée
MySQL
§ 5
Bases
MongoDB
§ 1
Dump
Redis
§ 1
base
SQL
Serveur
¡ 30h
pour
tout
remonter
§ Arbitrer
la
fraîcheur
des
données
§ Optimiser
les
bases
de
données
39. ¡ Pas
de
solutions
idéales
pour
l’instant
¡ Warmup
avec
un
disque
dur
(si,
si)
¡ Rsync
40. ¡ Permet
de
faire
des
tests
unitaires
et
fonctionnel
sur
les
recettes
¡ Compatible
avec
beaucoup
de
provisionner
(Puppet,
Chef),
bootstrapper
(Amazon
EC2).
¡ Concept
de
"Infrastructure
as
Code"
41. ¡ Faire
le
moins
de
choses
à
la
main
¡ Gérer
son
parc
¡ Ne
pas
être
devops
dépendant
42.
43.
44. ¡ Très
bonne
documentation
¡ Disponibilité
et
temps
de
réponses
¡ SDK
fourni
pour
PHP
:
se
base
sur
Guzzle
pour
envoyer
les
requêtes
et
clients
distincts
pour
chaque
service
(EC2Client,
CloudFormationClient,
S3Client,
etc)
¡ Intégration
rapide
du
SDK
dans
un
projet
Symfony2
grâce
à
l'injection
de
dépendance
et
l'event
dispatcher
45. ¡ Beaucoup
de
documentation
à
parcourir
¡ Nécessaire
de
savoir
précisément
ce
que
l'on
souhaite
faire
pour
ne
pas
prendre
une
mauvaise
direction
46. ¡ Investissement
lourd
au
début
¡ Se
mette
en
mode
projet
avec
une
équipe
dédiée
¡ Travailler
en
agile
et
en
lean...
¡ …
tout
en
restant
ambitieux
!
47. ¡ Finir
à
100%
!
¡ Gérer
le
fichier
de
config
pour
les
développeurs
¡ Faire
des
projections
budgétaires