SlideShare une entreprise Scribd logo
DevOps@Kelkoo




Alain 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 »                                                       3



80M appels APIs / mois                 220 personnes en Europe
Pic à 1600 req/S
                                       dont   90 informaticiens à Grenoble
                                                         5000 marchands


10M 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 d'automatisation

 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 composants
10 serveurs
10+ DB
1 composant




         TGZ + fichiers clefs valeurs
                                  Solution YAHOO
                                                   Solution maison
Conception du projet                                                         7


  Idées                                           Besoins

Outillage 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                                           8




CLONER   CONFIGURER   DEVELOPPER    PACKAGER   CONFIGURER   DEPLOYER




Infrastructure / 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écrit




COMMUNAUTE   ++          +   +++
OUTILLAGE
EXTENSIONS   ++          -    +
SIMPLICITE    +          -    -
CLONER / CONFIGURER                                                                                       10



                                                            CLONER   CONFIGURER   DEVELOPPER   PACKAGER   CONFIGURER   DEPLOYER


                    Drivers
  OS: kickstart                    Config
                     Linux
                                   Réseau
 Partitions
                                  Config                  Repos SSH
Repos 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   DEPLOYER




Gé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.0
Categories   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 configuration
Lister 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                                                                   16


Ré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



                     SVN
DEV
          2
                     4               5
              3            MVN
      1                                           3
                         JENKINS
                                         SERVER
OPS                                               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 équipes

Reproductible, scalable, maitrisé                                Backlog et support communs
Mê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                                                                22




Construire 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:                                                     23
Les outils pour construire sa solution

          Configuration
          Management                        Orchestration
                     Puppet
          CFEngine

                               Salt
   Chef
                              Ansible     Capistrano
                                                 Fabric
                                      RunDeck
                                       Glu
                                          Control Tier

             Func     mCollective


                     Command FW
24




MERCI……



                  To make error is human. To
                     propagate error to all
                  server in automatic way is
  @DEVOPS_BORAT
                           #devops.
Bonus                                                     25



CHOIX
• Utilisation des rôles sur une plateforme complexe
• Approfondir évolution DevOps versus SCRUM chez Kelkoo
Configuration puppet                                             26


class 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                                                                         28


ETAPES->    CLONAGE     OS CONFIG.    DEV.       PACKAGING   APP CONFIG.   DEPLOIEMENT
            OS
            Kickstarts  Classes
                                     Artefacts   RPMs        RPM de
ARTEFACTS   Classes     Puppets DNS,                                       RPMs
                                     Maven       REPOS YUM   Déploiement
            puppet DNS, LDAP, etc
            LDAP, etc
                                                 Plugin
                                                 Maven
            Cobbler     Puppet        Maven                  Puppet        Puppet
OUTILS                                           maison
            Puppet      Kermit                               Gepetto       Punch
                                                 YUM
                                                 Jenkins
            INFRA       INFRA                                              DEV
                                      DEV                    DEV
            SA          SA                       DEV                       SA
ACTEURS                               SA                     SA
            DEV         DEV                      SA                        OPS
                                                             OPS
            OPS         OPS
SUPPORT                              COMMUNAUTE PACK/CONF
Différents modèles
Responsabilités

               Embedded SA       Embedded          Embedded       Transversal SA      Ops contact     No integration
                                   OPS              OPS + SA
SCRUM          SA part of the   Ops part of the    Both part of    SA supporting      Dedicated OPS
                  SCRUM            SCRUM             SCRUM            SCRUM              contact

Release             SA               OPS             Various          Various          Ops contact         OPS

L1 / L2 /L3        L1 OPS         L1/L2 OPS       L1/L2 OPS+SA         L1 OPS          L1/L2 OPS      L1 OPS/SCRUM
support           L2/L3 SA        L3 SCRUM        L3 SA+SCRUM     L2/L3 SA/SCRUM       L3 SCRUM        L2/L3 SCRUM

Changes             SA               OPS            OPS / SA          SA / OPS            OPS              OPS

Monitoring      SA Producing      SA/SCRUM        OPS/SA/SCRUM       SA/SCRUM             OPS
                   plugins        Producing         Producing     Producing plugins     /SCRUM
                                    plugins          plugins
Problem mgt

Capacity mgt

