SlideShare une entreprise Scribd logo
1  sur  48
Télécharger pour lire hors ligne
et 
un 
peu 
de 
Chef 
aussi... 
Forum PHP 2014
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
¡ 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
¡ « 
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… 
»
¡ Les 
postes 
de 
dev 
: 
standalone 
ou 
avec 
serveur 
de 
dev 
¡ La 
recette 
/ 
demo 
/ 
staging 
¡ La 
preprod 
¡ La 
prod
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 
¡ RabbitMQ
● Reproduire 
un 
bout 
: 
trop 
de 
dépendances 
● Le 
faire 
à 
la 
main 
: 
long 
et 
toujours 
quelque 
chose 
qui 
manque
● 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) 
¡ Pour 
une 
belle 
phrase 
commune 
: 
« 
travailler 
ensemble 
pour 
produire 
de 
la 
valeur 
pour 
l'entreprise 
» 
sources wikipedia
● 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 
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
¡ 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
¡ 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 
!
¡ 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.
¡ 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é.
¡ 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
¡ 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é.
¡ 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
¡ Pas 
de 
« 
, 
» 
! 
( 
ça 
le 
fait 
hein 
! 
)
¡ 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,…
¡ 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, 
…
¡ 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
¡ 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 
provisionner 
(Puppet, 
Chef), 
bootstrapper 
(Amazon 
EC2). 
¡ Concept 
de 
"Infrastructure 
as 
Code"
¡ 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 
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
¡ Beaucoup 
de 
documentation 
à 
parcourir 
¡ Nécessaire 
de 
savoir 
précisément 
ce 
que 
l'on 
souhaite 
faire 
pour 
ne 
pas 
prendre 
une 
mauvaise 
direction
¡ 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 
!
¡ Finir 
à 
100% 
! 
¡ Gérer 
le 
fichier 
de 
config 
pour 
les 
développeurs 
¡ Faire 
des 
projections 
budgétaires
@sangele 
@nsilberman

Contenu connexe

Tendances

Meetup WordPress Lyon #3 : Bien organiser son code dans WordPress.
Meetup WordPress Lyon #3 : Bien organiser son code dans WordPress.Meetup WordPress Lyon #3 : Bien organiser son code dans WordPress.
Meetup WordPress Lyon #3 : Bien organiser son code dans WordPress.wplyon
 
Présentation de nodejs
Présentation de nodejsPrésentation de nodejs
Présentation de nodejs13p
 
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013Julien Jakubowski
 
La migration continue vers Symfony
La migration continue vers SymfonyLa migration continue vers Symfony
La migration continue vers SymfonyFrancois Zaninotto
 
ça marchait pourtant en dev
ça marchait pourtant en devça marchait pourtant en dev
ça marchait pourtant en devOlivier Doucet
 
Frameworks : A history of violence
Frameworks : A history of violenceFrameworks : A history of violence
Frameworks : A history of violenceFrancois Zaninotto
 
De l'artisanat aux bases de l'industrialisation
De l'artisanat aux bases de l'industrialisationDe l'artisanat aux bases de l'industrialisation
De l'artisanat aux bases de l'industrialisationAgnès Haasser
 
Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13Aurelien Navarre
 
Wordcamp paris-2016 : Comment fonctionnent le projet et la communauté open so...
Wordcamp paris-2016 : Comment fonctionnent le projet et la communauté open so...Wordcamp paris-2016 : Comment fonctionnent le projet et la communauté open so...
Wordcamp paris-2016 : Comment fonctionnent le projet et la communauté open so...Chipway
 
TDD for DevOps with Chef
TDD for DevOps with ChefTDD for DevOps with Chef
TDD for DevOps with ChefOlivier BAZOUD
 
Breizhjug spring batch 2011
Breizhjug spring batch 2011Breizhjug spring batch 2011
Breizhjug spring batch 2011Olivier BAZOUD
 
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007Eric D.
 
