Upload
henrigomez
View
2.984
Download
1
Embed Size (px)
DESCRIPTION
Slides de la présentation DevOps - Retour d'expérience, au MarsJug le 29 Juin 2011
Citation preview
Devops Retour d’experience
Marseille Jug Mercredi 29 Juin 2011
2
Henri Gomez
• OpenSource Activiste » Commiteur Apache Tomcat depuis 2001
» Co-fondateur du projet JPackage » Projet OpenJDK OS/X Build
• Me contacter » Mail: [email protected]
» Twitter : @hgomez
» Skype : gomezhe » Blog : http://blog.hgomez.net
• eXo – ITOP Manager » Responsable de la production
» Infrastructure locale (TN/UA/VN) » Infrastructure dédiée sur OVH
» Infrastructure Cloud sur AWS
• eXo – QA Tech Lead
» QAF – QA Factory
» Benchmarks » Performance Analysis
3
Devops : une image vaut mille mots
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
5
Devops - Kesako
• Ce qu’est DevOps
» Un mouvement » Une approche agile sur l’ensemble de la chaine » Une nouvelle donne technique et humaine
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
7
Devops - Mouvement
• Un mode de pensée différent » Scale out plutôt que Scale in » Couplages légers » Cloud aware
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
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
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
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
12
Devops – Mets de l’huile
• Connaître l’autre • Travaillons ensemble • Tout le monde sur le pont
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é
14
Devops – Connaître l’autre
• Les peurs de l’autre » Boites noires » Performances » Effet de bord » Reprise d’activité » Plans de test tardif
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)
Retour d’expérience eXo Platform
17
Devops – eXo Platform
• Editeur • ~160 employés dans le monde • Une culture OpenSource • Historique JEE/Portal mergé avec JBoss GateIn
Vietnam: (~70)
Tunisia: (~30)
Ukraine: (~30)
France: (~20)
USA: (~10)
18
Devops – eXo Platform
• Applications Java » AIO, PLF, Cloud IDE
• Environnement » Linux, MySQL, PostgreSQL, DB2, Oracle » Local, dédié et Cloud (AWS)
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
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 »
21
Devops – Outils communs
• Venus de la Prod » Généralisation de JMX (exposition Mbeans) » VisualVM
Non aux boites noires !
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 ITOP
Un même outil pour l’ensemble des acteurs évite la duplication d’informations et le rejet de workflow spécifiques !
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.
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
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
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é
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
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
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.
30
DevOps – Jenkins SWF-CD (deployment)
Jenkins Agent
Jenkins Master
Jenkins Agent
Jenkins Agent
SQL Engine
App Server
HTTP Frontend
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
32
DevOps – Jenkins QAF
33
DevOps – Jenkins QAF
Jenkins Agent
Jenkins Master
Jenkins Agent
Jenkins Agent
SQL Engine
App Server
Injector
34
DevOps – Jenkins QAF tests process
35
DevOps – Jenkins QAF Performances Jobs
36
DevOps – Jenkins QAF Performances tests
37
DevOps – Jenkins QAF Performances reports
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
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.
Les mains dans le cambouis Dédicace spéciale à mes amis les @lescastcodeurs
41
DevOps – Les retours d’atelier
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
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
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
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
45
DevOps – JMXTrans – Graphite en situation
Graphite
@
JMXTrans
46
{ "servers" : [ { "port" : "8004", "host" : "appserver", "queries" : [ { "outputWriters" : [ { "@class" : "com.googlecode.jmxtrans.model.output.GraphiteWriter", "settings" : { "port" : 2003, "host" : "graphite" } } ], "obj" : "java.lang:type=Threading", "attr" : [ "DaemonThreadCount", "PeakThreadCount", "ThreadCount", "TotalStartedThreadCount" ] } ], "numQueryThreads" : 2 } ] }
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" : { "port" : 2003, "host" : "graphite",
"typeNames" : [ "name" ] } } ], "obj" : "Catalina:type=ThreadPool,name=*", "attr" : [ "currentThreadCount", "currentThreadsBusy", "" ] } ], "numQueryThreads" : 2 } ] }
47
DevOps – DevOps – Résultats Graphite
48
Et voici le moment des questions et réponses …
si vous avez été sages
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/