2. 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
3. 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
12. 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
13. Sh4rewith.me - V0.1
Petite Application de partage de fichiers
Webapp (war)
Système de fichier (/files)
lundi 23 avril 2012
14. 1 - La rache
Signaux d’alarme :
•
Ca marche chez moi !
•
Jusqu’ici tout va bien ...
•
J‘ai piscine
•
Attends je regarde dans le code
lundi 23 avril 2012
15. 1 - La rache
Signaux d’alarme :
•
Ca marche chez moi !
•
Jusqu’ici tout va bien ...
•
J‘ai piscine
•
Attends je regarde dans le code
tir ?
nsor
en te
m
C om
lundi 23 avril 2012
17. Le Joel Test
http://www.joelonsoftware.com/articles/fog0000000043.html
lundi 23 avril 2012
18. Le Joel Test
1- Utilisez-vous un gestionnaire de sources ?
http://www.joelonsoftware.com/articles/fog0000000043.html
lundi 23 avril 2012
19. 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
20. 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
21. 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
22. 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
23. 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
24. 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
25. 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
26. 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
27. 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
28. 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
29. 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
31. Le Joel Test
Moins de 10 ?
Alors vous avez de sérieux problèmes
lundi 23 avril 2012
32. Le Joel Test
Moins de 10 ?
Alors vous avez de sérieux problèmes
t2 000
Aoû
lundi 23 avril 2012
33. 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
34. 2 -La raison
Sh4rewith.me V1.0
War fabriqué par Maven/Jenkins/nexus
Mongo DB
Tomcat installé manuellement
lundi 23 avril 2012
35. 2 -La raison
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
lundi 23 avril 2012
38. 3 - La sérénité
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)
lundi 23 avril 2012
39. 3 - La sérénité
Sh4rewith.me V2.0
Petite Application de partage de fichiers
Démonstration
lundi 23 avril 2012
42. 4 – Des idées pour commencer
lundi 23 avril 2012
43. 4 - Des idées pour
commencer
Les meilleurs outils pour votre budget
28
lundi 23 avril 2012
44. 4 - Des idées pour
eXo Software Factory commencer
Subversion Jira
Git Fisheye/Crucible
Nexus Sonar
Jenkins Confluence
29
lundi 23 avril 2012
45. 4 - Des idées pour
commencer
Live Acceptance Server
lundi 23 avril 2012
46. 4 - Des idées pour
commencer
lundi 23 avril 2012
47. 4 - Des idées pour
commencer
Elargir le cadre d’utilisation de Jenkins
• Trigger plugin
• Un jenkins pour les Dev
• Un jenkins pour la QA
• Un jenkins pour les OPS
lundi 23 avril 2012
48. 4 - Des idées pour
Profiles Spring commencer
• Un livrable
• Un jeu de fonctionnalité
• Des ressources
• Une configuration
33
lundi 23 avril 2012
49. 4 - Des idées pour
Ressources : JNDI commencer
• 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
lundi 23 avril 2012
50. 4 - Des idées pour
Import + Propriété Système commencer
1 <import resource="config-${env}.xml"/>
1 System.setProperty("env", "TEST");
1 <jdbc:embedded-database 1 <jee:jndi-lookup jndi-name="jdbc/datasource"/>
2 id="dataSource"> 2
3 <jdbc:script
4 location="schema.sql"/>
5 <jdbc:script
6 location="test-data.sql"/>
7 </jdbc:embedded-database>
35
lundi 23 avril 2012
51. 4 - Des idées pour
@Profile commencer
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 }
36
lundi 23 avril 2012
52. 4 - Des idées pour
@Profile commencer
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 }
37
lundi 23 avril 2012
53. 4 - Des idées pour
<Profile /> commencer
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>
38
lundi 23 avril 2012
54. 4 - Des idées pour
Activation commencer
Mode «Dev»
1 System.setProperty("spring.profiles.active", "DEV");
Mode «Ops»
1 JAVA_OPTS="spring.profiles.active=DEV"
39
lundi 23 avril 2012
55. 4 - Des idées pour
commencer
L’approche packaging natif
40
lundi 23 avril 2012
56. 4 - Des idées pour
Packaging Natif commencer
• Coeur de la pile applicative des OS
• Gestion des dépendances
• Mise à jour automatique ou sélective
• Utilisé par les Ops
41
lundi 23 avril 2012
57. 4 - Des idées pour
Packaging sous Unix commencer
• RPM (Redhat Package Manager) sous RHEL/CentOS/ Fedora, SLES/OpenSuse,
Mandriva
• DEB sous Debian/Ubuntu
• PKG sous Solaris
42
lundi 23 avril 2012
58. 4 - Des idées pour
Qu’est-ce qu’un package ? commencer
• 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
lundi 23 avril 2012
59. 4 - Des idées pour
Points communs avec Maven commencer
• 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
lundi 23 avril 2012
60. 4 - Des idées pour
Un DSL pour les Ops commencer
• Simple
• Quelques macros
• SH powered
45
lundi 23 avril 2012
61. 4 - Des idées pour
commencer
Source d’un RPM
46
lundi 23 avril 2012
62. 4 - Des idées pour
AUTO-SUFFISANT commencer
• 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
lundi 23 avril 2012
63. 4 - Des idées pour
ET ENCORE commencer
• 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
lundi 23 avril 2012
64. 4 - Des idées pour
TypeS de RPMs commencer
49
lundi 23 avril 2012
65. 4 - Des idées pour
TypeS de RPMs commencer
RPMs OS
RPMs OS
RPMs OS
49
lundi 23 avril 2012
66. 4 - Des idées pour
TypeS de RPMs commencer
RPMs OS
RPMs OS
RPMs OS
Fournis par votre distribution Linux
49
lundi 23 avril 2012
67. 4 - Des idées pour
TypeS de RPMs commencer
RPMs OS
RPMs OS
RPMs OS
Fournis par votre distribution Linux
RPMs Applicatif
RPMs Applicatif
RPMs Applicatif
49
lundi 23 avril 2012
68. 4 - Des idées pour
TypeS de RPMs commencer
RPMs OS
RPMs OS
RPMs OS
Fournis par votre distribution Linux
RPMs Applicatif
RPMs Applicatif
RPMs Applicatif
Produits par les Devs & Ops
49
lundi 23 avril 2012
69. 4 - Des idées pour
TypeS de RPMs commencer
RPMs OS
RPMs OS
RPMs OS
Fournis par votre distribution Linux
RPMs Applicatif
RPMs Applicatif
RPMs Applicatif
RPMs
RPMs
RPMs
RPMs
Configuration
Configuration
Configuration Produits par les Devs & Ops
Configuration
49
lundi 23 avril 2012
70. 4 - Des idées pour
TypeS de RPMs commencer
RPMs OS
RPMs OS
RPMs OS
Fournis par votre distribution Linux
RPMs Applicatif
RPMs Applicatif
RPMs Applicatif
RPMs
RPMs
RPMs
RPMs
Configuration
Configuration
Configuration Produits par les Devs & Ops
Configuration
Produits par les Ops
49
lundi 23 avril 2012
71. 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)
50
lundi 23 avril 2012
72. 4 - Des idées pour
JMX et le Monitoring commencer
A ne pas négliger, utilisez le en permanence
- JMX : MBeans fonctionnels
- VisualVM et ses plugins
- JMX Trans - Graphite (monitoring light)
DevOpsMunin, JavaMelody, Zabbix, Jolokia (rest)
- – Résultats Graphite AlpesJUG
lundi 23 avril 2012
73. 4 - Des idées pour
Et Chef / Puppet ? commencer
-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",
}
lundi 23 avril 2012
74. 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
53
lundi 23 avril 2012
75. Veewee
• Extension à Vagrant
• Permet d’automatiser la création de Box
# Installation
$ (sudo) gem install veewee
54
lundi 23 avril 2012
76. 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 ...)
55
lundi 23 avril 2012
77. 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 ...)
56
lundi 23 avril 2012