Transcript
Page 1: Devoxx Devops University 2012

Les mercenairesdu Devops !

lundi 23 avril 2012

Page 2: Devoxx Devops University 2012

En route pour Devops

1 : La rache

2 : La raison

3 : La sérénité

4 : Des ${idées} et ${outils} pour y arriver.

lundi 23 avril 2012

Page 3: Devoxx Devops University 2012

Speakers

Dimitri Baeli : Chien de berger agile chez Courtanet

Gildas Cuisinier : Hirondelle du Printemps chez Sfeir Benelux

Henri Gomez : Maitre CI deuxième dan chez Axway

Pierre-Antoine Grégoire : Chewbacca chez Agile Partner

Arnaud Héritier : PHD GIT chez eXo Platform

lundi 23 avril 2012

Page 4: Devoxx Devops University 2012

Les principes Devops

4lundi 23 avril 2012

Page 5: Devoxx Devops University 2012

lundi 23 avril 2012

Page 6: Devoxx Devops University 2012

Development is about pushing changes

lundi 23 avril 2012

Page 7: Devoxx Devops University 2012

lundi 23 avril 2012

Page 8: Devoxx Devops University 2012

lundi 23 avril 2012

Page 9: Devoxx Devops University 2012

lundi 23 avril 2012

Page 10: Devoxx Devops University 2012

lundi 23 avril 2012

Page 11: Devoxx Devops University 2012

1 - La rache

lundi 23 avril 2012

Page 12: Devoxx Devops University 2012

1 - La rache

•Livrables fabriqués à la main•Sources non sécurisées•Modification des livrables à la mise en prod•Binaire fabriqué juste à temps•Tests en prod

lundi 23 avril 2012

Page 13: Devoxx Devops University 2012

Sh4rewith.me - V0.1

Petite Application de partage de fichiers

Webapp (war)Système de fichier (/files)

lundi 23 avril 2012

Page 14: Devoxx Devops University 2012

Signaux d’alarme :• Ca marche chez moi !• Jusqu’ici tout va bien ...• J‘ai piscine• Attends je regarde dans le code

1 - La rache

lundi 23 avril 2012

Page 15: Devoxx Devops University 2012

Signaux d’alarme :• Ca marche chez moi !• Jusqu’ici tout va bien ...• J‘ai piscine• Attends je regarde dans le code

1 - La rache

Comment en sortir ?

lundi 23 avril 2012

Page 16: Devoxx Devops University 2012

2 - La raison

lundi 23 avril 2012

Page 17: Devoxx Devops University 2012

Le Joel Test

http://www.joelonsoftware.com/articles/fog0000000043.html

lundi 23 avril 2012

Page 18: Devoxx Devops University 2012

Le Joel Test

1- Utilisez-vous un gestionnaire de sources ?

http://www.joelonsoftware.com/articles/fog0000000043.html

lundi 23 avril 2012

Page 19: Devoxx Devops University 2012

Le Joel Test

1- Utilisez-vous un gestionnaire de sources ? 2- Vos binaires sont-ils assemblés en une fois ?

http://www.joelonsoftware.com/articles/fog0000000043.html

lundi 23 avril 2012

Page 20: Devoxx Devops University 2012

Le Joel Test

1- Utilisez-vous un gestionnaire de sources ? 2- Vos binaires sont-ils assemblés en une fois ? 3- Vos binaires sont-ils produits quotidiennement ?

http://www.joelonsoftware.com/articles/fog0000000043.html

lundi 23 avril 2012

Page 21: Devoxx Devops University 2012

Le Joel Test

1- Utilisez-vous un gestionnaire de sources ? 2- Vos binaires sont-ils assemblés en une fois ? 3- Vos binaires sont-ils produits quotidiennement ? 4- Avez-vous un gestionnaire d'anomalies ?

http://www.joelonsoftware.com/articles/fog0000000043.html

lundi 23 avril 2012

Page 22: Devoxx Devops University 2012

Le Joel Test

1- Utilisez-vous un gestionnaire de sources ? 2- Vos binaires sont-ils assemblés en une fois ? 3- Vos binaires sont-ils produits quotidiennement ? 4- Avez-vous un gestionnaire d'anomalies ? 5- Le code est-il corrigé avant d'être étendu ?

http://www.joelonsoftware.com/articles/fog0000000043.html

lundi 23 avril 2012

Page 23: Devoxx Devops University 2012

Le Joel Test

