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


                                                 1
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
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
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
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 à                      table
l’intérieur du WAR et tu          CONFIG_SETTINGS,
redémarre l’application            édite la valeur de la
                                        clé ws_url

On doit faire un build de
 l’application avec la
     nouvelle URL



                                                           5
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 DBA




Est-ce qu’on peut changer
   ça avec un script sh
                                          Comment j’édite le
                                          fichier web.xml ?


                                                               6
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
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
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
Action !




           10
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);
La gouvernance des paramètres
                    Utiliser des champs
                     dans une classe
                     unique

                    Annoter les champs

                    Les clefs sont
                     injectées



                                           12
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 de
devoxx_home_url         X          X          configuration pour la MeP
devoxx_agenda_url       X          X
devoxx_unittest_url                X
                                                                            13
Accès à l’environnement

                Semblable à
                 System.getProperty()




                                        14
Démo




       15
Ceci n’est pas une librairie
       Just Fork it !
     https://github.com/dbaeli/conf4j




                                        16

Mais conteúdo relacionado

Mais procurados

eServices-Tp5: api management
eServices-Tp5: api managementeServices-Tp5: api management
eServices-Tp5: api managementLilia Sfaxi
 
PHP Composer : Pourquoi ? Comment ? Et plus ...
PHP Composer : Pourquoi ? Comment ? Et plus ...PHP Composer : Pourquoi ? Comment ? Et plus ...
PHP Composer : Pourquoi ? Comment ? Et plus ...Romain Cambien
 
Atelier symfony n 3
Atelier symfony n 3Atelier symfony n 3
Atelier symfony n 3Amir Souissi
 
S43 passer à php 7 sous IBM i
S43   passer à php 7 sous IBM iS43   passer à php 7 sous IBM i
S43 passer à php 7 sous IBM iGautier DUMAS
 
Symfony 2 : chapitre 2 - Les vues en Twig
Symfony 2 : chapitre 2 - Les vues en TwigSymfony 2 : chapitre 2 - Les vues en Twig
Symfony 2 : chapitre 2 - Les vues en TwigAbdelkader Rhouati
 
Orchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesOrchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesXavier Gorse
 
Ces outils qui vous font gagner du temps
Ces outils qui vous font gagner du tempsCes outils qui vous font gagner du temps
Ces outils qui vous font gagner du tempsAntoine Rey
 
Atelier symfony n 1
Atelier symfony n 1Atelier symfony n 1
Atelier symfony n 1Amir Souissi
 
Présentation de PHP 5.4 [FR]
Présentation de PHP 5.4 [FR]Présentation de PHP 5.4 [FR]
Présentation de PHP 5.4 [FR]Wixiweb
 
Introduction à Symfony2
Introduction à Symfony2Introduction à Symfony2
Introduction à Symfony2Hugo Hamon
 
Symfony3 overview
Symfony3 overviewSymfony3 overview
Symfony3 overviewSymfonyMu
 
Symfony 2 : chapitre 1 - Présentation Générale
Symfony 2 : chapitre 1 - Présentation GénéraleSymfony 2 : chapitre 1 - Présentation Générale
Symfony 2 : chapitre 1 - Présentation GénéraleAbdelkader Rhouati
 
Workshop Spring - Session 4 - Spring Batch
Workshop Spring -  Session 4 - Spring BatchWorkshop Spring -  Session 4 - Spring Batch
Workshop Spring - Session 4 - Spring BatchAntoine Rey
 
Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances Firas Kouẞàa
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partageraliagadir
 

Mais procurados (20)

eServices-Tp5: api management
eServices-Tp5: api managementeServices-Tp5: api management
eServices-Tp5: api management
 
Spring ioc
Spring iocSpring ioc
Spring ioc
 
PHP Composer : Pourquoi ? Comment ? Et plus ...
PHP Composer : Pourquoi ? Comment ? Et plus ...PHP Composer : Pourquoi ? Comment ? Et plus ...
PHP Composer : Pourquoi ? Comment ? Et plus ...
 
Atelier symfony n 3
Atelier symfony n 3Atelier symfony n 3
Atelier symfony n 3
 