Contenu connexe

Tendances

App-V : Fonctions avancées de séquencage des applications
App-V : Fonctions avancées de séquencage des applicationsApp-V : Fonctions avancées de séquencage des applications
App-V : Fonctions avancées de séquencage des applications
Microsoft Technet France
 
System Center 2012 | SCOM : Déploiement et migration Operations Manager 2012
System Center 2012 | SCOM :  Déploiement et migration Operations Manager 2012System Center 2012 | SCOM :  Déploiement et migration Operations Manager 2012
System Center 2012 | SCOM : Déploiement et migration Operations Manager 2012
Microsoft Technet France
 
Scrum et forfait
Scrum et forfaitScrum et forfait
Scrum et forfait
Ippon
 
Comment combiner les AlwaysOn Availability Groups avec la Réplication dans SQ...
Comment combiner les AlwaysOn Availability Groups avec la Réplication dans SQ...Comment combiner les AlwaysOn Availability Groups avec la Réplication dans SQ...
Comment combiner les AlwaysOn Availability Groups avec la Réplication dans SQ...
Microsoft Technet France
 
Comment identifier la cause réelle des problèmes impactant un cluster de basc...
Comment identifier la cause réelle des problèmes impactant un cluster de basc...Comment identifier la cause réelle des problèmes impactant un cluster de basc...
Comment identifier la cause réelle des problèmes impactant un cluster de basc...
Microsoft Technet France
 
Scom et orchestrator main dans la main (ser214)
Scom et orchestrator main dans la main (ser214)Scom et orchestrator main dans la main (ser214)
Scom et orchestrator main dans la main (ser214)Jean-François BERENGUER
 
Java dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de JonasJava dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de Jonas
Microsoft
 
Nouveautes sql server 2012
Nouveautes sql server 2012Nouveautes sql server 2012
Nouveautes sql server 2012
PROJECT SI
 
Linkedin Open Portal 0220102
Linkedin Open Portal 0220102Linkedin Open Portal 0220102
Linkedin Open Portal 0220102
OpenPortal
 
Always On - Les solutions de haute disponibilité avec SQL Server 2012
Always On - Les solutions de haute disponibilité avec SQL Server 2012Always On - Les solutions de haute disponibilité avec SQL Server 2012
Always On - Les solutions de haute disponibilité avec SQL Server 2012
Microsoft Technet France
 
1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...
1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...
1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...
Microsoft
 

Tendances (11)

App-V : Fonctions avancées de séquencage des applications
App-V : Fonctions avancées de séquencage des applicationsApp-V : Fonctions avancées de séquencage des applications
App-V : Fonctions avancées de séquencage des applications
 
System Center 2012 | SCOM : Déploiement et migration Operations Manager 2012
System Center 2012 | SCOM :  Déploiement et migration Operations Manager 2012System Center 2012 | SCOM :  Déploiement et migration Operations Manager 2012
System Center 2012 | SCOM : Déploiement et migration Operations Manager 2012
 
Scrum et forfait
Scrum et forfaitScrum et forfait
Scrum et forfait
 
Comment combiner les AlwaysOn Availability Groups avec la Réplication dans SQ...
Comment combiner les AlwaysOn Availability Groups avec la Réplication dans SQ...Comment combiner les AlwaysOn Availability Groups avec la Réplication dans SQ...
Comment combiner les AlwaysOn Availability Groups avec la Réplication dans SQ...
 
Comment identifier la cause réelle des problèmes impactant un cluster de basc...
Comment identifier la cause réelle des problèmes impactant un cluster de basc...Comment identifier la cause réelle des problèmes impactant un cluster de basc...
Comment identifier la cause réelle des problèmes impactant un cluster de basc...
 
Scom et orchestrator main dans la main (ser214)
Scom et orchestrator main dans la main (ser214)Scom et orchestrator main dans la main (ser214)
Scom et orchestrator main dans la main (ser214)
 
Java dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de JonasJava dans Windows Azure: l'exemple de Jonas
Java dans Windows Azure: l'exemple de Jonas
 
Nouveautes sql server 2012
Nouveautes sql server 2012Nouveautes sql server 2012
Nouveautes sql server 2012
 
Linkedin Open Portal 0220102
Linkedin Open Portal 0220102Linkedin Open Portal 0220102
Linkedin Open Portal 0220102
 
