[email protected] - agile grenoble 2012

of 30 /30
[email protected] Alain Delafosse / Nicolas Capponi / Octobre 2012

Author: nicolas-capponi

Post on 12-Jan-2015

1.200 views

Category:

Technology


2 download

Embed Size (px)

DESCRIPTION

Presentation de la solution de déploiement logiciel Kelkoo intégrant Puppet pour favoriser une approche devops. Version actualisée pour Agile Grenoble 2012

TRANSCRIPT

  • 1. [email protected] Delafosse / Nicolas Capponi / Octobre 2012
  • 2. Introduction 2 = + Prsentation dune intgration Zooms techniques doutils dans le contexte Kelkoo @AlainDelafosse @ncapponi Vous ?
  • 3. Kelkoo Shopping Engine 380M appels APIs / mois 220 personnes en EuropePic 1600 req/S dont 90 informaticiens Grenoble 5000 marchands10M UU / mois 100M offres avec un turn-over quotidien de 15% 20 000 Produits 13 Pays 300 Catgories par pays 5000 revues
  • 4. DevOps 4 Le mouvement devops casse le mur entre les dev et les ops Agile Business Development DevOps Operations Methodologies Dploiement Tests Release Changement Monitoring Gestion de problme Dveloppement Correction Correction Dtection et analyse et analyse dincident
  • 5. DevOps 5 Accompagner le changement et grer le risque en construisant une intense culture de collaboration et dautomatisation Les 3 piliers du mouvement DEVOPS PROCESS PEOPLE Industrialisation du Faciliter la processus de dveloppement communication OUTILS entre les quipes Industrialisation dploiement et gestion Infrastructure devministration
  • 6. Contexte Kelkoo 6 400 serveurs 70+ DB 200 composants10 serveurs10+ DB1 composant TGZ + fichiers clefs valeurs Solution YAHOO Solution maison
  • 7. Conception du projet 7 Ides BesoinsOutillage du dv. au dploiement Multi -instanciation des composants BO de configuration Rutiliser outils Open Source Gn.de composants installables Automatisation Dploiements standardiss Commandes et interfaces simples Outils Open Source
  • 8. Notre solution: tapes 8CLONER CONFIGURER DEVELOPPER PACKAGER CONFIGURER DEPLOYERInfrastructure / OS Applications
  • 9. Zoom 1: Pourquoi Puppet 9 Fournit un langage pour 1 dcrire la configuration du Grer des serveur serveurs 2 Modifie le serveur pour atteindre ltat dcritCOMMUNAUTE ++ + +++OUTILLAGEEXTENSIONS ++ - +SIMPLICITE + - -
  • 10. CLONER / CONFIGURER 10 CLONER CONFIGURER DEVELOPPER PACKAGER CONFIGURER DEPLOYER Drivers OS: kickstart Config Linux Rseau Partitions Config Repos SSHRepos YUM Users SNMP Rseau Users DNS Gestion centralise des configurations systmes et modification par excution de classes Puppet Provisionning: industrialiser linstallation et la configuration initiale des serveurs
  • 11. DEVELOPPER / PACKAGER 11 CLONER CONFIGURER DEVELOPPER PACKAGER CONFIGURER DEPLOYERGnration darchetypes Gnration de deux RPMs par composant Utilisation des dpendances RPMs OS Types de Composants - Processing COMPOSANT - Webapp - Schema DB DEPLOIEMENT - Plugin monitoring - Web services
  • 12. Zoom 2: Plugin Maven RPM 12 Scripts Rpertoires Librairies Binaires POM.XML RPM COMPOSANT Valeurs par dfaut Templates Manifest Puppet RPM DEPLOIEMENT
  • 13. CONFIGURER 13 CONFIGURATION DES COMPOSANTS PAR SERVEUR CLONER CONFIGURER DEVELOPPER PACKAGER CONFIGURER DEPLOYER + Serv1.comp1.clef1=A Serv1.comp2.clef1=C Serv2.comp1.clef1=A Etc CONFIGURATION PAR ROLE Un rle regroupe et abstrait un dploiement de composants et la configuration associe Role1.clef1=A Serv1=Role1 Serv2=Role1 Etc
  • 14. *home made Zoom 3: Geppetto* 14 Monitoring nagiosTomcatIsAlive-2.1.0 webapp cle1=val1 WS platform tomcat-6.2 Tomcat cle2=val2 categories-3.0.0 reviews-1.2.0 Base cpu-1.2.0Categories cle3=val3 Reviews cle4=val4 Monitoring cle5=val5 cle1=valA Serveur 1 cle4=valB Serveur 2 Serveur 3 cle6=valC
  • 15. DEPLOYER 15 Outil en ligne de commande PUNCH ralisant lassemblage des CLONER CONFIGURER DEVELOPPER PACKAGER CONFIGURER DEPLOYER RPM DEPLOIEMENT RPM COMPOSANT VALEURS DE CONFIG LIST Appliquer une configurationLister les composants dploys APPLY RESTORE Dployer et configurer avec les donnes du BO GET Rcuprer les valeurs de config
  • 16. Zoom 4: Punch 16Rcupration configuration du serveur searchFeeder-2.1.0 searchFeederInterval=100 Installation RPM dploiement searchCleaner-1.5.2 searchCleanerMode=3 Calcul des changements Puppet : dsinstaller RPM composants Puppet : installer RPM composants
  • 17. Etapes 17 SVNDEV 2 4 5 3 MVN 1 3 JENKINS SERVEROPS 4 1 2 5 PUNCH GEPPETTO 1
  • 18. Processus: Dploiement chez Kelkoo Dveloppe, dploie, teste dans les environnements SCRUM DEV QA,DEV parfois DEV DEV DEV DEV PRODTEAM TEAM TEAM TEAM TEAM Communaut PACK/CONF (gestion collective de loutillage) Dveloppe plugins de monitoring, dploie dans tous les environnements Dploient dans tous les environnements OPS TEAM Clone et configure INFRA TEAM tous les serveurs
  • 19. Rsultat 19 Nombre de releases en production par semaine Change management dashboard
  • 20. [email protected] 20 Industrialisation du Faciliter la communication processus de dveloppement entre les quipesReproductible, scalable, maitris Backlog et support communsMme processus quel que soit la Industrialisation Pas de connaissance tribale plateforme de linfrastructure Inventaire, Visibilit Bonne gestion des configurations et du dploiement Amliorations sur gestion de linfrastructure et lorchestration
  • 21. Aller plus loin. 21 Blue/green Continous Orchestration deployment Component Deployment & Configuration LoadBalancer Infrastructure Filer Nagios OS Configuration Deployment & Change Tool Configuration Server Cloud & VM Provisionning Provisionning Private Cloud
  • 22. Vos Options 22Construire sa solution Prendre une solution du march Utilisation de paquets systmes DeployIT (Xebia labs) Nombreux outils disposition Nolio (Nolio) Grer des images de dploiement Image OS (Usharesoft) Sadapter une solution PAAS Google App Engine, Cloudbees, Heroku
  • 23. Zoom 5: 23Les outils pour construire sa solution Configuration Management Orchestration Puppet CFEngine Salt Chef Ansible Capistrano Fabric RunDeck Glu Control Tier Func mCollective Command FW
  • 24. 24MERCI To make error is human. To propagate error to all server in automatic way is @DEVOPS_BORAT #devops.
  • 25. Bonus 25CHOIX Utilisation des rles sur une plateforme complexe Approfondir volution DevOps versus SCRUM chez Kelkoo
  • 26. Configuration puppet 26class synonym_ws::synonym_ws_1_0_6 { $application_name = "synonymWS" synonym_ws_1_0_6_type { "synonymWS" : template1 => template("synonym_ws/1.0.6/docBase/WEB- INF/classes/applicationContext.xml.erb") } class instances { if $synonym_ws_instance_webapps { synonym_ws::synonym_ws_1_0_6::instance_webapps{ $synonym_ws_instance_webapps: }} if $synonym_ws_deinstall_instance_webapps { synonym_ws::synonym_ws_1_0_6:disabled::instance_webapps{ $synonym_ws_deinstall_instance_webapps: }} } include "instances"}
  • 27. Hosting models 27
  • 28. Synthse 28ETAPES-> CLONAGE OS CONFIG. DEV. PACKAGING APP CONFIG. DEPLOIEMENT OS Kickstarts Classes Artefacts RPMs RPM deARTEFACTS Classes Puppets DNS, RPMs Maven REPOS YUM Dploiement puppet DNS, LDAP, etc LDAP, etc Plugin Maven Cobbler Puppet Maven Puppet PuppetOUTILS maison Puppet Kermit Gepetto Punch YUM Jenkins INFRA INFRA DEV DEV DEV SA SA DEV SAACTEURS SA SA DEV DEV SA OPS OPS OPS OPSSUPPORT COMMUNAUTE PACK/CONF
  • 29. Diffrents modles
  • 30. Responsabilits Embedded SA Embedded Embedded Transversal SA Ops contact No integration OPS OPS + SASCRUM SA part of the Ops part of the Both part of SA supporting Dedicated OPS SCRUM SCRUM SCRUM SCRUM contactRelease SA OPS Various Various Ops contact OPSL1 / L2 /L3 L1 OPS L1/L2 OPS L1/L2 OPS+SA L1 OPS L1/L2 OPS L1 OPS/SCRUMsupport L2/L3 SA L3 SCRUM L3 SA+SCRUM L2/L3 SA/SCRUM L3 SCRUM L2/L3 SCRUMChanges SA OPS OPS / SA SA / OPS OPS OPSMonitoring SA Producing SA/SCRUM OPS/SA/SCRUM SA/SCRUM OPS plugins Producing Producing Producing plugins /SCRUM plugins pluginsProblem mgtCapacity mgt