et 
un 
peu 
de 
Chef 
aussi... 
Forum PHP 2014
SÉBASTIEN 
ANGÈLE 
DIRECTEUR 
ADJOINT 
DES 
NOUVEAUX 
MÉDIAS 
-­‐ GROUPE 
EXPRESS 
ROULARTA 
NICOLAS 
SILBERMAN 
CONSULTAN...
¡ Groupe 
historique 
de 
presse 
L’Express, 
L’Expansion, 
L’Entreprise, 
Mieux 
Vivre 
Votre 
Argent, 
L’Express 
Style...
¡ « 
Non, 
chez 
moi, 
ça 
marche… 
» 
¡ « 
C’est 
normal, 
je 
ne 
t’ai 
pas 
tout 
installé, 
ne 
regarde 
pas 
cette ...
¡ Les 
postes 
de 
dev 
: 
standalone 
ou 
avec 
serveur 
de 
dev 
¡ La 
recette 
/ 
demo 
/ 
staging 
¡ La 
preprod 
¡...
L’Express 
en 
2005: 
¡ 1 
application 
¡ 1 
base 
de 
données
L’Express 
en 
2014 
: 
¡ 6 
applications 
PHP 
¡ 15 
bdd 
métiers 
sous 
MySQL 
+ 
mongoDB 
+ 
SQL 
Server 
¡ Redis 
¡...
● Reproduire 
un 
bout 
: 
trop 
de 
dépendances 
● Le 
faire 
à 
la 
main 
: 
long 
et 
toujours 
quelque 
chose 
qui 
ma...
● Espérer 
que 
ça 
marche 
en 
prod...
● le 
middleware 
● les 
applicatifs 
● les 
BDDs 
● les 
fichiers 
(images, 
pdfs,...)
¡ Industrialisation 
du 
code 
: 
Git 
¡ Expérience 
du 
déploiement 
continu 
(Capistrano) 
¡ Des 
compétences 
DevOps
¡ C’est 
un 
mouvement 
¡ Réduire 
les 
frictions 
entre 
§ Les 
devs 
§ Les 
ops 
(aka 
admin 
sys 
ou 
barbus) 
¡ P...
● Offres 
de 
service 
● API 
● Instances 
proposées 
● … 
et 
envie 
de 
s’amuser 
!
¡ Démarrer 
une 
instance 
EC2 
chez 
Amazon 
est 
très 
facile, 
on 
choisi 
les 
caractéristiques 
de 
la 
machine 
et ...
¡ Facile 
de 
se 
noyer 
et 
de 
se 
perdre 
dans 
les 
offres 
: 
§ Se 
faire 
accompagner 
par 
quelqu’un 
qui 
connai...
¡ Logiciel 
qui 
permet 
de 
gérer 
les 
déploiements 
système 
et 
applicatif 
¡ Historiquement 
: 
scripts 
Bash 
et 
...
¡ Précédentes 
expériences 
sur 
des 
stacks 
plus 
petites 
dans 
l’équipe 
¡ Expérience 
significative 
de 
Nicolas 
S...
¡ Pour 
démarrer 
: 
utiliser 
Foreman 
directement 
¡ Attention 
: 
configuration 
de 
type 
hiera 
(fichiers 
YAML 
fo...
¡ Complexité 
avec 
l'arbre 
de 
dépendances. 
¡ Il 
n'est 
pas 
rare 
de 
se 
poser 
la 
question: 
cette 
action 
doit...
¡ Puppet 
compile 
l'ensemble 
des 
recettes, 
réalise 
un 
arbre 
de 
dépendances 
et 
joue 
les 
modifications 
à 
fair...
¡ Tutoriaux 
de 
la 
communauté 
et 
la 
documentation 
fournie 
par 
AWS 
faisait 
uniquement 
mention 
de 
Chef 
(même ...
¡ Pas 
de 
« 
, 
» 
! 
( 
ça 
le 
fait 
hein 
! 
)
¡ Au 
début 
: 
images 
de 
Base 
(AMI) 
des 
distributions 
linux 
¡ Maintenant 
: 
Packer.io 
pour 
construire 
des 
i...
¡ Un 
tableau 
de 
variable 
pour 
: 
§ Créer 
les 
Vhost 
Nginx 
§ Cloner 
le 
projet, 
exécuter 
un 
composer 
instal...
¡ A 
remonter 
de 
la 
prod 
tous 
les 
jours 
: 
§ 10 
bases 
de 
donnée 
MySQL 
§ 5 
Bases 
MongoDB 
§ 1 
Dump 
Redi...
¡ Pas 
de 
solutions 
idéales 
pour 
l’instant 
¡ Warmup 
avec 
un 
disque 
dur 
(si, 
si) 
¡ Rsync
¡ Permet 
de 
faire 
des 
tests 
unitaires 
et 
fonctionnel 
sur 
les 
recettes 
¡ Compatible 
avec 
beaucoup 
de 
provi...
¡ Faire 
le 
moins 
de 
choses 
à 
la 
main 
¡ Gérer 
son 
parc 
¡ Ne 
pas 
être 
devops 
dépendant
¡ Très 
bonne 
documentation 
¡ Disponibilité 
et 
temps 
de 
réponses 
¡ SDK 
fourni 
pour 
PHP 
: 
se 
base 
sur 
Guz...
¡ Beaucoup 
de 
documentation 
à 
parcourir 
¡ Nécessaire 
de 
savoir 
précisément 
ce 
que 
l'on 
souhaite 
faire 
pour...
¡ Investissement 
lourd 
au 
début 
¡ Se 
mette 
en 
mode 
projet 
avec 
une 
équipe 
dédiée 
¡ Travailler 
en 
agile 
...
¡ Finir 
à 
100% 
! 
¡ Gérer 
le 
fichier 
de 
config 
pour 
les 
développeurs 
¡ Faire 
des 
projections 
budgétaires
@sangele 
@nsilberman
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)
Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)
Prochain SlideShare
Chargement dans…5
×

Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)

