Devops@Kelkoo - Agile Grenoble 2012
Upcoming SlideShare
Loading in...5
×
 

Devops@Kelkoo - Agile Grenoble 2012

on

  • 1,103 views

Presentation de la solution de déploiement logiciel Kelkoo intégrant Puppet pour favoriser une approche devops.

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

Statistics

Views

Total Views
1,103
Views on SlideShare
1,103
Embed Views
0

Actions

Likes
5
Downloads
31
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • ADFObjectif 2’L’objectif de cette présentation est de vous donner un retour d’expérience la manière dont Kelkoo a mis en oeuvre les outils: Cobbler, Puppet, jenkins, Maven, RPM, Gepetto (BO maison), Punch (surcouche puppet) pour simplifier la création, la configuration et le déploiement de ses applications de manière industrielle... Contenu1. Donner une vision générale sur ce que sont Kelkoo, le mouvement devops et l’impact sur l’organisation et l’outillage kelkoo.2. Faire des zooms sur quelques aspects techniques des outils mis en œuvre par kelkooContratCe que vous verrez-Le contexte DevOps @Kelkoo (a reformuler)-Présentation d’une solution globale faite maison de configuration et déploiement-Détail de certain choix structurants et d’implémentation d’outillageCe que vous ne verrez pas-Comment utiliser Puppet, Jenkins, Cobbler en pratique-Une présentation détaillée du mouvement devopsQui sommes nous-Alain-NicolasQui êtes vous (Faire monter la main a tout le monde)-Qui connait devops-Qui a déjà manipulé un outil de gestion de config style Puppet, Chef
  • ADF
  • CAMS: culture, automation, mesure, sharing
  • CAMS: culture, automation, measure, sharingPas un role, une equipe,des outilsExtension au dela devops (lean startup -> le plus vite possible cash)
  • Parler organisation silo chez yahoo
  • Attention au discours: + simpleLe but/projet ? Notre projetReprendre les bonnes idées YahooChaine du dev au déploiement: blahblahblahBO de config : blahblahblahGénération de composants installablesMais les adapter a notre besoin et les améliorer Serveurs multi instances (meme composant instancié plusieurs fois) Standardisation répertoire et user Réutiliser maximum outil open sourceDéploiement un srv en une ligne de commande: ops doivent le faire en 24/7, réinstall de serveur, raz le bol des release notes de 20 pagesLes ops déploient comme les devs quel que soit l’environnementAutomatiser /Outiller du clonage en passant par le codage jusqu’au déploiementPas d’anticipation mode d’utilisation Outiller le déploiement sans préjuger du modèle final (DEV OPS efficace et collaboratif)Infrastructure API est venu plus tard
  • NCIAccroche : Voici les différentes étapes de notre solutionSéparation infrastructure/os et applications
  • Phrase d’intro pour introduire puppetPkoi puppetOptions a l’époqueMaintenantZapper central/localNCIAccroche : Nous avons choisi Puppet pour batir notre solution, a la fois pour la partie applicative et la partie infrastructurePuppet est un outil industriel de configuration et de déploiement flexible Choix de Puppet - à l’époque (2009) - maintenantChoix de Puppet sans mode client-serveur - souplesse : possibilité de tout faire localement, sans infrastructure - rendu possible par notre approche (génération automatique de la config Puppet)
  • ADFParler provisionningVolonté d’industrialiser la gestion des confs systèmesObjectif: cloner et configurer un serveur (Vm) en une commande S’attacher plutôt à la couverture: DNS, ce que l’on veur (classe puppet sur MAXFILE), scriptable (a vérifier utilisation ?)Pas gestion des utilisateurs car annuaire LDAPApplication simple des outils Puppet+ cobbler (+ bo de config)Cobber + Boot réseau + ClonageRPM / classe puppet de création utilisateur Kelkoo
  • NCIAccroche : Pour la partie développement/packaging de notre solution, notre objectif était de construire des paquets prêts à installerChoix de Maven naturel à cause de JavaNotre solution se démarque sur 2 aspects 1) génération de squelettes de composants 2) générations de paquets prêts à installer - choix RPM + versions - beaucoup plus puissant que génération de jar/war - appli complète - embarque tout ce qu’il faut pour déployer l’appli
  • NCISources: - Pom.xml : description du composant => on l’étend avec des infos de déploiements (type, rép., dépendances) - Contenu du composant => ce qui est packagé + template reconnus automatiquementRésultats: - Composant prêt à fonctionner - Composant pour installer
  • ADFQQCHOSE en + pour se raccrocher ?Simplification du discours mots clefs ?Pbs actuelsPas assez concret – illustrer ?Configuration des applicationsConfiguration du déploiementConfiguration couvre deux aspects - fournir des valeurs aux clefs de configuration pour instancier les templates utilisés dans les composants - associer à chaque serveur sa propre configuration (quels composants / quelles valeurs pour les clefs)Pour chaque serveur => 1 fichier de configurationPour gérer la complexité, besoin de mutualiser et organiser les configurationsCréation de rôles plus ou moins abstraitsBack-Office pour faciliter la gestion des rôlesLa configuration concerne de la même façon devs et ops. Même fonctionnement, même outils.
  • NCIMette BO Configuration=GepettoComposants + couples clé/valeurHéritage multiple : composition de rôlesParticularité : gestion des instancesBO vs fichier
  • ADFDéploiement consiste a rapatrier les RPMS mais collecter les valeurs de configOn se base sur Puppet pour le déploiement mais - dans notre contexte, besoin de 2 appels pour désinstaller version N-1 puis installer version N - besoin d’un fonctionnement simpleDonc création d’un wrapper : PunchPunch = Outil d’intégration d’assemblage des différents artefacts pour aboutir au déploiement - RPMs de config - valeurs de configuration - RPMS de composants (pris en charge par puppet)1 Ligne de commande localeScripts ad-hoc par ops pour gérer opérations pré/post déploiement (arrêt du srv, mise à jour vip, multi-serveurs)LIMITATION: on ne peut pas installer deux versions d’un même composant sur un même serveur (différent du mutiinstance qui lui est autorisé)
  • NCIRemplacer clef1 par searchFeederxxxDétail des appelsPUNCH ecrit en rubyEcriture de plugins Puppet pour intégrer les étapes d’install en une transaction(exemple)Plugin généré par Maven dans le RPM de ConfigRemplacer la partie install composant manifest file Puppet par une classe ruby
  • NCI
  • ADF
  • ADFUne relaqse plein de composants et plein de serversCe qui manque next step: blue/green ; déploiement continu ; api infrastructure
  • AdfMonitoringFaciliter la communication entre dev et ops Utilisation de méthodes agiles, intercommunication).Industrialiser le processus de développement Intégration continue, déploiement continu, etc ...).Industrialiser l’infrastructureEn utilisant des outils (Puppet, Chef, Vagrant , fabric, etc ...) pour l’industrialisation de l’infrastructure.
  • NCINotre vision: + subjectif Nous on pense que
  • NCINotre vision: + subjectif Nous on pense que
  • duo
  • DUOMettre une ligne support/Maintenance de la solution sous forme de communauté (devops)Fait les outils d’abord et la communauté s’est construite ensuite
  • Meilleure solution embedded mais ressource