Always On - Les solutions de haute disponibilité avec SQL Server 2012
Always On - Les solutions de haute disponibilité avec SQL Server 2012Always On - Les solutions de haute disponibilité avec SQL Server 2012
Always On - Les solutions de haute disponibilité avec SQL Server 2012
 
1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...
1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...
1h chrono pour créer votre infrastructure virtuelle avec l’interface Visual C...
 

En vedette

Joe Mobile sur le Cloud - DevoxxFR 2013
Joe Mobile sur le Cloud - DevoxxFR 2013Joe Mobile sur le Cloud - DevoxxFR 2013
Joe Mobile sur le Cloud - DevoxxFR 2013
Cyrille Le Clerc
 
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Fabien Arcellier
 
REX déploiement Ansible et Utilisation avec Docker
REX déploiement Ansible et Utilisation avec DockerREX déploiement Ansible et Utilisation avec Docker
REX déploiement Ansible et Utilisation avec Docker
Yannig Perre
 
DEVOPS - La synthèse
DEVOPS - La synthèseDEVOPS - La synthèse
DEVOPS - La synthèse
COMPETENSIS
 
Introduction à la démarche Devops
Introduction à la démarche DevopsIntroduction à la démarche Devops
Introduction à la démarche Devops
Romain Chalumeau
 
Un code maintenable avec le principe de responsabilite unique
Un code maintenable avec le principe de responsabilite uniqueUn code maintenable avec le principe de responsabilite unique
Un code maintenable avec le principe de responsabilite unique
Nicolas Capponi
 
Agile Deployments with Puppet
Agile Deployments with PuppetAgile Deployments with Puppet
Agile Deployments with Puppet
Puppet
 
Deploiement continu AgileFfrance 2011
Deploiement continu AgileFfrance 2011Deploiement continu AgileFfrance 2011
Deploiement continu AgileFfrance 2011
Claude Falguiere
 
Alphorm.com Formation MySQL Administration(1Z0-883)
Alphorm.com   Formation MySQL Administration(1Z0-883)Alphorm.com   Formation MySQL Administration(1Z0-883)
Alphorm.com Formation MySQL Administration(1Z0-883)
Alphorm
 

En vedette (10)

Joe Mobile sur le Cloud - DevoxxFR 2013
Joe Mobile sur le Cloud - DevoxxFR 2013Joe Mobile sur le Cloud - DevoxxFR 2013
Joe Mobile sur le Cloud - DevoxxFR 2013
 
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
Infra as Code, choisissez vous la pilule rouge ou la pilule bleue - Devoxx 2016
 
REX déploiement Ansible et Utilisation avec Docker
REX déploiement Ansible et Utilisation avec DockerREX déploiement Ansible et Utilisation avec Docker
REX déploiement Ansible et Utilisation avec Docker
 
DEVOPS - La synthèse
DEVOPS - La synthèseDEVOPS - La synthèse
DEVOPS - La synthèse
 
Introduction à la démarche Devops
Introduction à la démarche DevopsIntroduction à la démarche Devops
Introduction à la démarche Devops
 
Un code maintenable avec le principe de responsabilite unique
Un code maintenable avec le principe de responsabilite uniqueUn code maintenable avec le principe de responsabilite unique
Un code maintenable avec le principe de responsabilite unique
 
Agile Deployments with Puppet
Agile Deployments with PuppetAgile Deployments with Puppet
Agile Deployments with Puppet
 
Deploiement continu AgileFfrance 2011
Deploiement continu AgileFfrance 2011Deploiement continu AgileFfrance 2011
Deploiement continu AgileFfrance 2011
 
DevOps
DevOpsDevOps
DevOps
 
Alphorm.com Formation MySQL Administration(1Z0-883)
Alphorm.com   Formation MySQL Administration(1Z0-883)Alphorm.com   Formation MySQL Administration(1Z0-883)
Alphorm.com Formation MySQL Administration(1Z0-883)
 

Similaire à Devops@Kelkoo - Agile Grenoble 2012

Dev ops@kelkoo
Dev ops@kelkoo Dev ops@kelkoo
Dev ops@kelkoo
Alain Delafosse
 
