Geneva Jug
Mardi 30 Aout 2011

Devops
Retour d’experience
Henri Gomez                                                                        Geneva JUG



•    Pre eXo                                      •    OpenSource Activiste
      »  +20 ans de développement                       »  Commiteur Apache Tomcat depuis 2001
      »  Architecte Java                                »  Co-fondateur du projet JPackage
      »  Finance/Bourse, Middle&Back                    »  Projet OpenJDK OS/X Build

•    eXo – ITOP Manager                           •    Me contacter
      »    Responsable de la production                 »    Mail: henri.gomez@gmail.com
      »    Infrastructure locale (TN/UA/VN)             »    Twitter : @hgomez
      »    Infrastructure dédiée sur OVH                »    Skype : gomezhe
      »    Infrastructure Cloud sur AWS                 »    Blog : http://blog.hgomez.net


•    eXo – QA Tech Lead
      »  QAF – QA Factory
      »  Benchmarks
      »  Performance Analysis


                                              2
Devops : une image vaut mille mots   Geneva JUG




                      3
Devops : Allo ?             Geneva JUG




Courtesy @builddoctor

                        4
Devops - Kesako                   Geneva JUG




•    Ce que n’est pas DevOps

     » Un produit (même si…)
     » Une personne ou équipe
     » Une méthodologie stricte
     » Une recette miracle




                            5
Devops - Kesako                               Geneva JUG




•    Ce qu’est DevOps

     » Un mouvement
     » Un mode agile sur l’ensemble de la chaine
     » Une nouvelle donne technique
     » Une autre approche humaine




                             6
Devops - Mouvement                           Geneva JUG




•    Initié fin 2009 par des acteurs du monde Web
     » Google, Amazon, Yahoo, LinkedIn, Netflix
     » De décideurs qui sont d’anciens techies

•    Réponses à de nouvelles problématiques
     » Déploiement massif
     » Déploiement régulier
     » PRA, continuité et Cloud



                             7
Devops – Mode Agile                          Geneva JUG




•    Ne pas réduire l’Agile au développement
     » Les méthodes agiles ont fait leur preuve en DEV
     » Applicables sous condition en QA et Production
     » Inscrire les opérations de PROD dans le processus




                            8
Devops – Mode Agile                            Geneva JUG




•    Déploiements fréquents
     » Rassure les équipes de Production
     » Rode la mécanique
     » Infra et code dans le cycle de déploiement continu
     » Mode itératif avec feedback




                             9
Devops – Nouvelle Donne Technique       Geneva JUG




•    Un mode de pensée différent
     » Scale out plutôt que Scale in
     » Couplages légers
     » Cloud aware
     » Une touche de Dev pour les Ops
     » Une pincée d’Ops dans les Dev




                           10
Devops - Nouvelle Donne Technique              Geneva JUG




•    Une nouvelle approche des opérations IT
     » Infrastructure As Code (Chef, Puppet, Vagrant…)
     » Des Ops qui codent (Bash, Python, Ruby, Groovy)
     » Et utilisent des outils du Dev (SVN/Mercurial/GIT)

•    Automatisation
     » Pour réduire les erreurs
     » Pour gérer un nombre importants de machines



                             11
DevOps – De l’humain                          Geneva JUG




•    Constats
     » Opposer les équipes amène à l’échec

•    Gains
     » Lever au plus tôt les incompréhensions et
       inquiétudes
     » Responsabiliser chacun sur l’ensemble du cycle
       de vie




                             12
Devops – et des pré-requis                      Geneva JUG




•    Ouverture d’esprit
     » Pouvoir sortir des vieux schémas
     » Savoir écouter les autres
     » Vouloir échanger avec les autres

•    Une gouvernance adaptée
     » Promouvoir l’échange entre les équipes pluri-
       disciplinaires
     » Accepter une ‘démocratie’ plus directe


                             13
Devops – Mets de l’huile       Geneva JUG




•  Connaître l’autre
•  Travaillons ensemble




                          14
Devops – Connaître l’autre                  Geneva JUG




•    Le vocabulaire
     » OOM, jar, war, Beans, Jenkins, Maven
     » Jmeter, SmokeTests, Selenium
     » SNMP, Nagios, Cacti, Hyperic, RHQ, JMX

•    L’environnement et les contraintes
     » Collocation et mutualisation
     » Monitoring
     » Sécurité

                             15