1- Utilisez-vous un gestionnaire de sources ? 2- Vos binaires sont-ils assemblés en une fois ? 3- Vos binaires sont-ils produits quotidiennement ? 4- Avez-vous un gestionnaire d'anomalies ? 5- Le code est-il corrigé avant d'être étendu ? 6- Avez-vous un planning à jour ?

http://www.joelonsoftware.com/articles/fog0000000043.html

lundi 23 avril 2012

Page 24: Devoxx Devops University 2012

Le Joel Test

1- Utilisez-vous un gestionnaire de sources ? 2- Vos binaires sont-ils assemblés en une fois ? 3- Vos binaires sont-ils produits quotidiennement ? 4- Avez-vous un gestionnaire d'anomalies ? 5- Le code est-il corrigé avant d'être étendu ? 6- Avez-vous un planning à jour ? 7- Avez-vous des spécifications ?

http://www.joelonsoftware.com/articles/fog0000000043.html

lundi 23 avril 2012

Page 25: Devoxx Devops University 2012

Le Joel Test

1- Utilisez-vous un gestionnaire de sources ? 2- Vos binaires sont-ils assemblés en une fois ? 3- Vos binaires sont-ils produits quotidiennement ? 4- Avez-vous un gestionnaire d'anomalies ? 5- Le code est-il corrigé avant d'être étendu ? 6- Avez-vous un planning à jour ? 7- Avez-vous des spécifications ? 8- Vos développeurs sont-ils dans un lieu calme ?

http://www.joelonsoftware.com/articles/fog0000000043.html

lundi 23 avril 2012

Page 26: Devoxx Devops University 2012

Le Joel Test

1- Utilisez-vous un gestionnaire de sources ? 2- Vos binaires sont-ils assemblés en une fois ? 3- Vos binaires sont-ils produits quotidiennement ? 4- Avez-vous un gestionnaire d'anomalies ? 5- Le code est-il corrigé avant d'être étendu ? 6- Avez-vous un planning à jour ? 7- Avez-vous des spécifications ? 8- Vos développeurs sont-ils dans un lieu calme ? 9- Avez-vous les meilleurs outils pour votre budget ?

http://www.joelonsoftware.com/articles/fog0000000043.html

lundi 23 avril 2012

Page 27: Devoxx Devops University 2012

Le Joel Test

1- Utilisez-vous un gestionnaire de sources ? 2- Vos binaires sont-ils assemblés en une fois ? 3- Vos binaires sont-ils produits quotidiennement ? 4- Avez-vous un gestionnaire d'anomalies ? 5- Le code est-il corrigé avant d'être étendu ? 6- Avez-vous un planning à jour ? 7- Avez-vous des spécifications ? 8- Vos développeurs sont-ils dans un lieu calme ? 9- Avez-vous les meilleurs outils pour votre budget ? 10- Avez-vous des testeurs ?

http://www.joelonsoftware.com/articles/fog0000000043.html

lundi 23 avril 2012

Page 28: Devoxx Devops University 2012

Le Joel Test

1- Utilisez-vous un gestionnaire de sources ? 2- Vos binaires sont-ils assemblés en une fois ? 3- Vos binaires sont-ils produits quotidiennement ? 4- Avez-vous un gestionnaire d'anomalies ? 5- Le code est-il corrigé avant d'être étendu ? 6- Avez-vous un planning à jour ? 7- Avez-vous des spécifications ? 8- Vos développeurs sont-ils dans un lieu calme ? 9- Avez-vous les meilleurs outils pour votre budget ? 10- Avez-vous des testeurs ? 11- Les recrues écrivent-il du code ?

http://www.joelonsoftware.com/articles/fog0000000043.html

lundi 23 avril 2012

Page 29: Devoxx Devops University 2012

Le Joel Test

1- Utilisez-vous un gestionnaire de sources ? 2- Vos binaires sont-ils assemblés en une fois ? 3- Vos binaires sont-ils produits quotidiennement ? 4- Avez-vous un gestionnaire d'anomalies ? 5- Le code est-il corrigé avant d'être étendu ? 6- Avez-vous un planning à jour ? 7- Avez-vous des spécifications ? 8- Vos développeurs sont-ils dans un lieu calme ? 9- Avez-vous les meilleurs outils pour votre budget ? 10- Avez-vous des testeurs ? 11- Les recrues écrivent-il du code ? 12- Les développeurs font-ils une démonstration ?

http://www.joelonsoftware.com/articles/fog0000000043.html

lundi 23 avril 2012

Page 30: Devoxx Devops University 2012

Le Joel Test

Moins de 10 ?

lundi 23 avril 2012