Architecture microservices avec docker
Architecture microservices avec dockerArchitecture microservices avec docker
Architecture microservices avec docker
gcatt
 
GlassFish ESB Ch'ti JUG
GlassFish ESB Ch'ti JUGGlassFish ESB Ch'ti JUG
GlassFish ESB Ch'ti JUGCh'ti JUG
 
Rex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - EnsimRex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - Ensim
Laurent Broudoux
 
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
Nicolas Silberman
 
DevOps - from idea to production
DevOps - from idea to productionDevOps - from idea to production
DevOps - from idea to production
Habib MAALEM
 
System Center 2012 | Administrez vos clouds privé et public Windows Azure ave...
System Center 2012 | Administrez vos clouds privé et public Windows Azure ave...System Center 2012 | Administrez vos clouds privé et public Windows Azure ave...
System Center 2012 | Administrez vos clouds privé et public Windows Azure ave...
Microsoft Technet France
 
Webinar offre entreprise
Webinar offre entrepriseWebinar offre entreprise
Webinar offre entreprise
Michael Harlaut
 
Biz talk summit devops - monitoring
Biz talk summit   devops - monitoringBiz talk summit   devops - monitoring
Biz talk summit devops - monitoring
Radoine Douhou
 
Gouvernance des données avec SQL Server et ETL en Self-Service avec Data Expl...
Gouvernance des données avec SQL Server et ETL en Self-Service avec Data Expl...Gouvernance des données avec SQL Server et ETL en Self-Service avec Data Expl...
Gouvernance des données avec SQL Server et ETL en Self-Service avec Data Expl...
Microsoft Décideurs IT
 
Keynote DevOps - Microsoft DevOps Day 2014 in Paris
Keynote DevOps - Microsoft DevOps Day 2014 in ParisKeynote DevOps - Microsoft DevOps Day 2014 in Paris
Keynote DevOps - Microsoft DevOps Day 2014 in ParisJason De Oliveira
 
Du catalogue de service à l'automatisation des processus (ser207)
Du catalogue de service à l'automatisation des processus (ser207)Du catalogue de service à l'automatisation des processus (ser207)
Du catalogue de service à l'automatisation des processus (ser207)Jean-François BERENGUER
 
Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOps
Microsoft
 
DevOps : mission [im]possible ?
DevOps : mission [im]possible ?DevOps : mission [im]possible ?
DevOps : mission [im]possible ?
rfelden
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Jasmine Conseil
 
Présentation DEVOPS_PO.pptx
Présentation DEVOPS_PO.pptxPrésentation DEVOPS_PO.pptx
Présentation DEVOPS_PO.pptx
ZALIMAZA
 
Road map to DevOps engineering - Elie Sirius
Road map to DevOps engineering -  Elie SiriusRoad map to DevOps engineering -  Elie Sirius
Road map to DevOps engineering - Elie Sirius
GDG Bujumbura
 
Vue d'ensemble et retour d'expérience déploiement SCCM 2012
Vue d'ensemble et retour d'expérience déploiement SCCM 2012Vue d'ensemble et retour d'expérience déploiement SCCM 2012
Vue d'ensemble et retour d'expérience déploiement SCCM 2012
Microsoft Technet France
 

Similaire à Devops@Kelkoo - Agile Grenoble 2012 (20)

Dev ops@kelkoo
Dev ops@kelkoo Dev ops@kelkoo
Dev ops@kelkoo
 
Architecture microservices avec docker
Architecture microservices avec dockerArchitecture microservices avec docker
Architecture microservices avec docker
 
GlassFish ESB Ch'ti JUG
GlassFish ESB Ch'ti JUGGlassFish ESB Ch'ti JUG
GlassFish ESB Ch'ti JUG
 
Sonar-Hodson-Maven
Sonar-Hodson-MavenSonar-Hodson-Maven
Sonar-Hodson-Maven
 
Rex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - EnsimRex Software Factories 20140117 - Ensim
Rex Software Factories 20140117 - Ensim
 
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
 
DevOps - from idea to production
DevOps - from idea to productionDevOps - from idea to production
DevOps - from idea to production
 
System Center 2012 | Administrez vos clouds privé et public Windows Azure ave...
System Center 2012 | Administrez vos clouds privé et public Windows Azure ave...System Center 2012 | Administrez vos clouds privé et public Windows Azure ave...
System Center 2012 | Administrez vos clouds privé et public Windows Azure ave...
 