S43 passer à php 7 sous IBM i
S43   passer à php 7 sous IBM iS43   passer à php 7 sous IBM i
S43 passer à php 7 sous IBM i
 
Symfony 2 : chapitre 2 - Les vues en Twig
Symfony 2 : chapitre 2 - Les vues en TwigSymfony 2 : chapitre 2 - Les vues en Twig
Symfony 2 : chapitre 2 - Les vues en Twig
 
Orchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notesOrchestrez vos projets Symfony sans fausses notes
Orchestrez vos projets Symfony sans fausses notes
 
Ces outils qui vous font gagner du temps
Ces outils qui vous font gagner du tempsCes outils qui vous font gagner du temps
Ces outils qui vous font gagner du temps
 
Atelier symfony n 1
Atelier symfony n 1Atelier symfony n 1
Atelier symfony n 1
 
Présentation de PHP 5.4 [FR]
Présentation de PHP 5.4 [FR]Présentation de PHP 5.4 [FR]
Présentation de PHP 5.4 [FR]
 
Introduction à Symfony2
Introduction à Symfony2Introduction à Symfony2
Introduction à Symfony2
 
Symfony3 overview
Symfony3 overviewSymfony3 overview
Symfony3 overview
 
#2 Architecture OSGi
#2 Architecture OSGi#2 Architecture OSGi
#2 Architecture OSGi
 
Puppet slides
Puppet slidesPuppet slides
Puppet slides
 
Symfony 2 : chapitre 1 - Présentation Générale
Symfony 2 : chapitre 1 - Présentation GénéraleSymfony 2 : chapitre 1 - Présentation Générale
Symfony 2 : chapitre 1 - Présentation Générale
 
Workshop Spring - Session 4 - Spring Batch
Workshop Spring -  Session 4 - Spring BatchWorkshop Spring -  Session 4 - Spring Batch
Workshop Spring - Session 4 - Spring Batch
 
Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances
 
Symfony
SymfonySymfony
Symfony
 
Présentation symfony drupal
Présentation symfony drupalPrésentation symfony drupal
Présentation symfony drupal
 
Architecture java j2 ee a partager
Architecture java j2 ee a partagerArchitecture java j2 ee a partager
Architecture java j2 ee a partager
 

Destaque

Le monitoring à l'heure de DevOps et Big Data
Le monitoring à l'heure de DevOps et Big DataLe monitoring à l'heure de DevOps et Big Data
Le monitoring à l'heure de DevOps et Big DataClaude Falguiere
 
Introduction aux bases de données NoSQL
Introduction aux bases de données NoSQLIntroduction aux bases de données NoSQL
Introduction aux bases de données NoSQLAntoine Augusti
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et DockerStephane Manciot
 
2015-10-07 Colloque SIS "Les risques liés à la sécurité des SI" - Diaporama
2015-10-07 Colloque SIS "Les risques liés à la sécurité des SI" - Diaporama2015-10-07 Colloque SIS "Les risques liés à la sécurité des SI" - Diaporama
2015-10-07 Colloque SIS "Les risques liés à la sécurité des SI" - DiaporamaASIP Santé
 
Retour d'expérience DevOps
Retour d'expérience DevOpsRetour d'expérience DevOps
Retour d'expérience DevOpsrkrol
 
DEVOPS - La synthèse
DEVOPS - La synthèseDEVOPS - La synthèse
DEVOPS - La synthèseCOMPETENSIS
 
Journée DevOps : La boite à outil d'une équipe DevOps
Journée DevOps : La boite à outil d'une équipe DevOpsJournée DevOps : La boite à outil d'une équipe DevOps
Journée DevOps : La boite à outil d'une équipe DevOpsPublicis Sapient Engineering
 
Après l’#agilité, le #DevOps, la nouvelle arme de la DSI ! v2
Après l’#agilité, le #DevOps, la nouvelle arme de la DSI ! v2Après l’#agilité, le #DevOps, la nouvelle arme de la DSI ! v2
Après l’#agilité, le #DevOps, la nouvelle arme de la DSI ! v2Sébastien Bourguignon
 
