Les mercenairesdu Devops !
lundi 23 avril 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
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
Les principes Devops
4lundi 23 avril 2012
lundi 23 avril 2012
Development is about pushing changes
lundi 23 avril 2012
lundi 23 avril 2012
lundi 23 avril 2012
lundi 23 avril 2012
lundi 23 avril 2012
1 - La rache
lundi 23 avril 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
Sh4rewith.me - V0.1
Petite Application de partage de fichiers
Webapp (war)Système de fichier (/files)
lundi 23 avril 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
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
2 - La raison
lundi 23 avril 2012
Le Joel Test
http://www.joelonsoftware.com/articles/fog0000000043.html
lundi 23 avril 2012
Le Joel Test
1- Utilisez-vous un gestionnaire de sources ?
http://www.joelonsoftware.com/articles/fog0000000043.html
lundi 23 avril 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
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
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
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
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
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
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
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
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
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
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
Le Joel Test
Moins de 10 ?
lundi 23 avril 2012
Alors vous avez de sérieux problèmes
Le Joel Test
Moins de 10 ?
lundi 23 avril 2012
Alors vous avez de sérieux problèmes
Le Joel Test
Moins de 10 ?
Août 2000
lundi 23 avril 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
Sh4rewith.me V1.0
War fabriqué par Maven/Jenkins/nexusMongo DB
Tomcat installé manuellement
2 -La raison
lundi 23 avril 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
3 - La sérénité
lundi 23 avril 2012
lundi 23 avril 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
Sh4rewith.me V2.0
Petite Application de partage de fichiers
Démonstration
3 - La sérénité
lundi 23 avril 2012
Université DevopsLe retour
lundi 23 avril 2012
Rappel des principes Devops
26lundi 23 avril 2012
4 – Des idées pour commencer
lundi 23 avril 2012
Les meilleurs outils pour votre budget
28
4 - Des idées pour commencer
lundi 23 avril 2012
eXo Software Factory
Subversion
Git
Nexus
Jenkins
Jira
Fisheye/Crucible
Sonar
Confluence
29
4 - Des idées pour commencer
lundi 23 avril 2012
Live Acceptance Server
4 - Des idées pour commencer
lundi 23 avril 2012
4 - Des idées pour commencer
lundi 23 avril 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
• Un livrable
• Un jeu de fonctionnalité
• Des ressources
• Une configuration
33
Profiles Spring4 - Des idées pour
commencer
lundi 23 avril 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
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
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
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
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
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
L’approche packaging natif
40
4 - Des idées pour commencer
lundi 23 avril 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
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
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
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
Un DSL pour les Ops
• Simple
• Quelques macros
• SH powered
45
4 - Des idées pour commencer
lundi 23 avril 2012
Source d’un RPM
46
4 - Des idées pour commencer
lundi 23 avril 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
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
TypeS de RPMs
49
4 - Des idées pour commencer
lundi 23 avril 2012
TypeS de RPMs
RPMs OSRPMs OSRPMs OS
49
4 - Des idées pour commencer
lundi 23 avril 2012
TypeS de RPMs
RPMs OSRPMs OSRPMs OS
Fournis par votre distribution Linux
49
4 - Des idées pour commencer
lundi 23 avril 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
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
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
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
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
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
- 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
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
Veewee
• Extension à Vagrant
• Permet d’automatiser la création de Box
# Installation$ (sudo) gem install veewee
54lundi 23 avril 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
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
Merci !
lundi 23 avril 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