Your SlideShare is downloading. ×
DevOps - Retour d'expérience - MarsJug du 29 Juin 2011
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Saving this for later?

Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime - even offline.

Text the download link to your phone

Standard text messaging rates apply

DevOps - Retour d'expérience - MarsJug du 29 Juin 2011

2,913
views

Published on

Slides de la présentation DevOps - Retour d'expérience, au MarsJug le 29 Juin 2011

Slides de la présentation DevOps - Retour d'expérience, au MarsJug le 29 Juin 2011

Published in: Technology, Business

0 Comments
10 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,913
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
46
Comments
0
Likes
10
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. Marseille JugMercredi 29 Juin 2011DevopsRetour d’experience
  • 2. Henri Gomez•  eXo – ITOP Manager •  OpenSource Activiste »  Responsable de la production »  Commiteur Apache Tomcat depuis 2001 »  Infrastructure locale (TN/UA/VN) »  Co-fondateur du projet JPackage »  Infrastructure dédiée sur OVH »  Projet OpenJDK OS/X Build »  Infrastructure Cloud sur AWS •  Me contacter•  eXo – QA Tech Lead »  Mail: henri.gomez@gmail.com »  QAF – QA Factory »  Twitter : @hgomez »  Benchmarks »  Skype : gomezhe »  Performance Analysis »  Blog : http://blog.hgomez.net 2
  • 3. Devops : une image vaut mille mots 3
  • 4. Devops - Kesako•  Ce que n’est pas DevOps » Un produit (même si…) » Une personne ou équipe » Une méthodologie stricte » Une recette miracle 4
  • 5. Devops - Kesako•  Ce qu’est DevOps » Un mouvement » Une approche agile sur l’ensemble de la chaine » Une nouvelle donne technique et humaine 5
  • 6. Devops - Mouvement•  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 6
  • 7. Devops - Mouvement•  Un mode de pensée différent » Scale out plutôt que Scale in » Couplages légers » Cloud aware 7
  • 8. Devops - Mouvement•  Une nouvelle approche des opérations IT » Infrastructure As Code » Des SysAdm qui codent (Bash, Perl, Python, Ruby) » Et qui utilisent des outils du Dev (Subversion/GIT)•  Automatisation » Pour réduire les erreurs » Pour gérer un nombre importants de machines 8
  • 9. Devops – Approche Agile•  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 9
  • 10. Devops – Approche Agile•  Déploiements fréquents » Rassure les équipes de Production » Rode la mécanique » Infra et code dans le cycle de déploiement continu 10
  • 11. DevOps – Nouvelle donne humaine•  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 11
  • 12. Devops – Mets de l’huile•  Connaître l’autre•  Travaillons ensemble•  Tout le monde sur le pont 12
  • 13. Devops – Connaître l’autre•  Le vocabulaire » JVM, 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é 13
  • 14. Devops – Connaître l’autre•  Les peurs de l’autre » Boites noires » Performances » Effet de bord » Reprise d’activité » Plans de test tardif 14
  • 15. Devops – Travaillons ensemble•  Tous ensemble, tous ensemble (osef en terre Olympienne) » En finir avec la patate chaude » Analyser ensemble les besoins » Définir des livrables clairs » Tordre le coup aux procédures lourdes (et protectrices) 15
  • 16. Retour d’expérience eXo Platform
  • 17. Devops – eXo Platform 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 17
  • 18. Devops – eXo Platform•  Applications Java » AIO, PLF, Cloud IDE•  Environnement » Linux, MySQL, PostgreSQL, DB2, Oracle » Local, dédié et Cloud (AWS) 18
  • 19. Devops – eXo Platform•  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 19
  • 20. Devops – Outils communs•  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 » 20
  • 21. Devops – Outils communs•  Venus de la Prod » Généralisation de JMX (exposition Mbeans) » VisualVMNon aux boites noires ! 21
  • 22. Devops – JIRA en situation•  Des projets JIRA » Par projets Dev » Par projets QA » Pour l’activité ITOP (Prod) » 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 ! 22
  • 23. Devops – JIRA pour la PROD•  Une demande de déploiement est un ticket Prod » Planification JIRA » Description des opérations en cours » Retours suite aux opérations. 23
  • 24. Devops – JIRA pour la PROD•  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 24
  • 25. Devops – Mêmes référentiels•  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 SWF Manager » Renforce la nécessité de livraison par le Dev » Rassure les équipes de QA et ITOP 25
  • 26. Devops – The Jenkins Gang•  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é 26
  • 27. DevOps – Jenkins SWF-CI (build/deploy repos)•  Construction et tests•  Deploiement ASAP » Via Maven 2/3 » Depuis sources dans SVN ou GIT » Vers les repositories Maven•  ~100 jobs 27
  • 28. DevOps – Jenkins SWF-CI (packaging)•  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 28
  • 29. DevOps – Jenkins SWF-CD (deployment)•  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 ITOP, avec l’outillage maitrisé par chacun et les bonnes pratiques comme les sources dans le SCM. 29
  • 30. DevOps – Jenkins SWF-CD (deployment) Jenkins Master Jenkins Agent Jenkins Agent SQL Engine Jenkins Agent HTTP Frontend App Server 30
  • 31. DevOps – Jenkins SWF-CD (deployment) » 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 31
  • 32. DevOps – Jenkins QAF 32
  • 33. DevOps – Jenkins QAF Jenkins Master Jenkins Agent Jenkins Agent SQL Engine Jenkins Agent Injector App Server 33
  • 34. DevOps – Jenkins QAF tests process 34
  • 35. DevOps – Jenkins QAF Performances Jobs 35
  • 36. DevOps – Jenkins QAF Performances tests 36
  • 37. DevOps – Jenkins QAF Performances reports 37
  • 38. DevOps – Jenkins QAF » 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 38
  • 39. DevOps – Retours eXo•  Un outillage commun facilite la communication » Echange des bonnes pratiques (Dev, ITOP, 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, c’est même tout le contraire, il doit séduire l’ensemble des acteurs. 39
  • 40. Les mains dans le cambouisDédicace spéciale à mes amis les @lescastcodeurs
  • 41. DevOps – Les retours d’atelierUn 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 41
  • 42. DevOps – La suite Graphite » Solution de collecte et tracés de métriques » Développée en Python (installation délicate sur OS/X’) » Un collecteur via TCP/IP : Carbon » Un gestionnaire de stockage : Whisper » Un tracé des métriques : Graphite 42
  • 43. DevOps – La suite Graphite » Collecteur et stockage scalable sur plusieurs instances » Agrégation sur un même graphique des métriques différents » Moteur de rendu entièrement configurable » Accès via l’UI Web ou via URL restituant une image PNG 43
  • 44. DevOps – JMXTrans•  Un collecteur JMX simple et performant » Ecris par un Dev Apache bien connu (Jon Stevens) passé du coté obscur (Prod) » 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églage 44
  • 45. DevOps – JMXTrans – Graphite en situation Graphite @ JMXTrans 45
  • 46. DevOps – Exemples JSON{ "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 } ] } 46
  • 47. DevOps – DevOps – Résultats Graphite 47
  • 48. Et voici le moment des questions et réponses … si vous avez été sages 48
  • 49. Licence et copyrights•  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/ 49