Webinar offre entreprise
Webinar offre entrepriseWebinar offre entreprise
Webinar offre entreprise
 
Biz talk summit devops - monitoring
Biz talk summit   devops - monitoringBiz talk summit   devops - monitoring
Biz talk summit devops - monitoring
 
Gouvernance des données avec SQL Server et ETL en Self-Service avec Data Expl...
Gouvernance des données avec SQL Server et ETL en Self-Service avec Data Expl...Gouvernance des données avec SQL Server et ETL en Self-Service avec Data Expl...
Gouvernance des données avec SQL Server et ETL en Self-Service avec Data Expl...
 
Keynote DevOps - Microsoft DevOps Day 2014 in Paris
Keynote DevOps - Microsoft DevOps Day 2014 in ParisKeynote DevOps - Microsoft DevOps Day 2014 in Paris
Keynote DevOps - Microsoft DevOps Day 2014 in Paris
 
Du catalogue de service à l'automatisation des processus (ser207)
Du catalogue de service à l'automatisation des processus (ser207)Du catalogue de service à l'automatisation des processus (ser207)
Du catalogue de service à l'automatisation des processus (ser207)
 
Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOps
 
DevOps : mission [im]possible ?
DevOps : mission [im]possible ?DevOps : mission [im]possible ?
DevOps : mission [im]possible ?
 
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et  ...
Livraison en continue avec l'outillage devops - Jenkins, Ansible, Docker et ...
 
Présentation DEVOPS_PO.pptx
Présentation DEVOPS_PO.pptxPrésentation DEVOPS_PO.pptx
Présentation DEVOPS_PO.pptx
 
Road map to DevOps engineering - Elie Sirius
Road map to DevOps engineering -  Elie SiriusRoad map to DevOps engineering -  Elie Sirius
Road map to DevOps engineering - Elie Sirius
 
Vue d'ensemble et retour d'expérience déploiement SCCM 2012
Vue d'ensemble et retour d'expérience déploiement SCCM 2012Vue d'ensemble et retour d'expérience déploiement SCCM 2012
Vue d'ensemble et retour d'expérience déploiement SCCM 2012
 
DB Forum 2012 - EM12c & DBaaS
DB Forum 2012 - EM12c & DBaaSDB Forum 2012 - EM12c & DBaaS
DB Forum 2012 - EM12c & DBaaS
 