Page 31: Devoxx Devops University 2012

Alors vous avez de sérieux problèmes

Le Joel Test

Moins de 10 ?

lundi 23 avril 2012

Page 32: Devoxx Devops University 2012

Alors vous avez de sérieux problèmes

Le Joel Test

Moins de 10 ?

Août 2000

lundi 23 avril 2012

Page 33: Devoxx Devops University 2012

2 -La raison

Pratiques•Reproductibilité des binaires•Livrables très fréquents (Intégration Continue)• Intégration continue, Tests unitaires visibles•Bonne gestion des bugs/taches• Inspection du code dans l’IDE

lundi 23 avril 2012

Page 34: Devoxx Devops University 2012

Sh4rewith.me V1.0

War fabriqué par Maven/Jenkins/nexusMongo DB

Tomcat installé manuellement

2 -La raison

lundi 23 avril 2012

Page 35: Devoxx Devops University 2012

Il reste des gros soucis :

• La mise en production est un événement rare• Eux / nous (Marketing / Dev / QA / Prod)• Pas de partage des risques• Manque de vision sur les métriques & Monitoring

2 -La raison

lundi 23 avril 2012

Page 36: Devoxx Devops University 2012

3 - La sérénité

lundi 23 avril 2012

Page 37: Devoxx Devops University 2012

lundi 23 avril 2012

Page 38: Devoxx Devops University 2012

Objectifs :• Cycle court entre demande et mise en production• « Contribution d’amélioration » plutôt que « commit »• Gestion complète de la configuration (source, conf, OS)• Gestion de la dette technique• Automatisation des étapes à risque• Monitoring outillé (dev & ops)

3 - La sérénité

lundi 23 avril 2012

Page 39: Devoxx Devops University 2012

Sh4rewith.me V2.0

Petite Application de partage de fichiers

Démonstration

3 - La sérénité

lundi 23 avril 2012

Page 40: Devoxx Devops University 2012

Université DevopsLe retour

lundi 23 avril 2012

Page 41: Devoxx Devops University 2012

Rappel des principes Devops

26lundi 23 avril 2012

Page 42: Devoxx Devops University 2012

4 – Des idées pour commencer

lundi 23 avril 2012

Page 43: Devoxx Devops University 2012

Les meilleurs outils pour votre budget

28

4 - Des idées pour commencer

lundi 23 avril 2012

Page 44: Devoxx Devops University 2012

eXo Software Factory

Subversion

Git

Nexus

Jenkins

Jira

Fisheye/Crucible

Sonar

Confluence

29

4 - Des idées pour commencer

lundi 23 avril 2012

Page 45: Devoxx Devops University 2012

Live Acceptance Server

4 - Des idées pour commencer

lundi 23 avril 2012

Page 46: Devoxx Devops University 2012

4 - Des idées pour commencer

lundi 23 avril 2012

Page 47: Devoxx Devops University 2012

Elargir le cadre d’utilisation de Jenkins

• Trigger plugin• Un jenkins pour les Dev• Un jenkins pour la QA• Un jenkins pour les OPS

4 - Des idées pour commencer

lundi 23 avril 2012

Page 48: Devoxx Devops University 2012

• Un livrable

• Un jeu de fonctionnalité

• Des ressources

• Une configuration

33

Profiles Spring4 - Des idées pour

commencer

lundi 23 avril 2012

Page 49: Devoxx Devops University 2012

• JNDI

• Définition des ressources dans le serveur

• Récupération de celle-ci par code dans l’application

•Délégation aux Ops de la configuration de production

•Configuration différentes en mode «non déploié»

34

Ressources : JNDI4 - Des idées pour

commencer

lundi 23 avril 2012

Page 50: Devoxx Devops University 2012

1 <import resource="config-${env}.xml"/>

1 System.setProperty("env", "TEST");

1 <jdbc:embedded-database

2 id="dataSource">

3 <jdbc:script

4 location="schema.sql"/>

5 <jdbc:script

6 location="test-data.sql"/>

7 </jdbc:embedded-database>

1 <jee:jndi-lookup jndi-name="jdbc/datasource"/>

2

Import + Propriété Système

35

4 - Des idées pour commencer

lundi 23 avril 2012

Page 51: Devoxx Devops University 2012

36

1 @Configuration 2 @Import(ApplicationDevConfig.class) 3 public class ApplicationConfig { 4 5 @Bean 6 DataSource dataSource(){ 7 JndiObjectFactoryBean result = new JndiObjectFactoryBean(); 8 result.setJndiName("jdbc/dataSource"); 9 return (DataSource) result.getObject();10 }11 }