Devops – Connaître l’autre         Geneva JUG




•    Les peurs de l’autre
     » Boites noires
     » Performances
     » Effet de bord
     » Reprise d’activité
     » Plans de test tardif




                              16
Devops – Travaillons ensemble                 Geneva JUG




•    Tous ensemble, tous ensemble
     » En finir avec la patate chaude
     » Analyser ensemble les besoins
     » Définir des livrables clairs
     » Tordre le coup aux procédures lourdes (et
       protectrices)




                            17
Retour d’expérience eXo Platform
Devops – eXo Platform                                               Geneva JUG


                  France: (~20)

                                            Ukraine: (~30)


                           Tunisia: (~30)
     USA: (~10)

                                                         Vietnam: (~70)




•  Editeur
•  ~160 employés dans le monde

•  Une culture OpenSource

•  Historique JEE/Portal mergé avec JBoss GateIn



                              19
Devops – eXo Platform                      Geneva JUG




•    Applications Java
     » AIO, PLF, Cloud IDE

•    Environnement
     » Linux, MySQL, PostgreSQL, DB2, Oracle
     » Local, dédié et Cloud (AWS)




                             20
Devops – eXo Platform                        Geneva JUG




•    Des équipes dans 5 pays et 4 continents
     » DEV, Support, QA, ITOP (production)

•    Un outillage classique
     » Subversion & GIT
     » Maven, Nexus
     » Jenkins, Sonar
     » JIRA, Confluence, Fisheye



                              21
Devops – Outils communs                      Geneva JUG




•  JIRA
•  Subversion/Git
     » Dev, QA ou Prod, les sources sont dans le SCM
•  Repository Nexus
•  Support documentaire Wiki

•  Des Jenkins


•    Capitalisation des connaissances
•    Supprime les réticences « outils de l’autre »

                            22
Devops – Outils communs                      Geneva JUG




•    Venus de la Prod
     » Généralisation de JMX (exposition Mbeans)
     » VisualVM




Non aux boites noires !

                            23
Devops – JIRA en situation                     Geneva JUG




•    Des projets JIRA
     » Par projets Dev
     » Par projets QA
     » Pour l’activité ITOP (Ops)
     » Mode sprint sur 2 semaines pour Dev
     » Mode sprint sur une semaine pour ITOP

Un même outil pour l’ensemble des acteurs évite la
duplication d’informations et le rejet de workflow
spécifiques !


                           24
Devops – JIRA pour la PROD                   Geneva JUG




•    Une demande de déploiement est un ticket
     Prod
     » Planification JIRA
     » Description des opérations en cours
     » Retours suite aux opérations.




                            25
Devops – JIRA pour la PROD                       Geneva JUG




•    Les incidents de Prod sont des tickets
     » Collecte des éléments en pièces attachés ou liens
       externes
     » Pré-analyse
     » Qualification puis ouverture d’un ticket Produit lié
     » Permis le suivi de l’incident à la résolution produit




                              26
Devops – Mêmes référentiels                      Geneva JUG




•    Tous les acteurs partagent les mêmes livrables
     » Réduction des erreurs sur des jars/wars
       ‘customisés’ ou ‘déviants’
     » Une source connue et unique contrôlée par le
       Software Factory Manager
     » Renforce la nécessité de livraison par le Dev
     » Rassure les équipes de QA et ITOP




                             27
Devops – The Jenkins Gang                      Geneva JUG




•    Jenkins d’intégration continue (SWF-CI)
     » Intégration continue et packaging d’applications

•    Jenkins déploiement continu (SWF-CD)
     » Déploiement continu vers la pre-prod

•    Jenkins de QA (QAF)
     » Déploiement vers l’infra QA
     » Test de performances et conformité


                             28
DevOps – Jenkins SWF-CI (build/deploy repos)
                                           Geneva JUG




•  Construction et tests
•  Deploiement ASAP
     » Via Maven 2/3
     » Depuis sources dans
       SVN ou GIT
     » Vers les repositories
       Maven
•    ~100 jobs



                               29
DevOps – Jenkins SWF-CI (packaging)   Geneva JUG




•    Packaging des produits.
     » Prêts pour démos ou
       tests
•  Utilisation de
   contraintes amonts
   pour limiter les
   reconstructions