Matinale DevOps / Docker
Matinale DevOps / DockerMatinale DevOps / Docker
Matinale DevOps / DockerZenika
 

Destaque (12)

NoSQL et Big Data
NoSQL et Big DataNoSQL et Big Data
NoSQL et Big Data
 
Le monitoring à l'heure de DevOps et Big Data
Le monitoring à l'heure de DevOps et Big DataLe monitoring à l'heure de DevOps et Big Data
Le monitoring à l'heure de DevOps et Big Data
 
Introduction aux bases de données NoSQL
Introduction aux bases de données NoSQLIntroduction aux bases de données NoSQL
Introduction aux bases de données NoSQL
 
DevOps avec Ansible et Docker
DevOps avec Ansible et DockerDevOps avec Ansible et Docker
DevOps avec Ansible et Docker
 
2015-10-07 Colloque SIS "Les risques liés à la sécurité des SI" - Diaporama
2015-10-07 Colloque SIS "Les risques liés à la sécurité des SI" - Diaporama2015-10-07 Colloque SIS "Les risques liés à la sécurité des SI" - Diaporama
2015-10-07 Colloque SIS "Les risques liés à la sécurité des SI" - Diaporama
 
Retour d'expérience DevOps
Retour d'expérience DevOpsRetour d'expérience DevOps
Retour d'expérience DevOps
 
DEVOPS - La synthèse
DEVOPS - La synthèseDEVOPS - La synthèse
DEVOPS - La synthèse
 
Journée DevOps : La boite à outil d'une équipe DevOps
Journée DevOps : La boite à outil d'une équipe DevOpsJournée DevOps : La boite à outil d'une équipe DevOps
Journée DevOps : La boite à outil d'une équipe DevOps
 
Après l’#agilité, le #DevOps, la nouvelle arme de la DSI ! v2
Après l’#agilité, le #DevOps, la nouvelle arme de la DSI ! v2Après l’#agilité, le #DevOps, la nouvelle arme de la DSI ! v2
Après l’#agilité, le #DevOps, la nouvelle arme de la DSI ! v2
 
Les tests de securite devops
Les tests de securite devopsLes tests de securite devops
Les tests de securite devops
 
Matinale DevOps / Docker
Matinale DevOps / DockerMatinale DevOps / Docker
Matinale DevOps / Docker
 
BBL DevOps pour Xamarin
BBL DevOps pour XamarinBBL DevOps pour Xamarin
BBL DevOps pour Xamarin
 

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

Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Julien Dubois
 
Devops@Kelkoo - Agile Grenoble 2012
Devops@Kelkoo - Agile Grenoble 2012Devops@Kelkoo - Agile Grenoble 2012
Devops@Kelkoo - Agile Grenoble 2012Nicolas Capponi
 
Qualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et WebQualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et WebChristophe Rochefolle
 
Lbv Dev Meetup #1
Lbv Dev Meetup #1Lbv Dev Meetup #1
Lbv Dev Meetup #1LbvDev
 
Java 9 modulo les modules devoxx fr 2017
Java 9 modulo les modules devoxx fr 2017Java 9 modulo les modules devoxx fr 2017
Java 9 modulo les modules devoxx fr 2017Jean-Michel Doudoux
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache MavenArnaud Héritier
 
Devoxx 2018 Après Java 8, Java 9 et 10
Devoxx 2018 Après Java 8, Java 9 et 10Devoxx 2018 Après Java 8, Java 9 et 10
Devoxx 2018 Après Java 8, Java 9 et 10Jean-Michel Doudoux
 
Common features in webapi aspnetcore
Common features in webapi aspnetcoreCommon features in webapi aspnetcore
Common features in webapi aspnetcoreMSDEVMTL
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsJulien Wittouck
 
Devops Introduction au mouvement
Devops Introduction au mouvementDevops Introduction au mouvement
Devops Introduction au mouvementUlrich VACHON
 
Développement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EEDéveloppement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EESabri Bouchlema
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Antoine Rey
 
