<?xml version="1.0" encoding="UTF-8"?><rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
xmlns:media="http://search.yahoo.com/mrss/"
> <channel><title>Commentaires sur : CITCON Paris 2009</title> <atom:link href="http://blog.xebia.fr/2009/09/21/citcon-paris-2009/feed/" rel="self" type="application/rss+xml" /><link>http://blog.xebia.fr/2009/09/21/citcon-paris-2009/</link> <description>J2EE, Agilité et SOA</description> <lastBuildDate>Thu, 09 Feb 2012 15:43:24 +0000</lastBuildDate> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=</generator> <item><title>Par : Bob</title><link>http://blog.xebia.fr/2009/09/21/citcon-paris-2009/#comment-15266</link> <dc:creator>Bob</dc:creator> <pubDate>Tue, 22 Sep 2009 13:35:56 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2865#comment-15266</guid> <description>Emmanuel, pour répondre à ta question, tu peux te reporter à http://hadoop.apache.org/zookeeper/docs/r3.1.1/zookeeperProgrammers.html#sc_ZooKeeperAccessControl
Encore une fois, je n&#039;essaye pas de &quot;vendre&quot; cette solution car je n&#039;ai pas de retour d&#039;expérience sur le sujet. Mais le concept me semble intéressant.</description> <content:encoded><![CDATA[<p>Emmanuel, pour répondre à ta question, tu peux te reporter à <a
href="http://hadoop.apache.org/zookeeper/docs/r3.1.1/zookeeperProgrammers.html#sc_ZooKeeperAccessControl" rel="nofollow">http://hadoop.apache.org/zookeeper/docs/r3.1.1/zookeeperProgrammers.html#sc_ZooKeeperAccessControl</a></p><p>Encore une fois, je n&#8217;essaye pas de &laquo;&nbsp;vendre&nbsp;&raquo; cette solution car je n&#8217;ai pas de retour d&#8217;expérience sur le sujet. Mais le concept me semble intéressant.</p> ]]></content:encoded> </item> <item><title>Par : Emmanuel Servent</title><link>http://blog.xebia.fr/2009/09/21/citcon-paris-2009/#comment-15257</link> <dc:creator>Emmanuel Servent</dc:creator> <pubDate>Tue, 22 Sep 2009 09:02:15 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2865#comment-15257</guid> <description>Effectivement, je n&#039;ai pas tellement insisté sur ce point, mais l&#039;avantage d&#039;Escape (et de Zookeeper !) est de centraliser toutes les valeurs des propriétés à l&#039;extérieur des applications. On peut évidememnt les partager entre plusieurs d&#039;entre elles, mais rien ne l&#039;y oblige.
Bob, je suis d&#039;accord avec toi sur les faiblesses d&#039;architecture d&#039;Escape comparé à Zookeeper, mais le besoin n&#039;est pas exactement le même. Escape ne nécessite pas une architecture aussi complexe, car il est surtout utilisé au démarrage des applications et peu en cours d&#039;utilisation.
D&#039;autre part, son point fort, pour moi, c&#039;est sa simplicité de mise en oeuvre. ZooKeeper est plus complexe, il propose, par exemple, une fonctionnalité de notifications de changement d&#039;une valeur. Ca va beaucoup plus loin qu&#039;un simple CMDB.
Et l&#039;autre point important, c&#039;est la protection et l&#039;encryption des données. Je n&#039;ai pas lu que ZooKeeper sécurisait ses données. Est-ce le cas?
De mon point de vue, on ne peut pas considérer ZooKeeper comme un CMDB, ce n&#039;est pas sa fonction principale alors qu&#039;Escape se positionne complètement dans ce rôle.</description> <content:encoded><![CDATA[<p>Effectivement, je n&#8217;ai pas tellement insisté sur ce point, mais l&#8217;avantage d&#8217;Escape (et de Zookeeper !) est de centraliser toutes les valeurs des propriétés à l&#8217;extérieur des applications. On peut évidememnt les partager entre plusieurs d&#8217;entre elles, mais rien ne l&#8217;y oblige.</p><p>Bob, je suis d&#8217;accord avec toi sur les faiblesses d&#8217;architecture d&#8217;Escape comparé à Zookeeper, mais le besoin n&#8217;est pas exactement le même. Escape ne nécessite pas une architecture aussi complexe, car il est surtout utilisé au démarrage des applications et peu en cours d&#8217;utilisation.</p><p>D&#8217;autre part, son point fort, pour moi, c&#8217;est sa simplicité de mise en oeuvre. ZooKeeper est plus complexe, il propose, par exemple, une fonctionnalité de notifications de changement d&#8217;une valeur. Ca va beaucoup plus loin qu&#8217;un simple CMDB.<br
/> Et l&#8217;autre point important, c&#8217;est la protection et l&#8217;encryption des données. Je n&#8217;ai pas lu que ZooKeeper sécurisait ses données. Est-ce le cas?</p><p>De mon point de vue, on ne peut pas considérer ZooKeeper comme un CMDB, ce n&#8217;est pas sa fonction principale alors qu&#8217;Escape se positionne complètement dans ce rôle.</p> ]]></content:encoded> </item> <item><title>Par : Frédéric</title><link>http://blog.xebia.fr/2009/09/21/citcon-paris-2009/#comment-15250</link> <dc:creator>Frédéric</dc:creator> <pubDate>Tue, 22 Sep 2009 07:26:34 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2865#comment-15250</guid> <description>Dac je saisis mieux la problématique =&gt; je suis à coté avec le pattern évoqué précédemment ;-)</description> <content:encoded><![CDATA[<p>Dac je saisis mieux la problématique =&gt; je suis à coté avec le pattern évoqué précédemment <img
src='http://blog.xebia.fr/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /></p> ]]></content:encoded> </item> <item><title>Par : Bob</title><link>http://blog.xebia.fr/2009/09/21/citcon-paris-2009/#comment-15247</link> <dc:creator>Bob</dc:creator> <pubDate>Tue, 22 Sep 2009 06:38:17 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2865#comment-15247</guid> <description>Zookeeper présente un intérêt dans un environnement où plusieurs centaines d&#039;applications partagent certaines propriétés communes (comme une adresse IP) que l&#039;on veut pouvoir gérer de façon centralisée, puis pouvoir propager la configuration sur chacun des serveurs sans intervention manuelle.
Evidemment, Zookeeper ne s&#039;adresse pas à une problématique dans laquelle seules quelques applications sont en jeu.</description> <content:encoded><![CDATA[<p>Zookeeper présente un intérêt dans un environnement où plusieurs centaines d&#8217;applications partagent certaines propriétés communes (comme une adresse IP) que l&#8217;on veut pouvoir gérer de façon centralisée, puis pouvoir propager la configuration sur chacun des serveurs sans intervention manuelle.</p><p>Evidemment, Zookeeper ne s&#8217;adresse pas à une problématique dans laquelle seules quelques applications sont en jeu.</p> ]]></content:encoded> </item> <item><title>Par : Frédéric</title><link>http://blog.xebia.fr/2009/09/21/citcon-paris-2009/#comment-15236</link> <dc:creator>Frédéric</dc:creator> <pubDate>Mon, 21 Sep 2009 20:46:55 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2865#comment-15236</guid> <description>Ces deux solutions (Escape et Zookeeper) me paraissent bien compliquées pour répondre à une problématique pourtant simple : &quot;des valeurs de propriétés pour des environnements différents&quot;
Sur le projet liferay, un pattern très pratique est mis en place : le &quot;chaînage&quot; de fichiers properties.
Le principe est simple : ils utilisent un PropertiesPlaceHolder (spring ... mais le principe n&#039;a pas besoin de se reposer sur spring) maison qui va charger un fichier properties.
Si, dans ce fichier, il trouve une clef &quot;magique&quot; (ex: &quot;include-and-override&quot;), il tentera de charger le fichier pointé par cette clef dans le classpath et mergera son contenu avec les propriétés déjà chargées (et ainsi de suite..)
Exemple :
Fichier exemple.default.properties -déclaré systématiquement dans le classpath : contient la configuration &quot;par défaut&quot; de l&#039;appli-
include-and-override=exemple.recette.properties
log.level=INFO
Fichier exemple.recette.properties -à rajouter lors du packaging de recette, contiendra la conf de recette-
include-and-override=exemple.prod.properties
log.level=DEBUG
Fichier exemple.prod.properties -à rajouter lors du packaging de prod, en plus du exemple.recette.properties ci-dessus-
log.level=ERROR
Lorsque le développeur récupère ce qu&#039;il y a sur le référentiel, &quot;out of the box&quot; le niveau de log est en INFO.
Eventuellement il peut customiser son niveau de log en DEBUG en rajoutant (sans le commiter) un exemple.recette.properties dans son classpath
En recette, exemple.default.properties et exemple.recette.properties sont packagés pour un log &quot;final&quot; en DEBUG
Enfin, pour la prod, exemple.default.properties, exemple.recette.properties et exemple.prod.properties sont packagés pour un log final en ERROR
=&gt; Qu&#039;en pensez-vous ?
Frédéric</description> <content:encoded><![CDATA[<p>Ces deux solutions (Escape et Zookeeper) me paraissent bien compliquées pour répondre à une problématique pourtant simple : &laquo;&nbsp;des valeurs de propriétés pour des environnements différents&nbsp;&raquo;</p><p>Sur le projet liferay, un pattern très pratique est mis en place : le &laquo;&nbsp;chaînage&nbsp;&raquo; de fichiers properties.</p><p>Le principe est simple : ils utilisent un PropertiesPlaceHolder (spring &#8230; mais le principe n&#8217;a pas besoin de se reposer sur spring) maison qui va charger un fichier properties.<br
/> Si, dans ce fichier, il trouve une clef &laquo;&nbsp;magique&nbsp;&raquo; (ex: &laquo;&nbsp;include-and-override&nbsp;&raquo;), il tentera de charger le fichier pointé par cette clef dans le classpath et mergera son contenu avec les propriétés déjà chargées (et ainsi de suite..)</p><p>Exemple :<br
/> Fichier exemple.default.properties -déclaré systématiquement dans le classpath : contient la configuration &laquo;&nbsp;par défaut&nbsp;&raquo; de l&#8217;appli-<br
/> include-and-override=exemple.recette.properties<br
/> log.level=INFO</p><p>Fichier exemple.recette.properties -à rajouter lors du packaging de recette, contiendra la conf de recette-<br
/> include-and-override=exemple.prod.properties<br
/> log.level=DEBUG</p><p>Fichier exemple.prod.properties -à rajouter lors du packaging de prod, en plus du exemple.recette.properties ci-dessus-<br
/> log.level=ERROR</p><p>Lorsque le développeur récupère ce qu&#8217;il y a sur le référentiel, &laquo;&nbsp;out of the box&nbsp;&raquo; le niveau de log est en INFO.<br
/> Eventuellement il peut customiser son niveau de log en DEBUG en rajoutant (sans le commiter) un exemple.recette.properties dans son classpath</p><p>En recette, exemple.default.properties et exemple.recette.properties sont packagés pour un log &laquo;&nbsp;final&nbsp;&raquo; en DEBUG<br
/> Enfin, pour la prod, exemple.default.properties, exemple.recette.properties et exemple.prod.properties sont packagés pour un log final en ERROR</p><p>=&gt; Qu&#8217;en pensez-vous ?</p><p>Frédéric</p> ]]></content:encoded> </item> <item><title>Par : Bob</title><link>http://blog.xebia.fr/2009/09/21/citcon-paris-2009/#comment-15230</link> <dc:creator>Bob</dc:creator> <pubDate>Mon, 21 Sep 2009 19:28:10 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2865#comment-15230</guid> <description>Escape me laisse tout à fait perplexe, il me semble qu&#039;il a tout d&#039;un bon candidat pour être le point de faiblesse d&#039;une architecture (single point of failure). Dans ma boîte, nous regardons avec attention Zookeeper (http://hadoop.apache.org/zookeeper/) qui a les mêmes avantages de centralisation de Escape, mais avec en plus la FIABILITE.
Je n&#039;ai pas encore de retour du terrain de la part de Zookeeper, mais il est sûr que Escape ne fait pas un bon candidat. ThoughtWorks nous avait habitué à mieux.</description> <content:encoded><![CDATA[<p>Escape me laisse tout à fait perplexe, il me semble qu&#8217;il a tout d&#8217;un bon candidat pour être le point de faiblesse d&#8217;une architecture (single point of failure). Dans ma boîte, nous regardons avec attention Zookeeper (<a
href="http://hadoop.apache.org/zookeeper/" rel="nofollow">http://hadoop.apache.org/zookeeper/</a>) qui a les mêmes avantages de centralisation de Escape, mais avec en plus la FIABILITE.</p><p>Je n&#8217;ai pas encore de retour du terrain de la part de Zookeeper, mais il est sûr que Escape ne fait pas un bon candidat. ThoughtWorks nous avait habitué à mieux.</p> ]]></content:encoded> </item> <item><title>Par : Dominique De Vito</title><link>http://blog.xebia.fr/2009/09/21/citcon-paris-2009/#comment-15223</link> <dc:creator>Dominique De Vito</dc:creator> <pubDate>Mon, 21 Sep 2009 15:35:36 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2865#comment-15223</guid> <description>OK, merci de la précision. Intéressant.
Cela rejoint (un peu) mon idée, modulo l&#039;accès web/REST.</description> <content:encoded><![CDATA[<p>OK, merci de la précision. Intéressant.</p><p>Cela rejoint (un peu) mon idée, modulo l&#8217;accès web/REST.</p> ]]></content:encoded> </item> <item><title>Par : Emmanuel Servent</title><link>http://blog.xebia.fr/2009/09/21/citcon-paris-2009/#comment-15222</link> <dc:creator>Emmanuel Servent</dc:creator> <pubDate>Mon, 21 Sep 2009 14:56:21 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2865#comment-15222</guid> <description>La présentation d&#039;Escape a pris le cas de l&#039;initialisation des variables au niveau applicatif, ie lorsque l&#039;application démarre ou lors de la première utilisation de la propriété.
Mais on peut très bien envisager de récupérer les valeurs avant le packaging et de les stocker directement dans les fichiers de propriétés. Avec la commande _curl_ sous Unix, on peut retrouver une valeur sans pour autant être dans du code Java, Python ou autres.
Les auteurs du produit ne le limitent pas à un rôle donné. Escape ne fait que servir une information à la demande et c&#039;est plutôt au projet de choisir à quel moment on veut l&#039;interroger.</description> <content:encoded><![CDATA[<p>La présentation d&#8217;Escape a pris le cas de l&#8217;initialisation des variables au niveau applicatif, ie lorsque l&#8217;application démarre ou lors de la première utilisation de la propriété.<br
/> Mais on peut très bien envisager de récupérer les valeurs avant le packaging et de les stocker directement dans les fichiers de propriétés. Avec la commande _curl_ sous Unix, on peut retrouver une valeur sans pour autant être dans du code Java, Python ou autres.</p><p>Les auteurs du produit ne le limitent pas à un rôle donné. Escape ne fait que servir une information à la demande et c&#8217;est plutôt au projet de choisir à quel moment on veut l&#8217;interroger.</p> ]]></content:encoded> </item> <item><title>Par : Dominique De Vito</title><link>http://blog.xebia.fr/2009/09/21/citcon-paris-2009/#comment-15220</link> <dc:creator>Dominique De Vito</dc:creator> <pubDate>Mon, 21 Sep 2009 13:54:29 +0000</pubDate> <guid
isPermaLink="false">http://blog.xebia.fr/?p=2865#comment-15220</guid> <description>Perso, au niveau applicatif, ma proposition pour stocker les propriétés utilisées par une application : utiliser une base de données orientée objet (qui peut avoir un accès web) : http://www.jroller.com/dmdevito/entry/and_now_something_completely_different
Coté application, soit on lirait ces propriétés au vol, soit on les utiliserait pour initialiser une variable, statique par ex, soit l&#039;initialisation sera rendue implicite via un binding par annotation Java.
Cela ressemble un peu à ce qui est proposé là (sauf que j&#039;ai du mal à identifier à quel stade Escape joue son rôle ? au niveau de la CI ? du packaging ? et/ou au niveau applicatif ?), modulo le fait que Escape propose un accès web/REST.</description> <content:encoded><![CDATA[<p>Perso, au niveau applicatif, ma proposition pour stocker les propriétés utilisées par une application : utiliser une base de données orientée objet (qui peut avoir un accès web) : <a
href="http://www.jroller.com/dmdevito/entry/and_now_something_completely_different" rel="nofollow">http://www.jroller.com/dmdevito/entry/and_now_something_completely_different</a></p><p>Coté application, soit on lirait ces propriétés au vol, soit on les utiliserait pour initialiser une variable, statique par ex, soit l&#8217;initialisation sera rendue implicite via un binding par annotation Java.</p><p>Cela ressemble un peu à ce qui est proposé là (sauf que j&#8217;ai du mal à identifier à quel stade Escape joue son rôle ? au niveau de la CI ? du packaging ? et/ou au niveau applicatif ?), modulo le fait que Escape propose un accès web/REST.</p> ]]></content:encoded> </item> </channel> </rss>