•  Utilisation du plugin
   priority sorter avec une
   priorité faible
•  ~20 jobs




                               30
DevOps – Jenkins SWF-CD (deployment)          Geneva JUG




•    Déploiement en pre-production
     » Mode SSH Slave et clés privées (sécurité)
     » Restons simple (KISS), jobs free style
     » Bash est l’ami de vos SysAdmin
     » Les taches du job dans Subversion

     On mélange bien ici Dev et Ops, avec l’outillage
     maitrisé par chacun et les bonnes pratiques comme
     les sources dans le SCM.



                             31
DevOps – Jenkins SWF-CD (deployment)            Geneva JUG




                          Jenkins Master




         Jenkins Agent
                                              Jenkins Agent


       SQL Engine
                           Jenkins Agent   HTTP Frontend



                         App Server


                           32
DevOps – Jenkins SWF-CD (deployment)         Geneva JUG




  » Jenkins est un enchaineur
  » Il déclenche les jobs suivant nos règles (horaires
   ou évènements)
  » Il prend le contrôle d’instances esclaves dans un
   environnement contraint lié au profil SSH
  » Les résultats d’opérations (stdout/stderr)
   remontent naturellement vers le Jenkins Maitre
  » Jenkins devient une console d’opération
  » Pour l’équipe Prod, mais utilisable par les DEV ou
   la QA sous contrôle et conditions


                           33
DevOps – Jenkins QAF        Geneva JUG




                       34
DevOps – Jenkins QAF                        Geneva JUG




                          Jenkins Master




        Jenkins Agent
                                           Jenkins Agent


      SQL Engine
                          Jenkins Agent     Injector



                        App Server


                           35
DevOps – Jenkins QAF tests process   Geneva JUG




                         36
DevOps – Jenkins QAF Performances Jobs   Geneva JUG




                        37
DevOps – Jenkins QAF Performances tests   Geneva JUG




                         38
DevOps – Jenkins QAF Performances reports   Geneva JUG




                         39
DevOps – Jenkins QAF                         Geneva JUG




  » Jenkins comme enchaineur
  » Il va bosser la nuit pour produire des tests
   fonctionnels long ou des tirs de performances
  » Analyse des résultats le lendemain matin avec le
   café et les croissants (thé / biscotte accepté)
  » L’équipe QA se focalise sur l’analyse (humaine) et
   confie les taches rébarbatives (déploiement,
   initialisation, tirs longs) à la machine.
  » Jenkins est une console d’opération pour l’équipe
   QA, elle aussi utilisable par les DEV ou PROD


                           40
DevOps – Retours eXo                          Geneva JUG




•    Un outillage commun facilite la communication
     » Echange des bonnes pratiques (Dev, Ops, QA)
     » Partage et montée en compétence ensemble
     » Laissons faire à la machine ce qui est long ou
       rébarbatif
     » Restons simple

     DevOps ne doit pas rester cantonné à une élite mais
     inclure l’ensemble des acteurs.



                             41
Les mains dans le cambouis
Dédicace spéciale à mes amis les @lescastcodeurs
DevOps – Les retours d’atelier                Geneva JUG




Un besoin courant des équipes DEV et QA est l’
analyse du comportement d’applications en situation.


  » Les outils de profiling sont trop intrusifs ou mal
   maitrisés
  » La supervision de prod n’est pas adaptée
  » Restons simple et pragmatique
  » Récompensons l’effort JMX



                           43
