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

4 423 vues

Publié le

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

Publié dans : Technologie, Business
0 commentaire
11 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
4 423
Sur SlideShare
0
Issues des intégrations
0
Intégrations
6
Actions
Partages
0
Téléchargements
79
Commentaires
0
J’aime
11
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

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

  1. 1. Marseille JugMercredi 29 Juin 2011DevopsRetour d’experience
  2. 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. 3. Devops : une image vaut mille mots 3
  4. 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. 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. 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. 7. Devops - Mouvement•  Un mode de pensée différent » Scale out plutôt que Scale in » Couplages légers » Cloud aware 7
  8. 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. 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. 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. 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. 12. Devops – Mets de l’huile•  Connaître l’autre•  Travaillons ensemble•  Tout le monde sur le pont 12
  13. 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. 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. 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. 16. Retour d’expérience eXo Platform
  17. 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. 18. Devops – eXo Platform•  Applications Java » AIO, PLF, Cloud IDE•  Environnement » Linux, MySQL, PostgreSQL, DB2, Oracle » Local, dédié et Cloud (AWS) 18
  19. 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. 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. 21. Devops – Outils communs•  Venus de la Prod » Généralisation de JMX (exposition Mbeans) » VisualVMNon aux boites noires ! 21
  22. 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. 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. 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. 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. 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. 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. 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. 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. 30. DevOps – Jenkins SWF-CD (deployment) Jenkins Master Jenkins Agent Jenkins Agent SQL Engine Jenkins Agent HTTP Frontend App Server 30
  31. 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. 32. DevOps – Jenkins QAF 32
  33. 33. DevOps – Jenkins QAF Jenkins Master Jenkins Agent Jenkins Agent SQL Engine Jenkins Agent Injector App Server 33
  34. 34. DevOps – Jenkins QAF tests process 34
  35. 35. DevOps – Jenkins QAF Performances Jobs 35
  36. 36. DevOps – Jenkins QAF Performances tests 36
  37. 37. DevOps – Jenkins QAF Performances reports 37
  38. 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. 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. 40. Les mains dans le cambouisDédicace spéciale à mes amis les @lescastcodeurs
  41. 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. 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. 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. 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. 45. DevOps – JMXTrans – Graphite en situation Graphite @ JMXTrans 45
  46. 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. 47. DevOps – DevOps – Résultats Graphite 47
  48. 48. Et voici le moment des questions et réponses … si vous avez été sages 48
  49. 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

×