System Center 2012 | SCO : Retours d’expériences projets et déploiements Syst...
System Center 2012 | SCO : Retours d’expériences projets et déploiements Syst...System Center 2012 | SCO : Retours d’expériences projets et déploiements Syst...
System Center 2012 | SCO : Retours d’expériences projets et déploiements Syst...Microsoft Technet France
 

Semelhante a DevOps illustré : la jungle de la configuration d'une application (20)

tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017Être productif avec JHipster - Devoxx France 2017
Être productif avec JHipster - Devoxx France 2017
 
Devops@Kelkoo - Agile Grenoble 2012
Devops@Kelkoo - Agile Grenoble 2012Devops@Kelkoo - Agile Grenoble 2012
Devops@Kelkoo - Agile Grenoble 2012
 
Qualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et WebQualité Logiciel - Outils Open Source pour Java et Web
Qualité Logiciel - Outils Open Source pour Java et Web
 
Lbv Dev Meetup #1
Lbv Dev Meetup #1Lbv Dev Meetup #1
Lbv Dev Meetup #1
 
Google appengine&guice
Google appengine&guiceGoogle appengine&guice
Google appengine&guice
 
Dev ops@kelkoo
Dev ops@kelkoo Dev ops@kelkoo
Dev ops@kelkoo
 
Java 9 modulo les modules devoxx fr 2017
Java 9 modulo les modules devoxx fr 2017Java 9 modulo les modules devoxx fr 2017
Java 9 modulo les modules devoxx fr 2017
 
20081008 - Tours Jug - Apache Maven
20081008  - Tours Jug - Apache Maven20081008  - Tours Jug - Apache Maven
20081008 - Tours Jug - Apache Maven
 
Spring
SpringSpring
Spring
 
Etude des Frameworks PHP
Etude des Frameworks PHPEtude des Frameworks PHP
Etude des Frameworks PHP
 
Devoxx 2018 Après Java 8, Java 9 et 10
Devoxx 2018 Après Java 8, Java 9 et 10Devoxx 2018 Après Java 8, Java 9 et 10
Devoxx 2018 Après Java 8, Java 9 et 10
 
Common features in webapi aspnetcore
Common features in webapi aspnetcoreCommon features in webapi aspnetcore
Common features in webapi aspnetcore
 
Sonar-Hodson-Maven
Sonar-Hodson-MavenSonar-Hodson-Maven
Sonar-Hodson-Maven
 
Spring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'tsSpring Boot & Containers - Do's & Don'ts
Spring Boot & Containers - Do's & Don'ts
 
Devops Introduction au mouvement
Devops Introduction au mouvementDevops Introduction au mouvement
Devops Introduction au mouvement
 
Développement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EEDéveloppement d'applications pour la plateforme Java EE
Développement d'applications pour la plateforme Java EE
 
Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?Quoi de neuf à Devoxx France 2017 ?
Quoi de neuf à Devoxx France 2017 ?
 
System Center 2012 | SCO : Retours d’expériences projets et déploiements Syst...
System Center 2012 | SCO : Retours d’expériences projets et déploiements Syst...System Center 2012 | SCO : Retours d’expériences projets et déploiements Syst...
System Center 2012 | SCO : Retours d’expériences projets et déploiements Syst...
 

Mais de gdigugli

SoftShake 2015 - DomainModel.stream()
SoftShake 2015 - DomainModel.stream()SoftShake 2015 - DomainModel.stream()
SoftShake 2015 - DomainModel.stream()gdigugli
 
Rock solid UI modeling using annotation processing - CodeGeneration 2013
Rock solid UI modeling using annotation processing - CodeGeneration 2013Rock solid UI modeling using annotation processing - CodeGeneration 2013
Rock solid UI modeling using annotation processing - CodeGeneration 2013gdigugli
 
Smart annotation processing - Paris JUG
Smart annotation processing - Paris JUGSmart annotation processing - Paris JUG
Smart annotation processing - Paris JUGgdigugli
 
Smart Annotation Processing - Marseille JUG
Smart Annotation Processing - Marseille JUGSmart Annotation Processing - Marseille JUG
Smart Annotation Processing - Marseille JUGgdigugli
 