DevOps – Graphite (https://launchpad.net/graphite)   Geneva JUG




   » Solution de collecte et tracés de métriques
   » Développée en Python
   » Un collecteur via TCP/IP : Carbon
   » Un gestionnaire de stockage : Whisper
   » Un tracé des métriques : Graphite




                                   44
DevOps – Graphite                           Geneva JUG




  » Collecteur et stockage scalable sur plusieurs
    instances
  » Agrégation sur un même graphique de métriques
    différents
  » Moteur de rendu entièrement configurable
  » Large choix de fonctions à appliquer
  » Accès via l’UI Web ou via URL restituant une
   image PNG




                          45
DevOps – JMXTrans (http://code.google.com/p/jmxtrans/)   Geneva JUG




•    Un collecteur JMX simple et performant
     » Ecris par un Dev Apache bien connu (Jon Stevens)
       passé du coté obscur (Ops)
     » Fonctionne sur n’importe quelle machine (in/of
       situ)
     » Simple, léger et rapidement déployable
     » Alimentation de back-ends comme RRDTools et
       Graphite
     » Une syntaxe de définition simple et efficace
       (JSON)
     » Un taux échantillonnage réglable

                                  46
DevOps – JMXTrans – Graphite en situation       Geneva JUG


                                            Graphite




                                            @




                                      JMXTrans




                          47
DevOps – Exemples JSON                                                                             Geneva JUG


{
  "servers" : [ {
    "port" : "8004",
    "host" : "appserver",
    "queries" : [ {
       "outputWriters" : [ {
         "@class" : "com.googlecode.jmxtrans.model.output.GraphiteWriter",
         "settings" : {
            "port" : 2003,
            "host" : "graphite",
         "typeNames" : [ "name" ]
         }
       } ],
       "obj" : "Catalina:type=DataSource,class=javax.sql.DataSource,name=*",
       "attr" : [ "numActive", "numIdle" ]
    } ],
    "numQueryThreads" : 2                 {
  } ]                                       "servers" : [ {
}                                             "port" : "8004",
                                              "host" : "appserver",
                                              "queries" : [ {
                                                "outputWriters" : [ {
                                                   "@class" : "com.googlecode.jmxtrans.model.output.GraphiteWriter",
   {                                               "settings" : {
      "servers" : [ {                                "port" : 2003,
        "port" : "8004",                             "host" : "graphite",
        "host" : "appserver",                     "typeNames" : [ "name" ]
        "queries" : [ {                            }
           "outputWriters" : [ {                } ],
                                                "obj" : "Catalina:type=ThreadPool,name=*",
             "@class" : "com.googlecode.jmxtrans.model.output.GraphiteWriter",
             "settings" : {                     "attr" : [ "currentThreadCount", "currentThreadsBusy", "" ]
                "port" : 2003,                } ],
                "host" : "graphite"           "numQueryThreads" : 2
             }                              } ]
           } ],                           }
           "obj" : "java.lang:type=Threading",
           "attr" : [ "DaemonThreadCount", "PeakThreadCount", "ThreadCount",
   "TotalStartedThreadCount" ]
        } ],
        "numQueryThreads" : 2
      } ]
   }




                                                           48
DevOps – Résultats Graphite   Geneva JUG




                        49
Geneva JUG




Et voici le moment des questions et réponses …
               si vous avez été sages




                         50
Licence et copyrights                            Geneva JUG




•    Photos et logos appartiennent à leur auteurs/
     propriétaires respectifs.
•    Contenu sous Creative Commons 3.0
•    http://creativecommons.org/licenses/by-nc-sa/3.0/us/




                               51

DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011

  • 1.
    Geneva Jug Mardi 30Aout 2011 Devops Retour d’experience
  • 2.
    Henri Gomez Geneva JUG •  Pre eXo •  OpenSource Activiste »  +20 ans de développement »  Commiteur Apache Tomcat depuis 2001 »  Architecte Java »  Co-fondateur du projet JPackage »  Finance/Bourse, Middle&Back »  Projet OpenJDK OS/X Build •  eXo – ITOP Manager •  Me contacter »  Responsable de la production »  Mail: henri.gomez@gmail.com »  Infrastructure locale (TN/UA/VN) »  Twitter : @hgomez »  Infrastructure dédiée sur OVH »  Skype : gomezhe »  Infrastructure Cloud sur AWS »  Blog : http://blog.hgomez.net •  eXo – QA Tech Lead »  QAF – QA Factory »  Benchmarks »  Performance Analysis 2
  • 3.
    Devops : uneimage vaut mille mots Geneva JUG 3
  • 4.
    Devops : Allo? Geneva JUG Courtesy @builddoctor 4
  • 5.
    Devops - Kesako Geneva JUG •  Ce que n’est pas DevOps » Un produit (même si…) » Une personne ou équipe » Une méthodologie stricte » Une recette miracle 5
  • 6.
    Devops - Kesako Geneva JUG •  Ce qu’est DevOps » Un mouvement » Un mode agile sur l’ensemble de la chaine » Une nouvelle donne technique » Une autre approche humaine 6
  • 7.
    Devops - Mouvement Geneva JUG •  Initié fin 2009 par des acteurs du monde Web » Google, Amazon, Yahoo, LinkedIn, Netflix » De décideurs qui sont d’anciens techies •  Réponses à de nouvelles problématiques » Déploiement massif » Déploiement régulier » PRA, continuité et Cloud 7
  • 8.
    Devops – ModeAgile Geneva JUG •  Ne pas réduire l’Agile au développement » Les méthodes agiles ont fait leur preuve en DEV » Applicables sous condition en QA et Production » Inscrire les opérations de PROD dans le processus 8
  • 9.
    Devops – ModeAgile Geneva JUG •  Déploiements fréquents » Rassure les équipes de Production » Rode la mécanique » Infra et code dans le cycle de déploiement continu » Mode itératif avec feedback 9
  • 10.
    Devops – NouvelleDonne Technique Geneva JUG •  Un mode de pensée différent » Scale out plutôt que Scale in » Couplages légers » Cloud aware » Une touche de Dev pour les Ops » Une pincée d’Ops dans les Dev 10
  • 11.
    Devops - NouvelleDonne Technique Geneva JUG •  Une nouvelle approche des opérations IT » Infrastructure As Code (Chef, Puppet, Vagrant…) » Des Ops qui codent (Bash, Python, Ruby, Groovy) » Et utilisent des outils du Dev (SVN/Mercurial/GIT) •  Automatisation » Pour réduire les erreurs » Pour gérer un nombre importants de machines 11
  • 12.
    DevOps – Del’humain Geneva JUG •  Constats » Opposer les équipes amène à l’échec •  Gains » Lever au plus tôt les incompréhensions et inquiétudes » Responsabiliser chacun sur l’ensemble du cycle de vie 12
  • 13.
    Devops – etdes pré-requis Geneva JUG •  Ouverture d’esprit » Pouvoir sortir des vieux schémas » Savoir écouter les autres » Vouloir échanger avec les autres •  Une gouvernance adaptée » Promouvoir l’échange entre les équipes pluri- disciplinaires » Accepter une ‘démocratie’ plus directe 13
  • 14.
    Devops – Metsde l’huile Geneva JUG •  Connaître l’autre •  Travaillons ensemble 14
  • 15.
    Devops – Connaîtrel’autre Geneva JUG •  Le vocabulaire » OOM, jar, war, Beans, Jenkins, Maven » Jmeter, SmokeTests, Selenium » SNMP, Nagios, Cacti, Hyperic, RHQ, JMX •  L’environnement et les contraintes » Collocation et mutualisation » Monitoring » Sécurité 15
  • 16.
    Devops – Connaîtrel’autre Geneva JUG •  Les peurs de l’autre » Boites noires » Performances » Effet de bord » Reprise d’activité » Plans de test tardif 16
  • 17.
    Devops – Travaillonsensemble Geneva JUG •  Tous ensemble, tous ensemble » En finir avec la patate chaude » Analyser ensemble les besoins » Définir des livrables clairs » Tordre le coup aux procédures lourdes (et protectrices) 17
  • 18.
  • 19.
    Devops – eXoPlatform Geneva JUG France: (~20) Ukraine: (~30) Tunisia: (~30) USA: (~10) Vietnam: (~70) •  Editeur •  ~160 employés dans le monde •  Une culture OpenSource •  Historique JEE/Portal mergé avec JBoss GateIn 19
  • 20.
    Devops – eXoPlatform Geneva JUG •  Applications Java » AIO, PLF, Cloud IDE •  Environnement » Linux, MySQL, PostgreSQL, DB2, Oracle » Local, dédié et Cloud (AWS) 20
  • 21.
    Devops – eXoPlatform Geneva JUG •  Des équipes dans 5 pays et 4 continents » DEV, Support, QA, ITOP (production) •  Un outillage classique » Subversion & GIT » Maven, Nexus » Jenkins, Sonar » JIRA, Confluence, Fisheye 21
  • 22.
    Devops – Outilscommuns Geneva JUG •  JIRA •  Subversion/Git » Dev, QA ou Prod, les sources sont dans le SCM •  Repository Nexus •  Support documentaire Wiki •  Des Jenkins •  Capitalisation des connaissances •  Supprime les réticences « outils de l’autre » 22
  • 23.
    Devops – Outilscommuns Geneva JUG •  Venus de la Prod » Généralisation de JMX (exposition Mbeans) » VisualVM Non aux boites noires ! 23
  • 24.
    Devops – JIRAen situation Geneva JUG •  Des projets JIRA » Par projets Dev » Par projets QA » Pour l’activité ITOP (Ops) » Mode sprint sur 2 semaines pour Dev » Mode sprint sur une semaine pour ITOP Un même outil pour l’ensemble des acteurs évite la duplication d’informations et le rejet de workflow spécifiques ! 24
  • 25.
    Devops – JIRApour la PROD Geneva JUG •  Une demande de déploiement est un ticket Prod » Planification JIRA » Description des opérations en cours » Retours suite aux opérations. 25
  • 26.
    Devops – JIRApour la PROD Geneva JUG •  Les incidents de Prod sont des tickets » Collecte des éléments en pièces attachés ou liens externes » Pré-analyse » Qualification puis ouverture d’un ticket Produit lié » Permis le suivi de l’incident à la résolution produit 26
  • 27.
    Devops – Mêmesréférentiels Geneva JUG •  Tous les acteurs partagent les mêmes livrables » Réduction des erreurs sur des jars/wars ‘customisés’ ou ‘déviants’ » Une source connue et unique contrôlée par le Software Factory Manager » Renforce la nécessité de livraison par le Dev » Rassure les équipes de QA et ITOP 27
  • 28.
    Devops – TheJenkins Gang Geneva JUG •  Jenkins d’intégration continue (SWF-CI) » Intégration continue et packaging d’applications •  Jenkins déploiement continu (SWF-CD) » Déploiement continu vers la pre-prod •  Jenkins de QA (QAF) » Déploiement vers l’infra QA » Test de performances et conformité 28
  • 29.
    DevOps – JenkinsSWF-CI (build/deploy repos) Geneva JUG •  Construction et tests •  Deploiement ASAP » Via Maven 2/3 » Depuis sources dans SVN ou GIT » Vers les repositories Maven •  ~100 jobs 29
  • 30.
    DevOps – JenkinsSWF-CI (packaging) Geneva JUG •  Packaging des produits. » Prêts pour démos ou tests •  Utilisation de contraintes amonts pour limiter les reconstructions •  Utilisation du plugin priority sorter avec une priorité faible •  ~20 jobs 30
  • 31.
    DevOps – JenkinsSWF-CD (deployment) Geneva JUG •  Déploiement en pre-production » Mode SSH Slave et clés privées (sécurité) » Restons simple (KISS), jobs free style » Bash est l’ami de vos SysAdmin » Les taches du job dans Subversion On mélange bien ici Dev et Ops, avec l’outillage maitrisé par chacun et les bonnes pratiques comme les sources dans le SCM. 31
  • 32.
    DevOps – JenkinsSWF-CD (deployment) Geneva JUG Jenkins Master Jenkins Agent Jenkins Agent SQL Engine Jenkins Agent HTTP Frontend App Server 32
  • 33.
    DevOps – JenkinsSWF-CD (deployment) Geneva JUG » Jenkins est un enchaineur » Il déclenche les jobs suivant nos règles (horaires ou évènements) » Il prend le contrôle d’instances esclaves dans un environnement contraint lié au profil SSH » Les résultats d’opérations (stdout/stderr) remontent naturellement vers le Jenkins Maitre » Jenkins devient une console d’opération » Pour l’équipe Prod, mais utilisable par les DEV ou la QA sous contrôle et conditions 33
  • 34.
    DevOps – JenkinsQAF Geneva JUG 34
  • 35.
    DevOps – JenkinsQAF Geneva JUG Jenkins Master Jenkins Agent Jenkins Agent SQL Engine Jenkins Agent Injector App Server 35
  • 36.
    DevOps – JenkinsQAF tests process Geneva JUG 36
  • 37.
    DevOps – JenkinsQAF Performances Jobs Geneva JUG 37
  • 38.
    DevOps – JenkinsQAF Performances tests Geneva JUG 38
  • 39.
    DevOps – JenkinsQAF Performances reports Geneva JUG 39
  • 40.
    DevOps – JenkinsQAF Geneva JUG » Jenkins comme enchaineur » Il va bosser la nuit pour produire des tests fonctionnels long ou des tirs de performances » Analyse des résultats le lendemain matin avec le café et les croissants (thé / biscotte accepté) » L’équipe QA se focalise sur l’analyse (humaine) et confie les taches rébarbatives (déploiement, initialisation, tirs longs) à la machine. » Jenkins est une console d’opération pour l’équipe QA, elle aussi utilisable par les DEV ou PROD 40
  • 41.
    DevOps – RetourseXo Geneva JUG •  Un outillage commun facilite la communication » Echange des bonnes pratiques (Dev, Ops, QA) » Partage et montée en compétence ensemble » Laissons faire à la machine ce qui est long ou rébarbatif » Restons simple DevOps ne doit pas rester cantonné à une élite mais inclure l’ensemble des acteurs. 41
  • 42.
    Les mains dansle cambouis Dédicace spéciale à mes amis les @lescastcodeurs
  • 43.
    DevOps – Lesretours d’atelier Geneva JUG Un besoin courant des équipes DEV et QA est l’ analyse du comportement d’applications en situation. » Les outils de profiling sont trop intrusifs ou mal maitrisés » La supervision de prod n’est pas adaptée » Restons simple et pragmatique » Récompensons l’effort JMX 43
  • 44.
    DevOps – Graphite(https://launchpad.net/graphite) Geneva JUG » Solution de collecte et tracés de métriques » Développée en Python » Un collecteur via TCP/IP : Carbon » Un gestionnaire de stockage : Whisper » Un tracé des métriques : Graphite 44
  • 45.
    DevOps – Graphite Geneva JUG » Collecteur et stockage scalable sur plusieurs instances » Agrégation sur un même graphique de métriques différents » Moteur de rendu entièrement configurable » Large choix de fonctions à appliquer » Accès via l’UI Web ou via URL restituant une image PNG 45
  • 46.
    DevOps – JMXTrans(http://code.google.com/p/jmxtrans/) Geneva JUG •  Un collecteur JMX simple et performant » Ecris par un Dev Apache bien connu (Jon Stevens) passé du coté obscur (Ops) » Fonctionne sur n’importe quelle machine (in/of situ) » Simple, léger et rapidement déployable » Alimentation de back-ends comme RRDTools et Graphite » Une syntaxe de définition simple et efficace (JSON) » Un taux échantillonnage réglable 46
  • 47.
    DevOps – JMXTrans– Graphite en situation Geneva JUG Graphite @ JMXTrans 47
  • 48.
    DevOps – ExemplesJSON Geneva JUG { "servers" : [ { "port" : "8004", "host" : "appserver", "queries" : [ { "outputWriters" : [ { "@class" : "com.googlecode.jmxtrans.model.output.GraphiteWriter", "settings" : { "port" : 2003, "host" : "graphite", "typeNames" : [ "name" ] } } ], "obj" : "Catalina:type=DataSource,class=javax.sql.DataSource,name=*", "attr" : [ "numActive", "numIdle" ] } ], "numQueryThreads" : 2 { } ] "servers" : [ { } "port" : "8004", "host" : "appserver", "queries" : [ { "outputWriters" : [ { "@class" : "com.googlecode.jmxtrans.model.output.GraphiteWriter", { "settings" : { "servers" : [ { "port" : 2003, "port" : "8004", "host" : "graphite", "host" : "appserver", "typeNames" : [ "name" ] "queries" : [ { } "outputWriters" : [ { } ], "obj" : "Catalina:type=ThreadPool,name=*", "@class" : "com.googlecode.jmxtrans.model.output.GraphiteWriter", "settings" : { "attr" : [ "currentThreadCount", "currentThreadsBusy", "" ] "port" : 2003, } ], "host" : "graphite" "numQueryThreads" : 2 } } ] } ], } "obj" : "java.lang:type=Threading", "attr" : [ "DaemonThreadCount", "PeakThreadCount", "ThreadCount", "TotalStartedThreadCount" ] } ], "numQueryThreads" : 2 } ] } 48
  • 49.
    DevOps – RésultatsGraphite Geneva JUG 49
  • 50.
    Geneva JUG Et voicile moment des questions et réponses … si vous avez été sages 50
  • 51.
    Licence et copyrights Geneva JUG •  Photos et logos appartiennent à leur auteurs/ propriétaires respectifs. •  Contenu sous Creative Commons 3.0 •  http://creativecommons.org/licenses/by-nc-sa/3.0/us/ 51