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

16
1 par Dimitri Baeli et Gilles Duguglielmo @dbaeli & @gdigugli DevOps illustré : La jungle de la configuration d’une application

description

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.

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

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

1

par Dimitri Baeli et Gilles Duguglielmo@dbaeli & @gdigugli

DevOps illustré :La jungle de la

configuration d’une application

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

2

Speakers

@dbaeli

• Chien de berger Agile pour

• VP Quality eXo Platform• R&D Prima-Solutions

@gdigugli

• Dévelopeur java depuis 1999• Architecte pour• ILOG - IBM librairie graphique 2D moteur de règles• Prima-Solutions plate-forme de services pour

J2EE code génération de modèle

métier

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

3

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

La jungle DevOps

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

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 ?

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

5

Tu mets à jour le paramètrage dans le

fichier web.xml à l’intérieur du WAR et

tu redémarre l’application

On doit faire un build de l’application avec la

nouvelle URL

La valeur est dans la table

CONFIG_SETTINGS, édite la valeur de la clé ws_url

Des imbroglios DevOps:le changement d’un paramètre

1 2

3

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

6

Je n’ai pas accès à la base de donnée, il faut appeler le

DBA

Comment j’édite le fichier web.xml ?

Est-ce qu’il y a un outil pour faire

ca ?

Est-ce qu’on peut changer ça avec un

script sh

Des imbroglios DevOps:le changement d’un paramètre

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

7

Quels sont les paramètres de l’application et leurs valeurs de production ?

Quelles variables de JVM sont utilisées par notre

application ?

Des imbroglios DevOps:la gouvernance de la configuration

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

8

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()

Des imbroglios DevOps:la gouvernance de la configuration

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

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

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

10

Action !

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

OSShell

Launcher script

JVM

Configuration file

API

Start here

export webservice_url=http://www.conf4j.org

-Dwebservice_url=http://www.conf4j.org

webservice_url=http://www.conf4j.org

CONF.setValue(webservice_url,‘http://www.conf4j.org’);

// Un seul mode de lecture au runtime :final String value = CONF.getValue(

ConfElements.webservice_url);overriding

Les couches de configuration

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

12

La gouvernance des paramètres

Utiliser des champs dans une classe unique

Annoter les champs

Les clefs sont injectées

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

13

Scope d’un paramètre

webapp

unit_test

devoxx_base_url X Xdevoxx_home_url X Xdevoxx_agenda_url X Xdevoxx_unittest_url X

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é lors de la MeP. Export d’un tempate de

configuration pour la MeP

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

14

Accès à l’environnement

Semblable à System.getProperty()

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

15

Démo

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

16

https://github.com/dbaeli/conf4j

Ceci n’est pas une librairieJust Fork it !