JavaOne 2012 - CON11234 - Multi device Content Display and a Smart Use of Ann...
JavaOne 2012 - CON11234 - Multi device Content Display and a Smart Use of Ann...JavaOne 2012 - CON11234 - Multi device Content Display and a Smart Use of Ann...
JavaOne 2012 - CON11234 - Multi device Content Display and a Smart Use of Ann...gdigugli
 
Ez18n crowdsourcing
Ez18n crowdsourcingEz18n crowdsourcing
Ez18n crowdsourcinggdigugli
 
Ez18n hands on - Annotation Processing Tool par l'exemple
Ez18n hands on - Annotation Processing Tool par l'exempleEz18n hands on - Annotation Processing Tool par l'exemple
Ez18n hands on - Annotation Processing Tool par l'exemplegdigugli
 
Ez18n theorie encoding gouvernance
Ez18n theorie encoding gouvernanceEz18n theorie encoding gouvernance
Ez18n theorie encoding gouvernancegdigugli
 
Ez18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshellEz18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshellgdigugli
 

Mais de gdigugli (9)

SoftShake 2015 - DomainModel.stream()
SoftShake 2015 - DomainModel.stream()SoftShake 2015 - DomainModel.stream()
SoftShake 2015 - DomainModel.stream()
 
Rock solid UI modeling using annotation processing - CodeGeneration 2013
Rock solid UI modeling using annotation processing - CodeGeneration 2013Rock solid UI modeling using annotation processing - CodeGeneration 2013
Rock solid UI modeling using annotation processing - CodeGeneration 2013
 
Smart annotation processing - Paris JUG
Smart annotation processing - Paris JUGSmart annotation processing - Paris JUG
Smart annotation processing - Paris JUG
 
Smart Annotation Processing - Marseille JUG
Smart Annotation Processing - Marseille JUGSmart Annotation Processing - Marseille JUG
Smart Annotation Processing - Marseille JUG
 
JavaOne 2012 - CON11234 - Multi device Content Display and a Smart Use of Ann...
JavaOne 2012 - CON11234 - Multi device Content Display and a Smart Use of Ann...JavaOne 2012 - CON11234 - Multi device Content Display and a Smart Use of Ann...
JavaOne 2012 - CON11234 - Multi device Content Display and a Smart Use of Ann...
 
Ez18n crowdsourcing
Ez18n crowdsourcingEz18n crowdsourcing
Ez18n crowdsourcing
 
Ez18n hands on - Annotation Processing Tool par l'exemple
Ez18n hands on - Annotation Processing Tool par l'exempleEz18n hands on - Annotation Processing Tool par l'exemple
Ez18n hands on - Annotation Processing Tool par l'exemple
 
Ez18n theorie encoding gouvernance
Ez18n theorie encoding gouvernanceEz18n theorie encoding gouvernance
Ez18n theorie encoding gouvernance
 
Ez18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshellEz18n Annotation Processing Tool in a nutshell
Ez18n Annotation Processing Tool in a nutshell
 

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

  • 1. DevOps illustré : La jungle de la configuration d’une application par Dimitri Baeli et Gilles Duguglielmo @dbaeli & @gdigugli 1
  • 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. 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. 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. 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 à table l’intérieur du WAR et tu CONFIG_SETTINGS, redémarre l’application édite la valeur de la clé ws_url On doit faire un build de l’application avec la nouvelle URL 5
  • 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 DBA Est-ce qu’on peut changer ça avec un script sh Comment j’édite le fichier web.xml ? 6
  • 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. 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. 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. Action ! 10
  • 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. La gouvernance des paramètres  Utiliser des champs dans une classe unique  Annoter les champs  Les clefs sont injectées 12
  • 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 de devoxx_home_url X X configuration pour la MeP devoxx_agenda_url X X devoxx_unittest_url X 13
  • 14. Accès à l’environnement  Semblable à System.getProperty() 14
  • 15. Démo 15
  • 16. Ceci n’est pas une librairie Just Fork it ! https://github.com/dbaeli/conf4j 16