Des principes de la démarche DevOps à sa mise en oeuvre
Des principes de la démarche DevOps à sa mise en oeuvreDes principes de la démarche DevOps à sa mise en oeuvre
Des principes de la démarche DevOps à sa mise en oeuvreStephane Manciot
 
PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005Eric D.
 
Pourquoi vous ne pouvez pas tester votre code
Pourquoi vous ne pouvez pas tester votre codePourquoi vous ne pouvez pas tester votre code
Pourquoi vous ne pouvez pas tester votre codeRémi Lesieur
 
Gérer son environnement de développement avec Docker
Gérer son environnement de développement avec DockerGérer son environnement de développement avec Docker
Gérer son environnement de développement avec DockerJulien Dubois
 
Synchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplementSynchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplementgplanchat
 
[Webinar] Techniques avancées de création de workflow - FR
[Webinar] Techniques avancées de création de workflow - FR[Webinar] Techniques avancées de création de workflow - FR
[Webinar] Techniques avancées de création de workflow - FRNuxeo
 

Tendances (20)

Meetup WordPress Lyon #3 : Bien organiser son code dans WordPress.
Meetup WordPress Lyon #3 : Bien organiser son code dans WordPress.Meetup WordPress Lyon #3 : Bien organiser son code dans WordPress.
Meetup WordPress Lyon #3 : Bien organiser son code dans WordPress.
 
Présentation de nodejs
Présentation de nodejsPrésentation de nodejs
Présentation de nodejs
 
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
Du JavaScript propre ? Challenge accepted ! @Devoxx France 2013
 
La migration continue vers Symfony
La migration continue vers SymfonyLa migration continue vers Symfony
La migration continue vers Symfony
 
ça marchait pourtant en dev
ça marchait pourtant en devça marchait pourtant en dev
ça marchait pourtant en dev
 
Frameworks : A history of violence
Frameworks : A history of violenceFrameworks : A history of violence
Frameworks : A history of violence
 
De l'artisanat aux bases de l'industrialisation
De l'artisanat aux bases de l'industrialisationDe l'artisanat aux bases de l'industrialisation
De l'artisanat aux bases de l'industrialisation
 
Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13Industrialiser la gestion des fichiers multimedia #dcparis13
Industrialiser la gestion des fichiers multimedia #dcparis13
 
Wordcamp paris-2016 : Comment fonctionnent le projet et la communauté open so...
Wordcamp paris-2016 : Comment fonctionnent le projet et la communauté open so...Wordcamp paris-2016 : Comment fonctionnent le projet et la communauté open so...
Wordcamp paris-2016 : Comment fonctionnent le projet et la communauté open so...
 
Node.js
Node.jsNode.js
Node.js
 
TDD for DevOps with Chef
TDD for DevOps with ChefTDD for DevOps with Chef
TDD for DevOps with Chef
 
Breizhjug spring batch 2011
Breizhjug spring batch 2011Breizhjug spring batch 2011
Breizhjug spring batch 2011
 
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007Utiliser pleinement le navigateur et les nouveaux clients web  - AFUP 2007
Utiliser pleinement le navigateur et les nouveaux clients web - AFUP 2007
 
Des principes de la démarche DevOps à sa mise en oeuvre
Des principes de la démarche DevOps à sa mise en oeuvreDes principes de la démarche DevOps à sa mise en oeuvre
Des principes de la démarche DevOps à sa mise en oeuvre
 
PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005PHP et Performances - AFUP 2005
PHP et Performances - AFUP 2005
 
Spring Batch Avance
Spring Batch AvanceSpring Batch Avance
Spring Batch Avance
 
Pourquoi vous ne pouvez pas tester votre code
Pourquoi vous ne pouvez pas tester votre codePourquoi vous ne pouvez pas tester votre code
Pourquoi vous ne pouvez pas tester votre code
 
Gérer son environnement de développement avec Docker
Gérer son environnement de développement avec DockerGérer son environnement de développement avec Docker
Gérer son environnement de développement avec Docker
 
Synchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplementSynchroniser ses applications (plus) simplement
Synchroniser ses applications (plus) simplement
 
