DevOps illustré : la jungle de la configuration d'une application

1,238 views
1,166 views

Published on

L'approche DevOps essaie de rapprocher les développeurs et les administrateurs système, ce Quickie illustre le cas de la configuration des applications en présentant le besoin d'amélioration de la gestion des paramètres de configuration d'une application, avec une solution possible.
Notre codes contient beaucoup de paramètres : des options, des URL, des Emails, ... ces valeurs changent fréquemment entre l'environnement de production, de recette, le poste de développeur. Gérés manuellement ils causent beaucoup de bugs évitables.

Quels sont les principes d'une bonne gouvernance des paramètres ?
Comment éviter un bricolage manuel et voué à générer des erreurs d'utilisation ?
Comment avoir une documentation du paramétrage de votre application toujours à jour ?
Comment connaitre l'origine de la valeur utilisée (paramètre JVM, variable d'environnement, valeur par défaut) ?
Le but est une prise de conscience sur le sujet, et la présentation d'une mise en oeuvre simple.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,238
On SlideShare
0
From Embeds
0
Number of Embeds
14
Actions
Shares
0
Downloads
15
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

DevOps illustré : la jungle de la configuration d'une application

  1. 1. DevOps illustré :La jungle de la configuration d’une application par Dimitri Baeli et Gilles Duguglielmo @dbaeli & @gdigugli 1
  2. 2. Speakers @dbaeli @gdigugli• Chien de berger Agile pour • Dévelopeur java depuis 1999 • Architecte pour • ILOG - IBM• VP Quality eXo Platform  librairie graphique 2D• R&D Prima-Solutions  moteur de règles • Prima-Solutions  plate-forme de services pour J2EE  code génération de modèle métier 2
  3. 3. La jungle DevOps La configuration à chaud d’une application est complexe et difficile à maîtriser La configuration statique est très commune dans les systèmes d’exploitation La gouvernance de la configuration des applications est assez mal maîtrisée XML est un langage très pénible pour configurer une application depuis une console 3
  4. 4. Des imbroglios DevOps: le changement d’un paramètre L’url du webservice de paiement change la nuit prochaine. Comment je change ça sur l’application en production ? Est-ce qu’on peut changer ça dans le script de lancement ? 4
  5. 5. Des imbroglios DevOps: le changement d’un paramètre Tu mets à jour le paramètrage dans le La valeur est dans la fichier web.xml à tablel’intérieur du WAR et tu CONFIG_SETTINGS,redémarre l’application édite la valeur de la clé ws_urlOn doit faire un build de l’application avec la nouvelle URL 5
  6. 6. Des imbroglios DevOps: le changement d’un paramètre Je n’ai pas accès à la Est-ce qu’il y a un base de donnée, il faut outil pour faire ca ? appeler le DBAEst-ce qu’on peut changer ça avec un script sh Comment j’édite le fichier web.xml ? 6
  7. 7. Des imbroglios DevOps:la gouvernance de la configuration Quels sont les paramètres de l’application et leurs valeurs de production ? Quelles variables de JVM sont utilisées par notre application ? 7
  8. 8. Des imbroglios DevOps:la gouvernance de la configuration Je vais demander à l’équipe de dévelopement et vous transmettre une feuille Excel Je vais faire un grep dans le code source et chercher les occurences de System.getProperty() 8
  9. 9. Qu’est-ce qu’on peut faire ? Expliciter la configuration dans le code Rendre les variables de configuration aussi simple à manipuler que des variables de classes Détecter les changements dans le code lors de la mise en production (MeP) d’une nouvelle version Fournir de la documentation à jour pour chaque MeP Utiliser les méchanismes standards de l’OS pour faire de la configuration 9
  10. 10. Action ! 10
  11. 11. Les couches de configuration OS export webservice_url=http://www.conf4j.org Shell Launcher script -Dwebservice_url=http://www.conf4j.org JVM webservice_url=http://www.conf4j.org Configuration file API CONF.setValue(webservice_url,‘http://www.conf4j.org’); Start here // Un seul mode de lecture au runtime : final String value = CONF.getValue(overriding ConfElements.webservice_url);
  12. 12. La gouvernance des paramètres  Utiliser des champs dans une classe unique  Annoter les champs  Les clefs sont injectées 12
  13. 13. Scope d’un paramètre scope déclare l’utilisation de chaque variable lors de son exécution.  Vérfication au runtime devPurposeOnly indique que ce paramètre doit être changé webapp unit_test lors de la MeP.devoxx_base_url X X  Export d’un tempate dedevoxx_home_url X X configuration pour la MePdevoxx_agenda_url X Xdevoxx_unittest_url X 13
  14. 14. Accès à l’environnement  Semblable à System.getProperty() 14
  15. 15. Démo 15
  16. 16. Ceci n’est pas une librairie Just Fork it ! https://github.com/dbaeli/conf4j 16

×