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

  • 1,346 views
Uploaded on

Slides de la présentation DevOps - Retour d'expérience, au GenevaJUG le 30 Aout 2011

Slides de la présentation DevOps - Retour d'expérience, au GenevaJUG le 30 Aout 2011

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
1,346
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
15
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Geneva JugMardi 30 Aout 2011DevopsRetour 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 : une image vaut mille mots Geneva JUG 3
  • 4. Devops : Allo ? Geneva JUGCourtesy @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 – 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
  • 9. 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
  • 10. 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
  • 11. 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
  • 12. 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
  • 13. 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
  • 14. Devops – Mets de l’huile Geneva JUG•  Connaître l’autre•  Travaillons ensemble 14
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. Retour d’expérience eXo Platform
  • 19. 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
  • 20. Devops – eXo Platform Geneva JUG•  Applications Java » AIO, PLF, Cloud IDE•  Environnement » Linux, MySQL, PostgreSQL, DB2, Oracle » Local, dédié et Cloud (AWS) 20
  • 21. 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
  • 22. 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
  • 23. Devops – Outils communs Geneva JUG•  Venus de la Prod » Généralisation de JMX (exposition Mbeans) » VisualVMNon aux boites noires ! 23
  • 24. 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 ITOPUn même outil pour l’ensemble des acteurs évite laduplication d’informations et le rejet de workflowspécifiques ! 24
  • 25. 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
  • 26. 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
  • 27. 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
  • 28. 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
  • 29. 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
  • 30. 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
  • 31. 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
  • 32. DevOps – Jenkins SWF-CD (deployment) Geneva JUG Jenkins Master Jenkins Agent Jenkins Agent SQL Engine Jenkins Agent HTTP Frontend App Server 32
  • 33. 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
  • 34. DevOps – Jenkins QAF Geneva JUG 34
  • 35. DevOps – Jenkins QAF Geneva JUG Jenkins Master Jenkins Agent Jenkins Agent SQL Engine Jenkins Agent Injector App Server 35
  • 36. DevOps – Jenkins QAF tests process Geneva JUG 36
  • 37. DevOps – Jenkins QAF Performances Jobs Geneva JUG 37
  • 38. DevOps – Jenkins QAF Performances tests Geneva JUG 38
  • 39. DevOps – Jenkins QAF Performances reports Geneva JUG 39
  • 40. 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
  • 41. 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
  • 42. Les mains dans le cambouisDédicace spéciale à mes amis les @lescastcodeurs
  • 43. DevOps – Les retours d’atelier Geneva JUGUn 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 – 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
  • 49. DevOps – Résultats Graphite Geneva JUG 49
  • 50. Geneva JUGEt voici le 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