[Webinar] Techniques avancées de création de workflow - FR
[Webinar] Techniques avancées de création de workflow - FR[Webinar] Techniques avancées de création de workflow - FR
[Webinar] Techniques avancées de création de workflow - FR
 

En vedette

Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014
Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014
Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014Puppet
 
rêve de titi
rêve de titirêve de titi
rêve de titilaure5555
 
Internet a ses debuts Un atelier de la CCI de Melun en 1999
Internet a ses debuts Un atelier de la CCI de Melun en 1999Internet a ses debuts Un atelier de la CCI de Melun en 1999
Internet a ses debuts Un atelier de la CCI de Melun en 1999AXIZ eBusiness
 
A la découverte des bibliothèques numériques
A la découverte des bibliothèques numériquesA la découverte des bibliothèques numériques
A la découverte des bibliothèques numériquesFleury Christine
 
Présentation.Mpeg 7
Présentation.Mpeg 7Présentation.Mpeg 7
Présentation.Mpeg 7isabelle24
 
estructura de una computadora - USIL
estructura de una computadora - USILestructura de una computadora - USIL
estructura de una computadora - USILhielo_ruiz
 
Beauté de l'Antarctique
Beauté de l'AntarctiqueBeauté de l'Antarctique
Beauté de l'AntarctiqueLavennder M
 
L'édition
L'éditionL'édition
L'éditionchristho
 
Competitic L emailing est il toujours aussi efficace
Competitic   L emailing est il toujours aussi efficaceCompetitic   L emailing est il toujours aussi efficace
Competitic L emailing est il toujours aussi efficaceCOMPETITIC
 
William gomez flores
William gomez floresWilliam gomez flores
William gomez floresJezreelRivera
 
Ética Profesional Maryori Castro Ramírez
Ética Profesional Maryori Castro RamírezÉtica Profesional Maryori Castro Ramírez
Ética Profesional Maryori Castro RamírezMaryoricastro
 
Class description
Class descriptionClass description
Class descriptionzoestrauss
 
Competitic Dématérialisation des marchés publics - numerique en entreprise
Competitic Dématérialisation des marchés publics - numerique en entrepriseCompetitic Dématérialisation des marchés publics - numerique en entreprise
Competitic Dématérialisation des marchés publics - numerique en entrepriseCOMPETITIC
 
Attention dans la cuisine!
Attention dans la cuisine!Attention dans la cuisine!
Attention dans la cuisine!cesttresjoli
 

En vedette (20)

Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014
Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014
Beaker: Automated, Cloud-Based Acceptance Testing - PuppetConf 2014
 
L'éthique biblique Nemo
L'éthique biblique NemoL'éthique biblique Nemo
L'éthique biblique Nemo
 
Vie de chat
Vie de chatVie de chat
Vie de chat
 
rêve de titi
rêve de titirêve de titi
rêve de titi
 
Internet a ses debuts Un atelier de la CCI de Melun en 1999
Internet a ses debuts Un atelier de la CCI de Melun en 1999Internet a ses debuts Un atelier de la CCI de Melun en 1999
Internet a ses debuts Un atelier de la CCI de Melun en 1999
 
A la découverte des bibliothèques numériques
A la découverte des bibliothèques numériquesA la découverte des bibliothèques numériques
A la découverte des bibliothèques numériques
 
Présentation.Mpeg 7
Présentation.Mpeg 7Présentation.Mpeg 7
Présentation.Mpeg 7
 
estructura de una computadora - USIL
estructura de una computadora - USILestructura de una computadora - USIL
estructura de una computadora - USIL
 
Beauté de l'Antarctique
Beauté de l'AntarctiqueBeauté de l'Antarctique
Beauté de l'Antarctique
 
L'édition
L'éditionL'édition
L'édition
 
Competitic L emailing est il toujours aussi efficace
Competitic   L emailing est il toujours aussi efficaceCompetitic   L emailing est il toujours aussi efficace
Competitic L emailing est il toujours aussi efficace
 