Devops@Kelkoo - Agile Grenoble 2012 Devops@Kelkoo - Agile Grenoble 2012 Presentation Transcript

  • DevOps@KelkooAlain Delafosse / Nicolas Capponi / Octobre 2012
  • Introduction 2 = + Présentation d’une intégration Zooms techniques d’outils dans le contexte Kelkoo @AlainDelafosse @ncapponi Vous ?
  • 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
  • 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
  • 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 »
  • Contexte Kelkoo 6 400 serveurs 70+ DB 200 composants10 serveurs10+ DB1 composant TGZ + fichiers clefs valeurs Solution YAHOO Solution maison
  • 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
  • Notre solution: étapes 8CLONER CONFIGURER DEVELOPPER PACKAGER CONFIGURER DEPLOYERInfrastructure / OS Applications
  • 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 + - -
  • 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
  • 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
  • Zoom 2: Plugin Maven RPM 12 Scripts Répertoires Librairies Binaires POM.XML RPM COMPOSANT Valeurs par défaut Templates Manifest Puppet RPM DEPLOIEMENT
  • 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…
  • *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
  • 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
  • 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
  • Etapes 17 SVNDEV 2 4 5 3 MVN 1 3 JENKINS SERVEROPS 4 1 2 5 PUNCH GEPPETTO 1
  • 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
  • Résultat 19 Nombre de releases en production par semaine Change management dashboard
  • 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
  • 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
  • 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
  • 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
  • 24MERCI…… To make error is human. To propagate error to all server in automatic way is @DEVOPS_BORAT #devops.
  • Bonus 25CHOIX• Utilisation des rôles sur une plateforme complexe• Approfondir évolution DevOps versus SCRUM chez Kelkoo
  • 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"}
  • Hosting models 27
  • 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
  • Différents modèles
  • 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