1 479 vues

Publié le

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.

Publié dans : Internet
0 commentaire
6 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
1 479
Sur SlideShare
0
Issues des intégrations
0
Intégrations
15
Actions
Partages
0
Téléchargements
27
Commentaires
0
J’aime
6
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)

  1. 1. et un peu de Chef aussi... Forum PHP 2014
  2. 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. 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. 4. ¡ « 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… »
  5. 5. ¡ Les postes de dev : standalone ou avec serveur de dev ¡ La recette / demo / staging ¡ La preprod ¡ La prod
  6. 6. L’Express en 2005: ¡ 1 application ¡ 1 base de données
  7. 7. L’Express en 2014 : ¡ 6 applications PHP ¡ 15 bdd métiers sous MySQL + mongoDB + SQL Server ¡ Redis ¡ RabbitMQ
  8. 8. ● Reproduire un bout : trop de dépendances ● Le faire à la main : long et toujours quelque chose qui manque
  9. 9. ● Espérer que ça marche en prod...
  10. 10. ● le middleware ● les applicatifs ● les BDDs ● les fichiers (images, pdfs,...)
  11. 11. ¡ Industrialisation du code : Git ¡ Expérience du déploiement continu (Capistrano) ¡ Des compétences DevOps
  12. 12. ¡ 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
  13. 13. ● Offres de service ● API ● Instances proposées ● … et envie de s’amuser !
  14. 14. ¡ 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
  15. 15. ¡ 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
  16. 16. ¡ 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 !
  17. 17. ¡ 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.
  18. 18. ¡ 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é.
  19. 19. ¡ 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
  20. 20. ¡ 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é.
  21. 21. ¡ 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
  22. 22. ¡ Pas de « , » ! ( ça le fait hein ! )
  23. 23. ¡ 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,…
  24. 24. ¡ 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, …
  25. 25. ¡ 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
  26. 26. ¡ Pas de solutions idéales pour l’instant ¡ Warmup avec un disque dur (si, si) ¡ Rsync
  27. 27. ¡ 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"
  28. 28. ¡ Faire le moins de choses à la main ¡ Gérer son parc ¡ Ne pas être devops dépendant
  29. 29. ¡ 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
  30. 30. ¡ Beaucoup de documentation à parcourir ¡ Nécessaire de savoir précisément ce que l'on souhaite faire pour ne pas prendre une mauvaise direction
  31. 31. ¡ 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 !
  32. 32. ¡ Finir à 100% ! ¡ Gérer le fichier de config pour les développeurs ¡ Faire des projections budgétaires
  33. 33. @sangele @nsilberman

×