William gomez flores
William gomez floresWilliam gomez flores
William gomez flores
 
Refact
RefactRefact
Refact
 
Ética Profesional Maryori Castro Ramírez
Ética Profesional Maryori Castro RamírezÉtica Profesional Maryori Castro Ramírez
Ética Profesional Maryori Castro Ramírez
 
Ibsen
IbsenIbsen
Ibsen
 
Fuente de Poder
Fuente de PoderFuente de Poder
Fuente de Poder
 
Class description
Class descriptionClass description
Class description
 
Competitic Dématérialisation des marchés publics - numerique en entreprise
Competitic Dématérialisation des marchés publics - numerique en entrepriseCompetitic Dématérialisation des marchés publics - numerique en entreprise
Competitic Dématérialisation des marchés publics - numerique en entreprise
 
Attention dans la cuisine!
Attention dans la cuisine!Attention dans la cuisine!
Attention dans la cuisine!
 
pelicula lucy
pelicula lucy pelicula lucy
pelicula lucy
 

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

Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 
Synergies entre DEV et SEO (SeoCampus 2019)
Synergies entre DEV et SEO (SeoCampus 2019)Synergies entre DEV et SEO (SeoCampus 2019)
Synergies entre DEV et SEO (SeoCampus 2019)LVLUP
 
Synergie entre développeur et consultant SEO - Didier Sampaolo - SEOcamp'us P...
Synergie entre développeur et consultant SEO - Didier Sampaolo - SEOcamp'us P...Synergie entre développeur et consultant SEO - Didier Sampaolo - SEOcamp'us P...
Synergie entre développeur et consultant SEO - Didier Sampaolo - SEOcamp'us P...SEO CAMP
 
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Jean Gabès
 
Infrastructure agile avec Cloudformation - AWS Summit 2016
Infrastructure agile avec Cloudformation - AWS Summit 2016Infrastructure agile avec Cloudformation - AWS Summit 2016
Infrastructure agile avec Cloudformation - AWS Summit 2016Antoine Guy
 
Scalabilité et haute performance d'application PHP légacy
Scalabilité et haute performance d'application PHP légacy Scalabilité et haute performance d'application PHP légacy
Scalabilité et haute performance d'application PHP légacy Arnaud LEMAIRE
 
Un site web rapide ?
Un site web rapide ? Un site web rapide ?
Un site web rapide ? haricot
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfboulonvert
 
Un site de collectivité sur WordPress ? Méthodes et retours d'XP
Un site de collectivité sur WordPress ? Méthodes et retours d'XPUn site de collectivité sur WordPress ? Méthodes et retours d'XP
Un site de collectivité sur WordPress ? Méthodes et retours d'XPatelier111
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...ENSIBS
 
Méthodes agiles, frameworks javascript: optimisez votre time to market
Méthodes agiles, frameworks javascript: optimisez votre time to marketMéthodes agiles, frameworks javascript: optimisez votre time to market
Méthodes agiles, frameworks javascript: optimisez votre time to marketmichael_bailly
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Jérôme Petazzoni
 
Bien qu'en ligne votre site web n'est probablement pas en production
Bien qu'en ligne votre site web n'est probablement pas en productionBien qu'en ligne votre site web n'est probablement pas en production
Bien qu'en ligne votre site web n'est probablement pas en productionMarc Boivin
 
dev et admin sys : une cohabitation simplifiée
dev et admin sys : une cohabitation simplifiéedev et admin sys : une cohabitation simplifiée
dev et admin sys : une cohabitation simplifiéeNicolas Silberman
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache MavenArnaud Héritier
 
Presentation sparklane aws
Presentation sparklane awsPresentation sparklane aws
Presentation sparklane awsSparklane
 
Techdays 2014 - Le fermier azure (2ème partie)
Techdays 2014 - Le fermier azure (2ème partie)Techdays 2014 - Le fermier azure (2ème partie)
Techdays 2014 - Le fermier azure (2ème partie)Jonathan Le Guellec
 

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

Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
Synergies entre DEV et SEO (SeoCampus 2019)
Synergies entre DEV et SEO (SeoCampus 2019)Synergies entre DEV et SEO (SeoCampus 2019)
Synergies entre DEV et SEO (SeoCampus 2019)
 
