devops - retour d'expérience - genevajug du 30 aout 2011
DESCRIPTION
Slides de la présentation DevOps - Retour d'expérience, au GenevaJUG le 30 Aout 2011TRANSCRIPT
![Page 1: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/1.jpg)
Devops Retour d’experience
Geneva Jug Mardi 30 Aout 2011
![Page 2: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/2.jpg)
2
Geneva JUG 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
• Pre eXo » +20 ans de développement
» Architecte Java » Finance/Bourse, Middle&Back
• 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
![Page 3: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/3.jpg)
3
Geneva JUG Devops : une image vaut mille mots
![Page 4: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/4.jpg)
4
Geneva JUG Devops : Allo ?
Courtesy @builddoctor
![Page 5: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/5.jpg)
5
Geneva JUG Devops - Kesako
• Ce que n’est pas DevOps
» Un produit (même si…) » Une personne ou équipe » Une méthodologie stricte » Une recette miracle
![Page 6: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/6.jpg)
6
Geneva JUG Devops - Kesako
• Ce qu’est DevOps
» Un mouvement » Un mode agile sur l’ensemble de la chaine » Une nouvelle donne technique » Une autre approche humaine
![Page 7: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/7.jpg)
7
Geneva JUG 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
![Page 8: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/8.jpg)
8
Geneva JUG Devops – Mode 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
![Page 9: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/9.jpg)
9
Geneva JUG Devops – Mode Agile
• 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
![Page 10: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/10.jpg)
10
Geneva JUG Devops – Nouvelle Donne Technique
• 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
![Page 11: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/11.jpg)
11
Geneva JUG Devops - Nouvelle Donne Technique
• 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
![Page 12: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/12.jpg)
12
Geneva JUG DevOps – De l’humain
• 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
![Page 13: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/13.jpg)
13
Geneva JUG Devops – et des pré-requis
• 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
![Page 14: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/14.jpg)
14
Geneva JUG Devops – Mets de l’huile
• Connaître l’autre • Travaillons ensemble
![Page 15: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/15.jpg)
15
Geneva JUG Devops – Connaître l’autre
• 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é
![Page 16: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/16.jpg)
16
Geneva JUG Devops – Connaître l’autre
• Les peurs de l’autre » Boites noires » Performances » Effet de bord » Reprise d’activité » Plans de test tardif
![Page 17: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/17.jpg)
17
Geneva JUG Devops – Travaillons ensemble
• 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)
![Page 18: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/18.jpg)
Retour d’expérience eXo Platform
![Page 19: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/19.jpg)
19
Geneva JUG 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)
![Page 20: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/20.jpg)
20
Geneva JUG Devops – eXo Platform
• Applications Java » AIO, PLF, Cloud IDE
• Environnement » Linux, MySQL, PostgreSQL, DB2, Oracle » Local, dédié et Cloud (AWS)
![Page 21: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/21.jpg)
21
Geneva JUG 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
![Page 22: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/22.jpg)
22
Geneva JUG 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 »
![Page 23: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/23.jpg)
23
Geneva JUG Devops – Outils communs
• Venus de la Prod » Généralisation de JMX (exposition Mbeans) » VisualVM
Non aux boites noires !
![Page 24: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/24.jpg)
24
Geneva JUG Devops – JIRA en situation
• 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 !
![Page 25: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/25.jpg)
25
Geneva JUG 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.
![Page 26: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/26.jpg)
26
Geneva JUG 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
![Page 27: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/27.jpg)
27
Geneva JUG 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
Software Factory Manager » Renforce la nécessité de livraison par le Dev » Rassure les équipes de QA et ITOP
![Page 28: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/28.jpg)
28
Geneva JUG 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é
![Page 29: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/29.jpg)
29
Geneva JUG 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
![Page 30: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/30.jpg)
30
Geneva JUG 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
![Page 31: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/31.jpg)
31
Geneva JUG 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 Ops, avec l’outillage maitrisé par chacun et les bonnes pratiques comme les sources dans le SCM.
![Page 32: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/32.jpg)
32
Geneva JUG DevOps – Jenkins SWF-CD (deployment)
Jenkins Agent
Jenkins Master
Jenkins Agent
Jenkins Agent
SQL Engine
App Server
HTTP Frontend
![Page 33: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/33.jpg)
33
Geneva JUG 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
![Page 34: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/34.jpg)
34
Geneva JUG DevOps – Jenkins QAF
![Page 35: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/35.jpg)
35
Geneva JUG DevOps – Jenkins QAF
Jenkins Agent
Jenkins Master
Jenkins Agent
Jenkins Agent
SQL Engine
App Server
Injector
![Page 36: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/36.jpg)
36
Geneva JUG DevOps – Jenkins QAF tests process
![Page 37: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/37.jpg)
37
Geneva JUG DevOps – Jenkins QAF Performances Jobs
![Page 38: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/38.jpg)
38
Geneva JUG DevOps – Jenkins QAF Performances tests
![Page 39: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/39.jpg)
39
Geneva JUG DevOps – Jenkins QAF Performances reports
![Page 40: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/40.jpg)
40
Geneva JUG 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
![Page 41: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/41.jpg)
41
Geneva JUG DevOps – Retours eXo
• 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.
![Page 42: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/42.jpg)
Les mains dans le cambouis Dédicace spéciale à mes amis les @lescastcodeurs
![Page 43: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/43.jpg)
43
Geneva JUG 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
![Page 44: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/44.jpg)
44
Geneva JUG DevOps – Graphite (https://launchpad.net/graphite)
» 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
![Page 45: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/45.jpg)
45
Geneva JUG DevOps – Graphite
» 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
![Page 46: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/46.jpg)
46
Geneva JUG DevOps – JMXTrans (http://code.google.com/p/jmxtrans/)
• 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
![Page 47: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/47.jpg)
47
Geneva JUG DevOps – JMXTrans – Graphite en situation
Graphite
@
JMXTrans
![Page 48: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/48.jpg)
48
Geneva JUG
{ "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 } ] }
![Page 49: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/49.jpg)
49
Geneva JUG DevOps – Résultats Graphite
![Page 50: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/50.jpg)
50
Geneva JUG
Et voici le moment des questions et réponses …
si vous avez été sages
![Page 51: DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011](https://reader033.vdocuments.us/reader033/viewer/2022052906/558b33b1d8b42a4f648b469c/html5/thumbnails/51.jpg)
51
Geneva JUG 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/