@Profile 4 - Des idées pour

commencer

lundi 23 avril 2012

Page 52: Devoxx Devops University 2012

37

1 @Configuration 2 @Profile("dev") 3 public class ApplicationDevConfig { 4 5 @Bean 6 DataSource dataSource() { 7 EmbeddedDatabaseBuilder builder = new

EmbeddedDatabaseBuilder(); 8 EmbeddedDatabase db = ... 9 return db;10 }11 }

@Profile 4 - Des idées pour

commencer

lundi 23 avril 2012

Page 53: Devoxx Devops University 2012

38

1 <beans profile="dev">2 <jdbc:embedded-database id="dataSource">3 <jdbc:script location="schema.sql"/>4 <jdbc:script location="test-data.sql"/>5 </jdbc:embedded-database>6 </beans>

<Profile /> 4 - Des idées pour

commencer

lundi 23 avril 2012

Page 54: Devoxx Devops University 2012

39

Activation

1 System.setProperty("spring.profiles.active", "DEV");

1 JAVA_OPTS="spring.profiles.active=DEV"

Mode «Dev»

Mode «Ops»

4 - Des idées pour commencer

lundi 23 avril 2012

Page 55: Devoxx Devops University 2012

L’approche packaging natif

40

4 - Des idées pour commencer

lundi 23 avril 2012

Page 56: Devoxx Devops University 2012

Packaging Natif

• Coeur de la pile applicative des OS

• Gestion des dépendances

• Mise à jour automatique ou sélective

• Utilisé par les Ops

41

4 - Des idées pour commencer

lundi 23 avril 2012

Page 57: Devoxx Devops University 2012

Packaging sous Unix

• RPM (Redhat Package Manager) sous RHEL/CentOS/ Fedora, SLES/OpenSuse, Mandriva

• DEB sous Debian/Ubuntu

• PKG sous Solaris

42

4 - Des idées pour commencer

lundi 23 avril 2012

Page 58: Devoxx Devops University 2012

Qu’est-ce qu’un package ?

• Un fichier (.rpm, .deb)

• Des données (fichiers et programmes)

• Du code exécuté lors de l’installation, la mise à jour ou la suppression du package

• Lié à une architecture (Intel, ARM, PowerPC en 32 ou 64bits) ou neutre (exemple: une application Java)

43

4 - Des idées pour commencer

lundi 23 avril 2012

Page 59: Devoxx Devops University 2012

Points communs avec Maven

• Construction par DSL simple

• Quelques commandes pour les manipuler (rpm, apt-get)

• Gestion des dépendances pour la construction mais aussi pour l’exécution

• Dépôts de packages, accessible en local ou via HTTP

• Nexus et Artifactory peuvent servir de dépôts RPM

• Mises à jour automatiques ou contrôlées

44

4 - Des idées pour commencer

lundi 23 avril 2012

Page 60: Devoxx Devops University 2012

Un DSL pour les Ops

• Simple

• Quelques macros

• SH powered

45

4 - Des idées pour commencer

lundi 23 avril 2012

Page 61: Devoxx Devops University 2012

Source d’un RPM

46

4 - Des idées pour commencer

lundi 23 avril 2012

Page 62: Devoxx Devops University 2012

AUTO-SUFFISANT

• Un package est auto-suffisant

• Programmes principaux et annexes (ex: logrotate)

• Données

• Comptes utilisateurs

• Contrôle total sur le cycle de vie ‘en situation’

47

4 - Des idées pour commencer

lundi 23 avril 2012

Page 63: Devoxx Devops University 2012

ET ENCORE

• Un processus déterministe et donc réplicable

• Peut être utilisé par Puppet ou Chef

• Des artifacts centralisables comme pour Maven

• Une approche composant runtime

48

4 - Des idées pour commencer

lundi 23 avril 2012

Page 64: Devoxx Devops University 2012

TypeS de RPMs

49

4 - Des idées pour commencer

lundi 23 avril 2012

Page 65: Devoxx Devops University 2012

TypeS de RPMs

RPMs OSRPMs OSRPMs OS

49

4 - Des idées pour commencer

lundi 23 avril 2012

Page 66: Devoxx Devops University 2012

TypeS de RPMs

RPMs OSRPMs OSRPMs OS

Fournis par votre distribution Linux

49

4 - Des idées pour commencer

lundi 23 avril 2012

Page 67: Devoxx Devops University 2012

TypeS de RPMs

RPMs OSRPMs OSRPMs OS