Synergie entre développeur et consultant SEO - Didier Sampaolo - SEOcamp'us P...
Synergie entre développeur et consultant SEO - Didier Sampaolo - SEOcamp'us P...Synergie entre développeur et consultant SEO - Didier Sampaolo - SEOcamp'us P...
Synergie entre développeur et consultant SEO - Didier Sampaolo - SEOcamp'us P...
 
Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)Conférence Shinken à SophiaConf2012 (Jean Gabès)
Conférence Shinken à SophiaConf2012 (Jean Gabès)
 
Infrastructure agile avec Cloudformation - AWS Summit 2016
Infrastructure agile avec Cloudformation - AWS Summit 2016Infrastructure agile avec Cloudformation - AWS Summit 2016
Infrastructure agile avec Cloudformation - AWS Summit 2016
 
Scalabilité et haute performance d'application PHP légacy
Scalabilité et haute performance d'application PHP légacy Scalabilité et haute performance d'application PHP légacy
Scalabilité et haute performance d'application PHP légacy
 
Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
 
Un site web rapide ?
Un site web rapide ? Un site web rapide ?
Un site web rapide ?
 
Cours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdfCours Devops Sparks.pptx.pdf
Cours Devops Sparks.pptx.pdf
 
Un site de collectivité sur WordPress ? Méthodes et retours d'XP
Un site de collectivité sur WordPress ? Méthodes et retours d'XPUn site de collectivité sur WordPress ? Méthodes et retours d'XP
Un site de collectivité sur WordPress ? Méthodes et retours d'XP
 
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
Agile Tour Paris 2014 : Ma stack d'outils Agiles, tout un programme !, Cedric...
 
Méthodes agiles, frameworks javascript: optimisez votre time to market
Méthodes agiles, frameworks javascript: optimisez votre time to marketMéthodes agiles, frameworks javascript: optimisez votre time to market
Méthodes agiles, frameworks javascript: optimisez votre time to market
 
Docker en Production (Docker Paris)
Docker en Production (Docker Paris)Docker en Production (Docker Paris)
Docker en Production (Docker Paris)
 
Maven
MavenMaven
Maven
 
Bien qu'en ligne votre site web n'est probablement pas en production
Bien qu'en ligne votre site web n'est probablement pas en productionBien qu'en ligne votre site web n'est probablement pas en production
Bien qu'en ligne votre site web n'est probablement pas en production
 
dev et admin sys : une cohabitation simplifiée
dev et admin sys : une cohabitation simplifiéedev et admin sys : une cohabitation simplifiée
dev et admin sys : une cohabitation simplifiée
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
Presentation sparklane aws
Presentation sparklane awsPresentation sparklane aws
Presentation sparklane aws
 
Infrastructure as code drupal
Infrastructure as code drupalInfrastructure as code drupal
Infrastructure as code drupal
 
Techdays 2014 - Le fermier azure (2ème partie)
Techdays 2014 - Le fermier azure (2ème partie)Techdays 2014 - Le fermier azure (2ème partie)
Techdays 2014 - Le fermier azure (2ème partie)
 

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

  • 1. et un peu de Chef aussi... Forum PHP 2014
  • 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
  • 7.
  • 8. L’Express en 2005: ¡ 1 application ¡ 1 base de données
  • 9. L’Express en 2014 : ¡ 6 applications PHP ¡ 15 bdd métiers sous MySQL + mongoDB + SQL Server ¡ Redis ¡ RabbitMQ
  • 10.
  • 11. ● Reproduire un bout : trop de dépendances ● Le faire à la main : long et toujours quelque chose qui manque
  • 12. ● Espérer que ça marche en 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
  • 30. ¡ Pas de « , » ! ( ça le fait hein ! )
  • 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