Devops@Kelkoo - Agile Grenoble 2012

1 648 vues

Publié le

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

Publié dans : Technologie
  • Soyez le premier à commenter

Devops@Kelkoo - Agile Grenoble 2012

  1. 1. DevOps@KelkooAlain Delafosse / Nicolas Capponi / Octobre 2012
  2. 2. Introduction 2 = + Présentation d’une intégration Zooms techniques d’outils dans le contexte Kelkoo @AlainDelafosse @ncapponi Vous ?
  3. 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 Catégories par pays 5000 revues
  4. 4. DevOps 4 Le mouvement devops casse le mur entre les dev et les ops Agile Business Development DevOps Operations Methodologies Déploiement Tests Release Changement Monitoring Gestion de problème Développement Correction Correction Détection et analyse et analyse d’incident
  5. 5. DevOps 5 Accompagner le changement et gérer 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 développement communication OUTILS entre les équipes Industrialisation déploiement et gestion Infrastructure « devministration »
  6. 6. Contexte Kelkoo 6 400 serveurs 70+ DB 200 composants10 serveurs10+ DB1 composant TGZ + fichiers clefs valeurs Solution YAHOO Solution maison
  7. 7. Conception du projet 7 Idées BesoinsOutillage du dév. au déploiement Multi -instanciation des composants BO de configuration Réutiliser outils Open Source Gén.de composants installables Automatisation Déploiements standardisés Commandes et interfaces simples Outils Open Source
  8. 8. Notre solution: étapes 8CLONER CONFIGURER DEVELOPPER PACKAGER CONFIGURER DEPLOYERInfrastructure / OS Applications
  9. 9. Zoom 1: Pourquoi Puppet 9 Fournit un langage pour 1 décrire la configuration du Gérer des serveur serveurs 2 Modifie le serveur pour atteindre l’état décritCOMMUNAUTE ++ + +++OUTILLAGEEXTENSIONS ++ - +SIMPLICITE + - -
  10. 10. CLONER / CONFIGURER 10 CLONER CONFIGURER DEVELOPPER PACKAGER CONFIGURER DEPLOYER Drivers OS: kickstart Config Linux Réseau Partitions Config Repos SSHRepos YUM Users SNMP Réseau Users DNS Gestion centralisée des configurations systèmes et modification par exécution de classes Puppet Provisionning: industrialiser l’installation et la configuration initiale des serveurs
  11. 11. DEVELOPPER / PACKAGER 11 CLONER CONFIGURER DEVELOPPER PACKAGER CONFIGURER DEPLOYERGénération d’archetypes Génération de deux RPMs par composant Utilisation des dépendances RPMs OS Types de Composants - Processing COMPOSANT - Webapp - Schema DB DEPLOIEMENT - Plugin monitoring - Web services
  12. 12. Zoom 2: Plugin Maven RPM 12 Scripts Répertoires Librairies Binaires POM.XML RPM COMPOSANT Valeurs par défaut Templates Manifest Puppet RPM DEPLOIEMENT
  13. 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 rôle regroupe et abstrait un déploiement de composants et la configuration associée Role1.clef1=A Serv1=Role1 Serv2=Role1 Etc…
  14. 14. *home made <Puppet Gepetto>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. 15. DEPLOYER 15 Outil en ligne de commande PUNCH réalisant l’assemblage des CLONER CONFIGURER DEVELOPPER PACKAGER CONFIGURER DEPLOYER RPM DEPLOIEMENT RPM COMPOSANT VALEURS DE CONFIG LIST Appliquer une configurationLister les composants déployés APPLY RESTORE Déployer et configurer avec les données du BO GET Récupérer les valeurs de config
  16. 16. Zoom 4: Punch 16Récupération configuration du serveur searchFeeder-2.1.0 searchFeederInterval=100 Installation RPM déploiement searchCleaner-1.5.2 searchCleanerMode=3 Calcul des changements Puppet : désinstaller RPM composants Puppet : installer RPM composants
  17. 17. Etapes 17 SVNDEV 2 4 5 3 MVN 1 3 JENKINS SERVEROPS 4 1 2 5 PUNCH GEPPETTO 1
  18. 18. Processus: Déploiement chez Kelkoo Développe, déploie, teste dans les environnements SCRUM DEV QA,DEV parfois DEV DEV DEV DEV PRODTEAM TEAM TEAM TEAM TEAM Communauté PACK/CONF (gestion collective de l’outillage) Développe plugins de monitoring, déploie dans tous les environnements Déploient dans tous les environnements OPS TEAM Clone et configure INFRA TEAM tous les serveurs
  19. 19. Résultat 19 Nombre de releases en production par semaine Change management dashboard
  20. 20. DevOps@Kelkoo 20 Industrialisation du Faciliter la communication processus de développement entre les équipesReproductible, scalable, maitrisé Backlog et support communsMême processus quel que soit la Industrialisation Pas de connaissance « tribale » plateforme de l’infrastructure Inventaire, Visibilité Bonne gestion des configurations et du déploiement Améliorations sur gestion de l’infrastructure et l’orchestration
  21. 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. 22. Vos Options 22Construire sa solution Prendre une solution du marché Utilisation de paquets systèmes DeployIT (Xebia labs) Nombreux outils à disposition Nolio (Nolio) Gérer des images de déploiement Image OS (Usharesoft) S’adapter à une solution PAAS Google App Engine, Cloudbees, Heroku
  23. 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. 24. 24MERCI…… To make error is human. To propagate error to all server in automatic way is @DEVOPS_BORAT #devops.
  25. 25. Bonus 25CHOIX• Utilisation des rôles sur une plateforme complexe• Approfondir évolution DevOps versus SCRUM chez Kelkoo
  26. 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. 27. Hosting models 27
  28. 28. Synthèse 28ETAPES-> CLONAGE OS CONFIG. DEV. PACKAGING APP CONFIG. DEPLOIEMENT OS Kickstarts Classes Artefacts RPMs RPM deARTEFACTS Classes Puppets DNS, RPMs Maven REPOS YUM Déploiement 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. 29. Différents modèles
  30. 30. Responsabilités 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

×