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

48
et un peu de Chef aussi... Forum PHP 2014

description

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.

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

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

et  un  peu  de  Chef  aussi...  

Forum PHP 2014

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

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  

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

¡  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

Page 4: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)
Page 5: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)

¡  «  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…  »  

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

¡  Les  postes  de  dev  :  standalone  ou  avec  serveur  de  dev  

¡  La  recette  /  demo  /  staging  

¡  La  preprod  

¡  La  prod  

Page 7: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)
Page 8: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)

L’Express  en  2005:    ¡  1  application  ¡  1  base  de  données  

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

L’Express  en  2014  :    ¡  6  applications  PHP  ¡  15  bdd  métiers  

 sous  MySQL    +  mongoDB      +  SQL  Server  

¡  Redis  ¡  RabbitMQ  

Page 10: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)
Page 11: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)

●  Reproduire  un  bout  :  trop  de  dépendances    

●  Le  faire  à  la  main  :  long  et  toujours  quelque  chose  qui  manque  

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

●  Espérer  que  ça  marche  en  prod...  

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

●  le  middleware  

●  les  applicatifs    

●  les  BDDs    

●  les  fichiers  (images,  pdfs,...)  

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

¡  Industrialisation  du  code  :  Git    

¡  Expérience  du  déploiement  continu  (Capistrano)  

¡  Des  compétences  DevOps  

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

¡  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

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

●  Offres  de  service  

●  API    

●  Instances  proposées    ●  …    et  envie  de  s’amuser  !  

Page 17: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)
Page 18: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)

¡  Démarrer  une  instance  EC2  chez  Amazon  est  très  facile,  on  choisit  les  caractéristiques  de  la  machine  et  c'est  parti    

¡  Démarrer  une  stack  complète  est  également  assez  simple  avec  CloudFormation    

¡  On  peut  par  exemple  demander  via  l'API  d'Amazon:  §  Créer  un  serveur  MySQL  Master/Slave  §  Démarrer  une  instance  EC2  et  lui  communiquer  le  EndPoint  MySQL  afin  qu'il  configure  ses  applications  en  fonction    

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

¡  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    

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

¡  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  !  

Page 21: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)
Page 22: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)

¡  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.  

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

¡  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é.  

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

¡  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  

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

¡  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é.  

Page 26: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)
Page 27: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)
Page 28: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)
Page 29: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)

¡  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  

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

¡ Pas  de  «  ,  »  !    

(  ça  le  fait  hein  !  )  

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

¡  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,…    

Page 32: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)
Page 33: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)
Page 34: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)

¡  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,  …  

Page 35: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)
Page 36: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)
Page 37: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)
Page 38: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)

¡  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  

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

¡  Pas  de  solutions  idéales  pour  l’instant  

¡ Warmup  avec  un  disque  dur  (si,  si)  

¡  Rsync  

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

¡  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"  

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

¡  Faire  le  moins  de  choses  à  la  main  

¡  Gérer  son  parc  

¡  Ne  pas  être  devops  dépendant  

Page 42: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)
Page 43: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)
Page 44: Industrialisation des environnements de dev avec Puppet et Amazon (mais en fait avec Chef)

¡  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  

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

¡  Beaucoup  de  documentation  à  parcourir  

¡  Nécessaire  de  savoir  précisément  ce  que  l'on  souhaite  faire  pour  ne  pas  prendre  une  mauvaise  direction  

 

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

¡  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  !  

 

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

¡  Finir  à  100%  !  

¡  Gérer  le  fichier  de  config  pour  les  développeurs  

¡  Faire  des  projections  budgétaires  

 

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

@sangele    

@nsilberman