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

Post on 21-Jun-2015

2.017 views 1 download

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

Devops Retour d’experience

AlpesJug Mardi 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: henri.gomez@gmail.com

»  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

3

AlpesJUG Devops : une image vaut mille mots

4

AlpesJUG Devops : Allo ?

Courtesy @builddoctor

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

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

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

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

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

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

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

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

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

14

AlpesJUG Devops – Mets de l’huile

•  Connaître l’autre •  Travaillons ensemble

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é

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

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)

Retour d’expérience eXo Platform

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)

20

AlpesJUG Devops – eXo Platform

•  Applications Java » AIO, PLF, Cloud IDE

•  Environnement » Linux, MySQL, PostgreSQL, DB2, Oracle » Local, dédié et Cloud (AWS)

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

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 »

23

AlpesJUG Devops – Outils communs

•  Venus de la Prod » Généralisation de JMX (exposition Mbeans) » VisualVM

Non aux boites noires !

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 !

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.

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

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

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é

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

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

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.

32

AlpesJUG DevOps – Jenkins SWF-CD (deployment)

Jenkins Agent

Jenkins Master

Jenkins Agent

Jenkins Agent

SQL Engine

App Server

HTTP Frontend

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

34

AlpesJUG DevOps – Jenkins QAF

35

AlpesJUG DevOps – Jenkins QAF

Jenkins Agent

Jenkins Master

Jenkins Agent

Jenkins Agent

SQL Engine

App Server

Injector

36

AlpesJUG DevOps – Jenkins QAF tests process

37

AlpesJUG DevOps – Jenkins QAF Performances Jobs

38

AlpesJUG DevOps – Jenkins QAF Performances tests

39

AlpesJUG DevOps – Jenkins QAF Performances reports

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

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.

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

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

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

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

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

47

AlpesJUG DevOps – JMXTrans – Graphite en situation

Graphite

@

JMXTrans

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 } ] }

49

AlpesJUG DevOps – Résultats Graphite

50

AlpesJUG

Et voici le moment des questions et réponses …

si vous avez été sages

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/