Devops@Kelkoo - Agile Grenoble 2012

  • 1. DevOps@Kelkoo Alain Delafosse / Nicolas Capponi / Octobre 2012
  • 2. Introduction 2 = + Présentation d’une intégration Zooms techniques d’outils dans le contexte Kelkoo @AlainDelafosse @ncapponi Vous ?
  • 3. Kelkoo « Shopping Engine » 3 80M appels APIs / mois 220 personnes en Europe Pic à 1600 req/S dont 90 informaticiens à Grenoble 5000 marchands 10M UU / mois 100M offres avec un turn-over quotidien de 15% 20 000 Produits 13 Pays 300 Catégories 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 Déploiement Tests Release Changement Monitoring Gestion de problème Développement Correction Correction Détection et analyse et analyse d’incident
  • 5. DevOps 5 Accompagner le changement et gérer le risque en construisant une intense culture de collaboration et d'automatisation 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. Contexte Kelkoo 6 400 serveurs 70+ DB 200 composants 10 serveurs 10+ DB 1 composant TGZ + fichiers clefs valeurs Solution YAHOO Solution maison
  • 7. Conception du projet 7 Idées Besoins Outillage 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. Notre solution: étapes 8 CLONER CONFIGURER DEVELOPPER PACKAGER CONFIGURER DEPLOYER Infrastructure / OS Applications
  • 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écrit COMMUNAUTE ++ + +++ OUTILLAGE EXTENSIONS ++ - + SIMPLICITE + - -
  • 10. CLONER / CONFIGURER 10 CLONER CONFIGURER DEVELOPPER PACKAGER CONFIGURER DEPLOYER Drivers OS: kickstart Config Linux Réseau Partitions Config Repos SSH Repos 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. DEVELOPPER / PACKAGER 11 CLONER CONFIGURER DEVELOPPER PACKAGER CONFIGURER DEPLOYER Gé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. 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. 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. *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.0 Categories 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 réalisant l’assemblage des CLONER CONFIGURER DEVELOPPER PACKAGER CONFIGURER DEPLOYER RPM DEPLOIEMENT RPM COMPOSANT VALEURS DE CONFIG LIST Appliquer une configuration Lister 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. Zoom 4: Punch 16 Ré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. Etapes 17 SVN DEV 2 4 5 3 MVN 1 3 JENKINS SERVER OPS 4 1 2 5 PUNCH GEPPETTO 1
  • 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. Résultat 19 Nombre de releases en production par semaine Change management dashboard
  • 20. DevOps@Kelkoo 20 Industrialisation du Faciliter la communication processus de développement entre les équipes Reproductible, scalable, maitrisé Backlog et support communs Mê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. 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 22 Construire 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. Zoom 5: 23 Les 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 MERCI…… To make error is human. To propagate error to all server in automatic way is @DEVOPS_BORAT #devops.
  • 25. Bonus 25 CHOIX • Utilisation des rôles sur une plateforme complexe • Approfondir évolution DevOps versus SCRUM chez Kelkoo
  • 26. Configuration puppet 26 class 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" }
  • 28. Synthèse 28 ETAPES-> CLONAGE OS CONFIG. DEV. PACKAGING APP CONFIG. DEPLOIEMENT OS Kickstarts Classes Artefacts RPMs RPM de ARTEFACTS Classes Puppets DNS, RPMs Maven REPOS YUM Déploiement puppet DNS, LDAP, etc LDAP, etc Plugin Maven Cobbler Puppet Maven Puppet Puppet OUTILS maison Puppet Kermit Gepetto Punch YUM Jenkins INFRA INFRA DEV DEV DEV SA SA DEV SA ACTEURS SA SA DEV DEV SA OPS OPS OPS OPS SUPPORT COMMUNAUTE PACK/CONF
  • 30. Responsabilités Embedded SA Embedded Embedded Transversal SA Ops contact No integration OPS OPS + SA SCRUM SA part of the Ops part of the Both part of SA supporting Dedicated OPS SCRUM SCRUM SCRUM SCRUM contact Release SA OPS Various Various Ops contact OPS L1 / L2 /L3 L1 OPS L1/L2 OPS L1/L2 OPS+SA L1 OPS L1/L2 OPS L1 OPS/SCRUM support L2/L3 SA L3 SCRUM L3 SA+SCRUM L2/L3 SA/SCRUM L3 SCRUM L2/L3 SCRUM Changes SA OPS OPS / SA SA / OPS OPS OPS Monitoring SA Producing SA/SCRUM OPS/SA/SCRUM SA/SCRUM OPS plugins Producing Producing Producing plugins /SCRUM plugins plugins Problem mgt Capacity mgt

Notes de l'éditeur

  1. 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
  2. ADF
  3. CAMS: culture, automation, mesure, sharing
  4. CAMS: culture, automation, measure, sharingPas un role, une equipe,des outilsExtension au dela devops (lean startup -&gt; le plus vite possible cash)
  5. Parler organisation silo chez yahoo
  6. 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
  7. NCIAccroche : Voici les différentes étapes de notre solutionSéparation infrastructure/os et applications
  8. 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)
  9. 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
  10. 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
  11. NCISources: - Pom.xml : description du composant =&gt; on l’étend avec des infos de déploiements (type, rép., dépendances) - Contenu du composant =&gt; ce qui est packagé + template reconnus automatiquementRésultats: - Composant prêt à fonctionner - Composant pour installer
  12. 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 =&gt; 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.
  13. NCIMette BO Configuration=GepettoComposants + couples clé/valeurHéritage multiple : composition de rôlesParticularité : gestion des instancesBO vs fichier
  14. 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é)
  15. 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
  16. NCI
  17. ADF
  18. ADFUne relaqse plein de composants et plein de serversCe qui manque next step: blue/green ; déploiement continu ; api infrastructure
  19. 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.
  20. NCINotre vision: + subjectif Nous on pense que
  21. NCINotre vision: + subjectif Nous on pense que
  22. duo
  23. 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
  24. Meilleure solution embedded mais ressource