DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011

51
Devops Retour d’experience AlpesJug Mardi 20 Septembre 2011

description

Slides de la présentation DevOps - Retour d'expérience, à l'AlpesJUG le 20 Septembre 2011

Transcript of DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011

Page 1: DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011

Devops Retour d’experience

AlpesJug Mardi 20 Septembre 2011

Page 2: DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011

2

AlpesJUG 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 - AlpesJug du 20 Septembre 2011

3

AlpesJUG Devops : une image vaut mille mots

Page 4: DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011

4

AlpesJUG Devops : Allo ?

Courtesy @builddoctor

Page 5: DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011

5

AlpesJUG 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 - AlpesJug du 20 Septembre 2011

6

AlpesJUG 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 - AlpesJug du 20 Septembre 2011

7

AlpesJUG 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 - AlpesJug du 20 Septembre 2011

8

AlpesJUG 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 - AlpesJug du 20 Septembre 2011

9

AlpesJUG 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 - AlpesJug du 20 Septembre 2011

10

AlpesJUG 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 - AlpesJug du 20 Septembre 2011

11

AlpesJUG 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 - AlpesJug du 20 Septembre 2011

12

AlpesJUG 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 - AlpesJug du 20 Septembre 2011

13

AlpesJUG 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 - AlpesJug du 20 Septembre 2011

14

AlpesJUG Devops – Mets de l’huile

•  Connaître l’autre •  Travaillons ensemble

Page 15: DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011

15

AlpesJUG 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 - AlpesJug du 20 Septembre 2011

16

AlpesJUG 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 - AlpesJug du 20 Septembre 2011

17

AlpesJUG 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 - AlpesJug du 20 Septembre 2011

Retour d’expérience eXo Platform

Page 19: DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011

19

AlpesJUG 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 - AlpesJug du 20 Septembre 2011

20

AlpesJUG 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 - AlpesJug du 20 Septembre 2011

21

AlpesJUG Devops – eXo Platform

•  Des équipes dans 5 pays et 4 continents » Dev, Support, QA, Ops (production)

•  Un outillage classique » Subversion & GIT » Maven, Nexus » Jenkins, Sonar » JIRA, Confluence, Fisheye

Page 22: DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011

22

AlpesJUG Devops – Outils communs

•  JIRA •  Subversion/Git

» Dev, QA ou Ops, 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 - AlpesJug du 20 Septembre 2011

23

AlpesJUG 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 - AlpesJug du 20 Septembre 2011

24

AlpesJUG Devops – JIRA en situation

•  Des projets JIRA » Par projets Dev » Par projets QA » Pour l’activité Ops » Mode sprint sur 2 semaines pour Dev » Mode sprint sur une semaine pour Ops

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 - AlpesJug du 20 Septembre 2011

25

AlpesJUG Devops – JIRA pour la PROD

•  Une demande de déploiement est un ticket Ops » Planification JIRA » Description des opérations en cours » Retours suite aux opérations.

Page 26: DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011

26

AlpesJUG 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 - AlpesJug du 20 Septembre 2011

27

AlpesJUG 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 Ops

Page 28: DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011

28

AlpesJUG 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 - AlpesJug du 20 Septembre 2011

29

AlpesJUG 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 - AlpesJug du 20 Septembre 2011

30

AlpesJUG 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 - AlpesJug du 20 Septembre 2011

31

AlpesJUG 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 - AlpesJug du 20 Septembre 2011

32

AlpesJUG 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 - AlpesJug du 20 Septembre 2011

33

AlpesJUG 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 Forge (Dev), mais utilisable par les

Ops ou la QA sous contrôle et conditions

Page 34: DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011

34

AlpesJUG DevOps – Jenkins QAF

Page 35: DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011

35

AlpesJUG DevOps – Jenkins QAF

Jenkins Agent

Jenkins Master

Jenkins Agent

Jenkins Agent

SQL Engine

App Server

Injector

Page 36: DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011

36

AlpesJUG DevOps – Jenkins QAF tests process

Page 37: DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011

37

AlpesJUG DevOps – Jenkins QAF Performances Jobs

Page 38: DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011

38

AlpesJUG DevOps – Jenkins QAF Performances tests

Page 39: DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011

39

AlpesJUG DevOps – Jenkins QAF Performances reports

Page 40: DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011

40

AlpesJUG 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 Ops

Page 41: DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011

41

AlpesJUG 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 - AlpesJug du 20 Septembre 2011

Les mains dans le cambouis Dédicace spéciale à mes amis les @lescastcodeurs

Page 43: DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011

43

AlpesJUG 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 - AlpesJug du 20 Septembre 2011

44

AlpesJUG 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 - AlpesJug du 20 Septembre 2011

45

AlpesJUG 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 - AlpesJug du 20 Septembre 2011

46

AlpesJUG 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 - AlpesJug du 20 Septembre 2011

47

AlpesJUG DevOps – JMXTrans – Graphite en situation

Graphite

@

JMXTrans

Page 48: DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011

48

AlpesJUG

{ "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 - AlpesJug du 20 Septembre 2011

49

AlpesJUG DevOps – Résultats Graphite

Page 50: DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011

50

AlpesJUG

Et voici le moment des questions et réponses …

si vous avez été sages

Page 51: DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011

51

AlpesJUG 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/