RPMs ApplicatifRPMs ApplicatifRPMs ApplicatifFournis par votre distribution Linux

49

4 - Des idées pour commencer

lundi 23 avril 2012

Page 68: Devoxx Devops University 2012

TypeS de RPMs

RPMs OSRPMs OSRPMs OS

RPMs ApplicatifRPMs ApplicatifRPMs ApplicatifFournis par votre distribution Linux

Produits par les Devs & Ops

49

4 - Des idées pour commencer

lundi 23 avril 2012

Page 69: Devoxx Devops University 2012

TypeS de RPMs

RPMs OSRPMs OSRPMs OS

RPMs ApplicatifRPMs ApplicatifRPMs Applicatif

RPMs Configuration

RPMs Configuration

RPMs Configuration

RPMs Configuration

Fournis par votre distribution Linux

Produits par les Devs & Ops

49

4 - Des idées pour commencer

lundi 23 avril 2012

Page 70: Devoxx Devops University 2012

TypeS de RPMs

RPMs OSRPMs OSRPMs OS

RPMs ApplicatifRPMs ApplicatifRPMs Applicatif

RPMs Configuration

RPMs Configuration

RPMs Configuration

RPMs Configuration

Fournis par votre distribution Linux

Produits par les Devs & Ops

Produits par les Ops

49

4 - Des idées pour commencer

lundi 23 avril 2012

Page 71: Devoxx Devops University 2012

DevOps Native Packages for you !

• http://code.google.com/p/devops-incubator/

• RPMs pour Subversion, GitBlit, Jenkins, Nexus, Sonar

• Pour OpenSuse 12.1, et autres (ouvert à contribution)

50lundi 23 avril 2012

Page 72: Devoxx Devops University 2012

49

AlpesJUG DevOps – Résultats Graphite

A ne pas négliger, utilisez le en permanence

- JMX : MBeans fonctionnels- VisualVM et ses plugins- JMX Trans - Graphite (monitoring light)- Munin, JavaMelody, Zabbix, Jolokia (rest)

JMX et le Monitoring4 - Des idées pour

commencer

lundi 23 avril 2012

Page 73: Devoxx Devops University 2012

- Installation scriptée et historisée d’un serveur- Garantie de la maitrise des serveurs déployés- Scalabilité, reproductibilité, - Puppet est très structurant, Chef est plus libre

Exemple :

common::archive::tar-gz{"/opt/apache-tomcat-${tomcat_version}/.installed": source => $tomcaturl, target => "/opt", }

Et Chef / Puppet ?4 - Des idées pour

commencer

lundi 23 avril 2012

Page 74: Devoxx Devops University 2012

Vagrant

• Surcouche à Oracle VirtualBox et ses outils en ligne de commande

• Permet de partager des VMs et leur configuration (aka box)

• VBox préconfigurées pour supporter Chef & Puppet

# Installation$ (sudo) gem install vagrant

53lundi 23 avril 2012

Page 75: Devoxx Devops University 2012

Veewee

• Extension à Vagrant

• Permet d’automatiser la création de Box

# Installation$ (sudo) gem install veewee

54lundi 23 avril 2012

Page 76: Devoxx Devops University 2012

Puppet - Après quelques jours (et nuits) d’utilisation

• J’aime

• La capacité à modéliser proprement ses environnements (modèle déclaratif du DSL)

• La bibliographie associée

• La communauté avec beaucoup de ressources sur le Net

• La capacité d’extensibilité de l’outil (via modules, librairies/plugins ...)

55lundi 23 avril 2012

Page 77: Devoxx Devops University 2012

Puppet - Après quelques jours (et nuits) d’utilisation

• J’aime moins

• Les documentations officielles (fouillis, incomplètes, ...)

• Le manque de moyen pour partager (réutiliser/contribuer) des modules

• Les limitations (pas de move, pas de wget ...) et “excentricités” du DSL

• Les manques de justifications de certaines contraintes/limitations du DSL (pas de mkdir -p ...)

56lundi 23 avril 2012

Page 78: Devoxx Devops University 2012

Merci !

lundi 23 avril 2012

Page 79: Devoxx Devops University 2012

References

• Patrck Debois pour l’invention du terme DevOps : http://www.jedi.be/blog/• Principes DevOps : http://dev2ops.org/blog/2010/2/22/what-is-devops.html• Projet SWF en mode DevOps : http://code.google.com/p/devops-incubator/• http://www.slideshare.net/carlossg/from-dev-to-devops-apachecon-na-2011•

lundi 23 avril 2012