<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>OCTO talks ! &#187; SOA</title>
	<atom:link href="http://blog.octo.com/tag/soa/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.octo.com</link>
	<description>Le blog d&#039;OCTO Technology, cabinet d&#039;architectes en systèmes d&#039;information</description>
	<lastBuildDate>Fri, 03 Feb 2012 13:46:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Comment choisir entre lightweight ESB et ESB traditionnels ?</title>
		<link>http://blog.octo.com/comment-choisir-entre-lightweight-esb-et-esb-traditionnels/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=comment-choisir-entre-lightweight-esb-et-esb-traditionnels</link>
		<comments>http://blog.octo.com/comment-choisir-entre-lightweight-esb-et-esb-traditionnels/#comments</comments>
		<pubDate>Mon, 06 Jun 2011 17:41:52 +0000</pubDate>
		<dc:creator>Matthias Feraga</dc:creator>
				<category><![CDATA[Architecture et technologies]]></category>
		<category><![CDATA[BPM]]></category>
		<category><![CDATA[EAI]]></category>
		<category><![CDATA[ESB]]></category>
		<category><![CDATA[intégration]]></category>
		<category><![CDATA[lightweight ESB]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://blog.octo.com/?p=23203</guid>
		<description><![CDATA[Les lightweight ESB, par opposition aux ESB traditionnels, sont un type émergent de solutions d&#8217;intégration simplifiées, qui se concentrent sur les besoins récurrents. Celles-ci n&#8217;apportent pas de nouvelles fonctionnalités, mais adressent les problématiques d&#8217;intégration d&#8217;application de manière rafraîchissante et innovante. On peut compter les solutions reconnues comme lightweight ESB sur les doigts d&#8217;une main: ApacheCamel, MuleESB et SpringIntegration. [...]
Suggestion d'articles :<ol>
<li><a href='http://blog.octo.com/choisir-son-ampli-et-son-usine-de-developpement/' rel='bookmark' title='Choisir son ampli (et son usine de développement)…'>Choisir son ampli (et son usine de développement)…</a></li>
<li><a href='http://blog.octo.com/choisir-un-core-banking-system/' rel='bookmark' title='Choisir un Core Banking System?'>Choisir un Core Banking System?</a></li>
<li><a href='http://blog.octo.com/choisir-grails-pour-ses-projets-web-en-entreprise/' rel='bookmark' title='Choisir Grails pour faire du web: Au menu ou à la carte ?'>Choisir Grails pour faire du web: Au menu ou à la carte ?</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.octo.com%252Fcomment-choisir-entre-lightweight-esb-et-esb-traditionnels%252F%22%2C%20%22style%22%3A%20%22small%22%2C%20%22title%22%3A%20%22Comment%20choisir%20entre%20lightweight%20ESB%20et%20ESB%20traditionnels%20%3F%22%20%7D);"></div>
<p style="text-align: justify;">Les lightweight ESB, par opposition aux ESB traditionnels, sont un type émergent de <strong>solutions d&#8217;intégration simplifiées</strong>, qui se concentrent sur les besoins récurrents. Celles-ci n&#8217;apportent pas de nouvelles fonctionnalités, mais <strong>adressent les problématiques d&#8217;intégration d&#8217;application de manière rafraîchissante et innovante</strong>. On peut compter les solutions reconnues comme lightweight ESB sur les doigts d&#8217;une main: ApacheCamel, MuleESB et SpringIntegration. Le but n&#8217;est pas ici de comparer ces trois outils, mais d&#8217;apprécier ce qu&#8217;ils ont pour sur en commun: leur <strong>nature efficiente et productive</strong>.</p>
<p style="text-align: justify;">Cet article est constitué d&#8217;une série de points à adresser lorsqu&#8217;il s&#8217;agit d&#8217;intégration d&#8217;applications. La plupart de ces questions servent indifféremment à choisir une architecture d&#8217;échange, à comparer des solutions ou encore à concevoir des flux. Pour couvrir ce vaste sujet, la checklist se décompose comme suit, en se limitant aux aspects différenciant pour les lightweight ESB :</p>
<ul>
<li style="text-align: justify;"><strong>les exigences fonctionnelles</strong>, c&#8217;est-à-dire le strict besoin en fonctionnalités d&#8217;intégration,</li>
<li style="text-align: justify;"><strong>les <strong>exigences </strong>non-fonctionnelles</strong> comme la supervision technique et le déploiement,</li>
<li style="text-align: justify;"><strong>les contraintes </strong><strong>organisationnelles</strong></li>
</ul>
<p style="text-align: center;"><strong><a title="How to: choosing between lightweight and traditional ESBs" href="http://blog.octo.com/en/choosing-between-lightweight-and-traditional-esbs/">Lire la suite de l&#8217;article en anglais</a></strong></p>
<p style="text-align: center;"><strong> </strong></p>

 <img src="http://blog.octo.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=23203" width="1" height="1" style="display: none;" /><p>Suggestion d'articles :</p><ol>
<li><a href='http://blog.octo.com/choisir-son-ampli-et-son-usine-de-developpement/' rel='bookmark' title='Choisir son ampli (et son usine de développement)…'>Choisir son ampli (et son usine de développement)…</a></li>
<li><a href='http://blog.octo.com/choisir-un-core-banking-system/' rel='bookmark' title='Choisir un Core Banking System?'>Choisir un Core Banking System?</a></li>
<li><a href='http://blog.octo.com/choisir-grails-pour-ses-projets-web-en-entreprise/' rel='bookmark' title='Choisir Grails pour faire du web: Au menu ou à la carte ?'>Choisir Grails pour faire du web: Au menu ou à la carte ?</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.octo.com/comment-choisir-entre-lightweight-esb-et-esb-traditionnels/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Les perspectives des CDN en mode Pay as you go</title>
		<link>http://blog.octo.com/perspectives-cdn-et-pay-as-you-go/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=perspectives-cdn-et-pay-as-you-go</link>
		<comments>http://blog.octo.com/perspectives-cdn-et-pay-as-you-go/#comments</comments>
		<pubDate>Tue, 07 Dec 2010 11:14:51 +0000</pubDate>
		<dc:creator>Michel Domenjoud</dc:creator>
				<category><![CDATA[Architecture et technologies]]></category>
		<category><![CDATA[cache distribué]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://blog.octo.com/?p=18174</guid>
		<description><![CDATA[Les services de réseau de diffusion de contenu, ou Content Delivery Network (CDN), adressent des problématiques liées à l’optimisation des performances du web, que ce soit en terme de scalabilité ou de haute disponibilité. Une présentation des solutions de CDN vient d’avoir lieu chez Octo dans le cadre du WebPerf User Group France. En parallèle, [...]
Suggestion d'articles :<ol>
<li><a href='http://blog.octo.com/quelques-perspectives-pour-2011/' rel='bookmark' title='Quelques perspectives pour 2011&#8230;'>Quelques perspectives pour 2011&#8230;</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.octo.com%252Fperspectives-cdn-et-pay-as-you-go%252F%22%2C%20%22style%22%3A%20%22small%22%2C%20%22title%22%3A%20%22Les%20perspectives%20des%20CDN%20en%20mode%20Pay%20as%20you%20go%22%20%7D);"></div>
<p>Les services de réseau de diffusion de contenu, ou<a href="http://fr.wikipedia.org/wiki/Content_Delivery_Network"> Content Delivery Network (CDN)</a>,  adressent des problématiques liées à l’optimisation des performances du  web, que ce soit en terme de scalabilité ou de haute disponibilité.</p>
<p>Une <a href="http://blog.johanbleuzen.fr/retour-seconde-soiree-webperf-sur-paris-2" target="_blank">présentation des solutions de CDN</a> vient d’avoir lieu chez Octo dans le cadre du<a href="https://sites.google.com/a/survol.fr/webperf-user-group/evenements/29-novembre-2010" target="_blank"> WebPerf User Group France</a>. En parallèle, voici un petit retour suite à une étude menée sur le sujet, abordée dans l&#8217;optique d&#8217;avoir une solution à moindre coût notamment pour ressources d&#8217;une application iPhone.</p>
<p>Avec  la démocratisation des moyens de diffusion d’information instantanés,  allant de Facebook à Twitter, on assiste régulièrement au phénomène de<a href="http://fr.wikipedia.org/wiki/Buzz_%28marketing%29" target="_blank"> buzz</a>. Le phénomène existe depuis des années déjà et rejoint les problématiques rencontrées par tout site web qui connait un gain soudain de popularité. Celui-ci est encore plus vrai avec les applications pour smartphones :<a href="http://www.iphon.fr/post/2010/02/19/De-la-faible-dur%C3%A9e-de-vie-des-applications-iPhone-apr%C3%A8s-achat" target="_blank"> en moyenne, un mois après l’installation, seulement 15% des applications iPhone téléchargées sont encore utilisées</a> : il est difficile de prévoir à l’avance le nombre de  téléchargements et d’utilisateurs simultanés.</p>
<p>D’un point de vue technique, ce phénomène soulève plusieurs questions:</p>
<ul>
<li>Comment répondre à cette <strong>montée en charge imprévisible</strong>?</li>
<li>Et si l&#8217;application proposée a un succès franc et durable, comment <strong>garantir des performances correctes</strong> pour tous les utilisateurs, <strong>quelle que soit leur localisation</strong>?</li>
<li>Les  entreprises ne sont pas forcément prêtes à investir dans des serveurs  et/ou des hébergements dédiés supportant ces pics de fréquentation : <strong>comment pallier à ces problématiques rapidement et à moindre coût?</strong></li>
</ul>
<p>Depuis  plusieurs années, les CDN offrent des réponses intéressantes en termes  de performances pour la distribution de ressources statiques. Ces  solutions sont largement utilisées par des acteurs tels que Youtube,  Allociné, ou encore par des sites de presse tels que Le Parisien.</p>
<p>La  nouveauté est que certaines de ces solutions deviennent aujourd&#8217;hui <strong> accessibles même pour des petites structures</strong> grâce à une <strong>facturation  entièrement basée sur la consommation</strong>.</p>
<p><span id="more-18174"></span></p>
<h2>Why CDN?</h2>
<p>Initialement, ces services répondent à une problématique simple :<br />
une  requête a un certain chemin à parcourir du navigateur au serveur d’un  site, et la dernière partie de ce parcours est invariablement un chemin  unique d’accès au serveur, ce qui peut engendrer un goulet  d’étranglement.</p>
<p>De nombreuses  solutions existent pour améliorer la disponibilité des sites web, que ce soit par exemple en augmentant les capacités des infrastructures, ou encore en optimisant son serveur HTTP avec des options de cache pour les fichiers statiques comme<a href="http://httpd.apache.org/docs/trunk/fr/mod/mod_cache.html"> mod_cache</a> sur un serveur Apache.</p>
<p>Les  services CDN proposent de résoudre ces problèmes d’une autre manière,  en rapprochant les ressources de l’utilisateur sur le réseau : plutôt  que de disposer d’un point de service unique, on place un certain nombre  de noeuds <strong>“à proximité” des utilisateurs finaux</strong>.  Lors d’une requête pour accéder à une ressource, le service est alors à  même de router la requête vers le noeud le plus proche contenant  l’information. Ceci apporte deux avantages non négligeables :</p>
<ul>
<li>une <strong>amélioration des temps de réponse</strong>:  par exemple le blog Octo met aujourd’hui beaucoup plus de temps à  s&#8217;afficher depuis les USA que depuis Paris. Avec un CDN, on peut espérer  avoir un temps de réponse plus uniforme quelle que soit l’origine de la  requête.</li>
<li>une <strong>garantie de haute disponibilité</strong> : la ressource est diffusée sur plusieurs noeuds supportant une forte montée en charge</li>
</ul>
<p>Côté technique, le principe est similaire à l&#8217;utilisation d&#8217;un cache statique dans un<a href="http://fr.wikipedia.org/wiki/Reverse_proxy" target="_blank"> ReverseProxy</a>, et la recherche du meilleur noeud pour l&#8217;obtention d&#8217;un contenu s&#8217;appuie en général sur une résolution DNS.<br />
Les principaux atouts d&#8217;un CDN sont ces possibilités de performances et de disponibilité, mais<a href="http://cyrilgodefroy.com/fr/index.php/2008/01/24/117-les-cdn-part2-pourquoi-les-utiliser" target="_blank" class="broken_link"> les raisons d&#8217;utiliser un CDN peuvent être diverses</a>.<br />
Un intérêt notable pour les sociétés souhaitant diffuser un contenu est la <strong>délégation technique</strong> du service, notamment pour des entreprises dont la diffusion de contenu  n’est pas le coeur de métier. Ces services peuvent par exemple  permettre de ne pas impacter un système existant, ou d&#8217;adresser des  problèmes de fiabilité.</p>
<h2>Le CDN accessible à tous</h2>
<p>Historiquement,  les services de CDN sont essentiellement utilisés par de gros acteurs  du Web, notamment pour améliorer des services de streaming de médias.  Ces services étaient en fait réservés à des diffuseurs de contenu de  taille importante ou pour des utilisations massives, principalement en  raison d’un coût élevé.<br />
Mais  on voit aujourd&#8217;hui apparaître des solutions comportant une offre avec  un paiement entièrement à la consommation, qui ouvrent des perspectives  intéressantes concernant notre problématique du buzz.</p>
<p>En  effet, les CDN sont dédiés à la diffusion de ressources statiques, mais  en adaptant une architecture applicative afin de générer des ressources  statiques, la perspective d’un applicatif scalable et reactif s’offre a  nous.</p>
<p>On  peut alors très bien imaginer utiliser une solution CDN dans le cadre  de la publication d&#8217;une application mobile, qui ne connaîtra peut être  pas une fréquentation constante, mais potentiellement un ou plusieurs  pics de fréquentation, par exemple lors de retombées dans la presse.</p>
<h2>Panorama de quelques solutions de CDN</h2>
<p>On peut globalement distinguer deux types de solutions :</p>
<ul>
<li>Des <strong>solutions clés en main</strong></li>
<li>Des <strong>solutions intégrées à des services de<a href="../et-si-nous-definissions-simplement-le-cloud-computing/" target="_blank"> cloud computing</a></strong>, pour lesquelles il est en général nécessaire de réaliser quelques paramétrages et/ou développements</li>
</ul>
<p>Voici  quelques solutions de CDN du marché. Cette liste est loin d&#8217;être  exhaustive et vise à donner un bref aperçu des conditions de ces  services et de leurs tarifs pour une utilisation à petite échelle.</p>
<h3>Solutions &laquo;&nbsp;clés en main&nbsp;&raquo;</h3>
<p>Le service est fourni <strong>clés en main</strong>, il suffit globalement de <strong>paramétrer la configuration DNS</strong> du serveur à mettre en cache.<br />
En moyenne, les prix de ces CDN ne sont pas publics, mais ils se caractérisent généralement par un <strong>prix forfaitaire à l&#8217;entrée</strong>,  assorti d&#8217;un prix à la consommation. Plus les besoins sont importants,  plus le prix d&#8217;entrée sera élevé, mais le prix à la consommation  baissera en conséquence.<br />
De manière générale, le marché des CDN connaît des<a href="http://blog.streamingmedia.com/the_business_of_online_vi/" target="_blank"> variations importantes de prix</a>, qui ont globalement tendance à être revus à la baisse au fil des années.</p>
<h4>Akamai</h4>
<p>Akamai  est un fournisseur historique de CDN et un des plus gros acteur du  secteur : <a href="http://www.akamai.fr/enfr/html/about/facts_figures.html" target="_blank">la société possède 73 000 serveurs répartis dans 70 pays, et  ferait transiter 15 à 20% du trafic internet quotidien par son service</a>.</p>
<h4>Ikoula</h4>
<p>Ikoula est une société française d&#8217;hébergement qui propose notamment un CDN clé en main dans la même veine qu&#8217;Akamai.</p>
<p>Par  contre, cette offre s&#8217;adresse plus particulièrement à la France et à  l&#8217;Europe, étant donné que les datacenters utilisés sont exclusivement en  France et qu&#8217;Ikoula possède son propre datacenter à Reims. Cet aspect  est plutôt intéressant pour les clients français, que ce soit pour les  avantages d&#8217;un support de proximité ou des questions d&#8217;ordre juridique  sur la localisation de l&#8217;hébergement.</p>
<h3>Solutions cloud</h3>
<p>Ce type de service apporte tous les avantages du cloud computing :</p>
<ul>
<li><strong>Élasticité</strong> : l&#8217;infrastructure s&#8217;adapte à la montée en charge</li>
<li><strong>Self-service</strong> : le client est totalement autonome, peut souscrire au service en ligne et y accéder quelques minutes plus tard</li>
<li><strong>Pay as you go</strong> : Facturation en fonction de la consommation réelle (processeur, stockage, trafic réseau)</li>
</ul>
<p>L&#8217;avantage  principal de ce type de service est qu&#8217;il ne comporte aucun prix  forfaitaire. En contrepartie, quelques développements peuvent être  nécessaires pour interfacer le CDN avec son serveur.<br />
Le choix d&#8217;une telle solution soulève toutefois plusieurs problématiques inhérentes aux solutions de cloud computing :</p>
<ul>
<li>Quels changements pour la gouvernance du SI?</li>
<li><a href="../cloud-computing-risques-juridiques/" target="_blank">Quels sont les risques juridiques?</a></li>
</ul>
<h4>Amazon CloudFront</h4>
<p>Le  panel de l&#8217;offre Cloud d&#8217;Amazon Web Services intègre un service de CDN  appelé CloudFront, et permet de configurer directement un espace de stockage statique (buckets  Amazon S3) pour le mettre en cache CDN. On peut facilement automatiser  la mise en cache moyennant quelques développements.</p>
<p>Les  données en cache CDN peuvent être réparties sur les différents  datacenters Amazon, et peuvent être restreintes à l&#8217;Europe par un  hébergement en Irlande.</p>
<h4>Microsoft Azure CDN</h4>
<p>La  solution CDN de Microsoft est techniquement assez équivalente à  CloudFront, mais propose la mise en place du CDN via un simple  paramétrage.</p>
<p>L&#8217;hébergement peut être fait dans le monde entier, et plus spécifiquement en France dans un datacenter à Paris.</p>
<h3>Tableau comparatif</h3>
<p><span style="font-size: 14pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline;"><br />
</span></p>
<p style="text-align: center;"><span style="font-size: 14pt; font-family: Arial; color: #000000; background-color: transparent; font-weight: bold; font-style: normal; text-decoration: none; vertical-align: baseline;"><a href="http://blog.octo.com/wp-content/uploads/2010/12/ComparatifCDN1.jpg"><img class="size-medium wp-image-18389 aligncenter" title="ComparatifCDN" src="http://blog.octo.com/wp-content/uploads/2010/12/ComparatifCDN1-300x172.jpg" alt="" width="600" height="344" /></a><br />
</span></p>
<h4>Lorsqu’un CDN ne suffit pas</h4>
<p>Dans  un contexte où la  distribution de contenu est vitale pour l’entreprise,<a href="https://sites.google.com/a/survol.fr/webperf-user-group/evenements/29-novembre-2010" target="_blank"> l’utilisation de  meta-CDN</a>, tels que Cedexis, proposent d’améliorer la  qualité de service  en utilisant plusieurs CDN à la fois. Ceci apporte  deux avantages non  négligeables:</p>
<ul>
<li>en multipliant les réseaux de diffusion, on <strong>sécurise ce maillon de la chaîne</strong></li>
<li>les   ressources sont diffusés en choisissant à chaque instant le CDN le  plus  disponible, ce qui permet de <strong>lisser les performances  globales</strong>.</li>
</ul>
<h2>Perspectives</h2>
<p>Les services de CDN restent globalement adressés à des acteurs importants du Web, pour qui la diffusion de contenus volumineux et/ou en grand nombre est vitale.</p>
<p>Cependant les solutions de CDN facturées en <em>Pay as you go</em> ouvrent de nouvelles perspectives en permettant de déployer rapidement et à moindre coût des ressources statiques dans un cadre optimisé.</p>
<p>On peut donc facilement envisager d&#8217;héberger les ressources statiques ou des ressources dynamiques rendues statiques pour une petite application de smartphone sans pour autant exploser les coûts.</p>

 <img src="http://blog.octo.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=18174" width="1" height="1" style="display: none;" /><p>Suggestion d'articles :</p><ol>
<li><a href='http://blog.octo.com/quelques-perspectives-pour-2011/' rel='bookmark' title='Quelques perspectives pour 2011&#8230;'>Quelques perspectives pour 2011&#8230;</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.octo.com/perspectives-cdn-et-pay-as-you-go/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automatiser ses tests de web services grâce à soapUI</title>
		<link>http://blog.octo.com/automatiser-ses-tests-de-web-services-grace-a-soapui/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=automatiser-ses-tests-de-web-services-grace-a-soapui</link>
		<comments>http://blog.octo.com/automatiser-ses-tests-de-web-services-grace-a-soapui/#comments</comments>
		<pubDate>Mon, 15 Nov 2010 09:13:12 +0000</pubDate>
		<dc:creator>Sofian Djamaa</dc:creator>
				<category><![CDATA[Architecture et technologies]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[tests automatisés]]></category>
		<category><![CDATA[Web Service]]></category>

		<guid isPermaLink="false">http://blog.octo.com/?p=13943</guid>
		<description><![CDATA[Pour tester des web services (REST/SOAP), je me suis demandé si je devais développer mon framework : des tests de contrats (tests des requêtes XML via un framework de test unitaire) et des  tests d’intégration (via Fitnesse/GreenPepper). Pas forcément compliqué à mettre en place, mais rébarbatif et pouvant être sujet à erreurs (donc, d’éventuelles contraintes supplémentaires [...]
Suggestion d'articles :<ol>
<li><a href='http://blog.octo.com/behavior-driven-development-grace-au-pattern-mvvm-et-greenpepper/' rel='bookmark' title='&laquo;&nbsp;Behavior Driven Development&nbsp;&raquo; grâce au pattern MVVM et GreenPepper'>&laquo;&nbsp;Behavior Driven Development&nbsp;&raquo; grâce au pattern MVVM et GreenPepper</a></li>
<li><a href='http://blog.octo.com/versioning-des-services-principes-et-elements-darchitecture%e2%80%a6/' rel='bookmark' title='Versioning des services: principes et éléments d&#8217;architecture…'>Versioning des services: principes et éléments d&#8217;architecture…</a></li>
<li><a href='http://blog.octo.com/tests-unitaires-et-tests-d%e2%80%99interface-sur-iphone-etat-des-lieux/' rel='bookmark' title='Tests unitaires et tests d’interface sur iPhone : État des lieux'>Tests unitaires et tests d’interface sur iPhone : État des lieux</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.octo.com%252Fautomatiser-ses-tests-de-web-services-grace-a-soapui%252F%22%2C%20%22style%22%3A%20%22small%22%2C%20%22title%22%3A%20%22Automatiser%20ses%20tests%20de%20web%20services%20gr%C3%A2ce%20%C3%A0%20soapUI%22%20%7D);"></div>
<p>Pour tester des web services (REST/SOAP), je me suis demandé si je devais développer mon framework : des tests de contrats (tests des requêtes XML via un framework de test unitaire) et des  tests d’intégration (via Fitnesse/GreenPepper).<br />
Pas forcément compliqué à mettre en place, mais rébarbatif et pouvant être sujet à erreurs (donc, d’éventuelles contraintes supplémentaires de maintenance).</p>
<p>Mes besoins : trouver un outil rapide à prendre en main et gratuit pour automatiser mes tests de web service. On m&#8217;avait parlé de soapUI, je voulais m&#8217;en faire une idée.</p>
<p>Dans cet article je vais, au travers d’un exemple, utiliser soapUI pour effectuer toutes les étapes nécessaires à l’élaboration de tests automatisés : <strong>tests unitaires de requêtes, tests fonctionnels, tests en intégration continue</strong>.<br />
Nous allons donc mettre à l&#8217;épreuve soapUI dans le but de créer une suite de tests automatisés.<br />
<span id="more-13943"></span></p>
<p><strong>Note </strong>: il existe bien sûr d&#8217;autres outils permettant le test de web services (Rational Tester, SOATest, Visual Studio&#8230;) mais cet art<img src="file:///C:/Documents%20and%20Settings/ut1e67/Desktop/Blog/keypad.png" alt="" />icle ne se focalise que sur soapUI qui semblait se rapprocher de mes besoins (cités plus haut).</p>
<p>Notre exemple sera le développement d&#8217;un portail de banque en ligne. Nous allons nous intéresser aux fonctionnalités suivantes :</p>
<ul>
<li><strong>Identification</strong></li>
<li><strong>Récupération de la liste des comptes</strong></li>
<li><strong>Diverses opérations sur un compte : dernières opérations, caractéristiques du compte&#8230;</strong></li>
</ul>
<p>On a un serveur web communiquant avec une interface web distante. L&#8217;identification à l&#8217;interface par l&#8217;utilisateur se fait en deux phases :</p>
<ul>
<li>L&#8217;utilisateur entre son identifiant et son adresse e-mail.</li>
<li>L&#8217;utilisateur entre ensuite un code via un pavé numérique généré.</li>
</ul>
<p style="text-align: center;"><a href="http://blog.octo.com/wp-content/uploads/2010/11/keypad.png"><img class="size-medium wp-image-17324  aligncenter" title="Pavé numérique pour l'identification" src="http://blog.octo.com/wp-content/uploads/2010/11/keypad-300x188.png" alt="" width="300" height="188" /></a></p>
<p>L&#8217;utilisateur doit entrer un code dans les espaces restant correspondant à son mot de passe. Les positions définies sont générées aléatoirement.</p>
<p>Voici la cinématique entre le client et le serveur :</p>
<p style="text-align: center;"><a href="http://blog.octo.com/wp-content/uploads/2010/11/cinematique.png"><img class="alignnone size-full wp-image-17325" title="Cinématique du processus d'identification" src="http://blog.octo.com/wp-content/uploads/2010/11/cinematique.png" alt="" width="368" height="130" /></a></p>
<p>Commençons notre projet soapUI :</p>
<p style="text-align: center;"><a href="http://blog.octo.com/wp-content/uploads/2010/11/projet-soapui1.png"><img class="alignnone size-full wp-image-17340" title="Structure d'un projet soapUI" src="http://blog.octo.com/wp-content/uploads/2010/11/projet-soapui1.png" alt="" width="416" height="299" /></a></p>
<p>Pour démarrer c&#8217;est très simple : il suffit de créer un projet soapUI et d&#8217;indiquer l&#8217;URL du WSDL (contrat) de notre première requête. SoapUI se charge de créer un squelette de requête selon la définition du contrat. Un pré-requis tout de même, le serveur exposant les WSDL doit être démarré.</p>
<p><strong>La logique d&#8217;organisation de soapUI est similaire à celle d&#8217;un projet de développement</strong> : un projet contient plusieurs end-points (point d&#8217;accès à un service exposé) qui contiennent chacun une liste de requêtes.</p>
<h2>Un test, puis un autre</h2>
<p>Pour notre exemple, il y a 2 end-points et 2 requêtes : login et (validate) pin.<br />
Démarrons avec la première requête : elle contient un identifiant et un e-mail. SoapUI charge la définition de la requête à partir du WSDL publié. On peut entrer nos valeurs pour voir la réponse du serveur.</p>
<p style="text-align: center;"><a href="http://blog.octo.com/wp-content/uploads/2010/11/test-requet1.png"><img class="alignnone size-full wp-image-17339" title="Requête et réponse" src="http://blog.octo.com/wp-content/uploads/2010/11/test-requet1.png" alt="" width="541" height="309" /></a></p>
<p>On veut maintenant s&#8217;assurer que pour de faux identifiants, le noeud “Result” doit être à faux. SoapUI propose plusieurs types d&#8217;assertions sur les réponses : <strong>tester la valeur d&#8217;un noeud selon XPath, valider le schéma selon le WSDL&#8230;</strong></p>
<p style="text-align: center;"><a href="http://blog.octo.com/wp-content/uploads/2010/11/assert1.png"><img class="size-full wp-image-17337 aligncenter" title="assert" src="http://blog.octo.com/wp-content/uploads/2010/11/assert1.png" alt="" width="556" height="146" /></a></p>
<p>Maintenant que nous avons nos tests sur la requête de login, nous pouvons faire la même chose sur la requête de validation du code pin.</p>
<p>On teste de manière unitaire les 2 requêtes. C&#8217;est intéressant pour détecter des régressions sur les contrats mais pas suffisant pour une couverture de test fonctionnel significative.</p>
<h2>Tester un enchaînement d&#8217;actions utilisateur</h2>
<p>L’enchaînement de requêtes va permettre de simuler un utilisateur.<br />
Un Test Case soapUI (cas de test) exécute chaque requête qu&#8217;il contient. <strong>Plus généralement, un Test Case soapUI exécute chaque élément, appelés “étapes” (Step), séquentiellement.</strong> Une requête est une étape, une injection de propriété également :</p>
<p style="text-align: center;"><a href="http://blog.octo.com/wp-content/uploads/2010/11/steps.png"><img class="size-full wp-image-17341 aligncenter" title="Steps soapUI" src="http://blog.octo.com/wp-content/uploads/2010/11/steps.png" alt="" width="437" height="282" /></a></p>
<p>Dans certains cas, une requête dépend de la réponse à la requête précédente. Pour illustrer, prenons l&#8217;exemple de l&#8217;achat d&#8217;un produit. La première requête est une recherche d&#8217;un produit. La deuxième requête est l&#8217;achat d&#8217;un produit. Pour enchaîner ces requêtes, nous devons récupérer l&#8217;identifiant du produit de la recherche pour l&#8217;utiliser dans la deuxième requête.</p>
<p>Certaines steps de soapUI permettent l&#8217;injection de paramètres entre les requêtes. <strong>Il est possible de sauvegarder des paramètres utilisables par des requêtes différentes (properties) et de passer des paramètres d&#8217;une requête à l&#8217;autre (property transfer)</strong>.</p>
<p>Dans notre cas, l&#8217;utilisateur doit passer par les deux étapes d&#8217;identification. Le souci est que la deuxième étape dépend du résultat de la première.<br />
Pour rappel, les positions pré-remplies du code pin -venant de la réponse de la première requête- sont générées aléatoirement.</p>
<p>Les “property step” ne permettent malheureusement pas de transformer des positions en code pin ! Pour résoudre ce problème, il faut retrousser ses manches et écrire des scripts Groovy permettant de manipuler les requêtes.</p>
<p>Ainsi, on peut initialiser une série de test par un script Groovy lisant du fichier plat (à tout hasard, au format CSV) puis injectant les données récupérées dans les requêtes.<br />
On peut également variabiliser un end-point, des inputs&#8230; Tout pour éviter les paramètres en dur, freins à une automatisation efficace.</p>
<p>Avec un script Groovy permettant de traduire un ensemble de positions en portion de code pin, l&#8217;enchaînement des étapes se fait naturellement :</p>
<pre class="brush:groovy">def tc = testRunner.testCase;
def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )

// Récupérer le noeud de la réponse du login
def holder = groovyUtils.getXmlHolder( "Login - Login request OK#Response" )

// Récupérer la position du pin depuis la réponse
holder.namespaces["def"] = 'http://octo.com/exemple/definitions'
def pinPosition = holder.getNodeValue( "//def:Pinposition" ).split(',')

// Définition du code pin en dur
def pinNumberTable = [1, 0, 2, 0, 5, 4 ]

// Construction du pin à envoyer
def pin = ''
for ( position in pinPosition ) {
	pin += pinNumberTable.get(position.toInteger() - 1)
}

// Injecter le pin dans la requête au service PinPosition
holder = groovyUtils.getXmlHolder( "Pin - Pin OK#Request" )
holder.namespaces["def"] = 'http://octo.com/exemple/definitions'
holder.setNodeValue( "//def:Pin", pin )
holder.updateProperty()</pre>
<p>Notre test case est maintenant un enchaînement de requêtes que l&#8217;on peut exécuter manuellement.</p>
<h2>Tu me passes ton cas de test ?</h2>
<p>Une étape de plus vers le gain de productivité : la réutilisation de cas de test.</p>
<p>Cette fois, on entre dans la logique de design de nos cas de tests. Tout comme du code, les cas de tests soapUI doivent suivre une architecture modulaire pour éviter les duplications.</p>
<p>Reprenons notre exemple. Nous avons donc nos services d&#8217;identification (login + validation du pin). Nous voulons maintenant tester la récupération de la liste des comptes ainsi que la récupération du détail d&#8217;un des comptes (type de compte, plafond de retrait, autorisation de découvert, etc&#8230;).<br />
Suivant le même modèle, on crée un cas de test ayant les requêtes suivantes :</p>
<ul>
<li>Login</li>
<li>Pin</li>
<li>GetListeDeComptes</li>
<li>GetCompteDetail</li>
</ul>
<p>On garde entre les deux premières requête notre script Groovy. On utilise aussi une Property Step pour récupérer, via XPath, un numéro de compte parmi ceux de la liste (GetListeDeComptes) qu&#8217;on injecte à la requête GetCompteDetail.</p>
<p>Maintenant, on veut consulter les dernières opérations d&#8217;un compte :</p>
<ul>
<li>Login</li>
<li>Pin</li>
<li>GetListeDeComptes</li>
<li>GetDernieresOperations</li>
</ul>
<p>Idem pour la liste des cartes associées a un compte&#8230; Bref, on voit que la duplication des 3 premières requêtes se fait sentir !</p>
<p>Plutôt que de réécrire les trois premières requêtes (login, pin, liste des comptes + la Property Step injectant le numéro d&#8217;un compte) pour les deux nouveaux cas de tests, créons un cas de test « récupérer un numéro  compte depuis une liste ».</p>
<p>Ce cas de test sera ensuite réutilisé dans les cas « DetailCompte » et « DernieresOperations ». SoapUI permet de faire cela de deux manières :</p>
<ul>
<li><strong>Graphiquement :</strong> en utilisant l’étape « Run TestCase ». Cette étape permet de démarrer un autre cas de      test présent dans le projet, de lui affecter des valeurs par défaut et de      récupérer des valeurs de sorties. Personnellement, je n’ai pas réussi à      faire cela dans la version gratuite…</li>
<li><strong>Avec un script Groovy :</strong> en invoquant un cas      de test du projet et en lui donnant des propriétés (Property Step)</li>
</ul>
<p style="text-align: center;"><a href="http://blog.octo.com/wp-content/uploads/2010/11/injection_de_requete.png"><img class="size-full wp-image-17344 aligncenter" title="Injection de requête" src="http://blog.octo.com/wp-content/uploads/2010/11/injection_de_requete.png" alt="" width="404" height="362" /></a></p>
<p>On a rendu notre suite de tests modulaire !</p>
<h2>Et maintenant, sans les mains !</h2>
<p>L&#8217;étape supérieure dans l&#8217;automatisation est la suppression de l&#8217;exécution manuelle des scénarios de test.<br />
<strong>soapUI est livré avec un script, testrunner, pour exécuter les tests d&#8217;un projet soapUI en ligne de commande</strong>.<br />
En environnement .NET, on peut donc faire sa tâche <strong>MSBuild </strong>de test de web-services dans son intégration continue qui lance le projet soapUI avec testrunner et parse l&#8217;output.</p>
<p>Côté JAVA, il existe un <strong>plugin Maven</strong> pour soapUI. Démonstration par ce morceau de pom :</p>
<pre class="brush:xml">
<plugin>
    <groupid>eviware</groupid>
    <artifactid>maven-soapui-plugin</artifactid>
    <version>3.5.1</version>
    <configuration>
<projectfile>../../../Blog/BlogOcto-soapui-project.xml</projectfile>
<printreport>true</printreport>
    </configuration>
    <executions>
        <execution>
            <id>soapui-test</id>
<phase>integration-test</phase>
            <goals>
                <goal>test</goal>
            </goals>
        </execution>
        </executions>
</plugin>
</pre>
<p>Ceci est à compléter par des tâches pre/post phase servant à démarrer votre serveur d’application préféré pour tester les services.</p>
<h2>Pour aller plus loin</h2>
<p>En plus des tests de recette, il est possible de faire du test de charge. On peut choisir un use-case à dérouler selon un nombre défini d&#8217;utilisateurs simultanés (possibilité d&#8217;inclure de la latence).</p>
<p>Si l&#8217;on travaille en contract-first (on fixe les contrats WSDL puis on implémente), plutôt que de partager uniquement les WSDL, il est possible de mocker les réponses. Cela permet également de partager un projet soapUI (très utile en approche contract-first).</p>
<p>On peut même imaginer une interface web type Fitnesse pour définir des jeux de données d&#8217;entrée aux cas de tests en modifiant le projet soapUI (les projets sont sauvegardés en format XML) ou en générant des fichiers parsés par des scripts Groovy dans le projet soapUI.</p>
<h2>Version pro ou version gratuite ?</h2>
<p>En projet, j’ai pu constater que la version gratuite me suffisait largement.</p>
<p>Les différences entre la version pro et la version basique se font principalement sur l’aide à l’utilisateur. En effet, <strong>la version pro apporte en plus des outils d’aide aux tests</strong> : aide XPath, templates de code Groovy, gestion des données externes via IHM (au lieu d’utiliser des scripts Groovy)…</p>
<p>Tout ce qu’apporte la version pro est faisable en version gratuite mais en plus « geek » !</p>
<h2>Verdict ?</h2>
<p>Pour conclure, soapUI m&#8217;a été d&#8217;une grande aide pour :</p>
<ul>
<li><strong>Enchaîner des requêtes.</strong></li>
<li><strong>Tester la validité des requêtes selon les WSDL.</strong></li>
<li><strong>Tester la non-régression en intégration continue.</strong></li>
</ul>
<p>L&#8217;utilisation des scripts Groovy est un plus pour appliquer des règles de gestion entre des requêtes.</p>
<p>Tout cet article est applicable sorti de l’exemple « Hello World ! ». En effet, l&#8217;exemple cité était la version simple de ce que j&#8217;ai croisé en réalité : les positions et le code pin devaient être encryptés, les deux étapes d&#8217;identifications permettaient de générer un hash servant de token d&#8217;authentification pour les autres requêtes.</p>
<p>La grande question : est-ce que j’aurai pu faire sans ? Dans mon écosystème geek, la réponse est oui. J’ai effectivement gagné beaucoup de temps mais j’ai perdu en intégration avec mon environnement de développement local (en JAVA notamment, même si soapUI s&#8217;intègre avec quelques IDE). J’ai utilisé soapUI en complément de tests unitaires</p>
<p>Dans un contexte plus réaliste, avec des MOA et/ou partenaires impliqués sur le projet (c’était évidemment mon cas), il est très difficile de s’en passer pour les raisons suivantes :</p>
<ul>
<li><strong>Partager les suites de test entre les développeurs/projets/MOA/[insérez votre interlocuteur].</strong></li>
<li><strong>Mocker les réponses pour tester les contrats pour le cas de développement avec un partenaire.</strong></li>
<li><strong>Tester indépendamment d’un Eclipse ou d’un Visual Studio (casser la dépendance MSUnit/jUnit/[insérez votre framework de test]</strong></li>
</ul>
<p>Deux liens pour continuer vous-même :</p>
<ul>
<li>Le site de soapUI avec des tutos et de la doc : <a href="http://www.soapui.org/">http://www.soapui.org/</a></li>
<li>La doc de Groovy pour être le roi du script : <a href="http://groovy.codehaus.org/Documentation">http://groovy.codehaus.org/Documentation</a></li>
</ul>

 <img src="http://blog.octo.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=13943" width="1" height="1" style="display: none;" /><p>Suggestion d'articles :</p><ol>
<li><a href='http://blog.octo.com/behavior-driven-development-grace-au-pattern-mvvm-et-greenpepper/' rel='bookmark' title='&laquo;&nbsp;Behavior Driven Development&nbsp;&raquo; grâce au pattern MVVM et GreenPepper'>&laquo;&nbsp;Behavior Driven Development&nbsp;&raquo; grâce au pattern MVVM et GreenPepper</a></li>
<li><a href='http://blog.octo.com/versioning-des-services-principes-et-elements-darchitecture%e2%80%a6/' rel='bookmark' title='Versioning des services: principes et éléments d&#8217;architecture…'>Versioning des services: principes et éléments d&#8217;architecture…</a></li>
<li><a href='http://blog.octo.com/tests-unitaires-et-tests-d%e2%80%99interface-sur-iphone-etat-des-lieux/' rel='bookmark' title='Tests unitaires et tests d’interface sur iPhone : État des lieux'>Tests unitaires et tests d’interface sur iPhone : État des lieux</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.octo.com/automatiser-ses-tests-de-web-services-grace-a-soapui/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Un SI pour des tablettes (tactiles)</title>
		<link>http://blog.octo.com/un-si-pour-des-tablettes-tactiles/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=un-si-pour-des-tablettes-tactiles</link>
		<comments>http://blog.octo.com/un-si-pour-des-tablettes-tactiles/#comments</comments>
		<pubDate>Fri, 24 Sep 2010 14:16:28 +0000</pubDate>
		<dc:creator>Yannick Martel</dc:creator>
				<category><![CDATA[Architecture et technologies]]></category>
		<category><![CDATA[Management du SI]]></category>
		<category><![CDATA[Mobilité]]></category>
		<category><![CDATA[services]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[Tablettes]]></category>

		<guid isPermaLink="false">http://blog.octo.com/?p=15568</guid>
		<description><![CDATA[Nos DSI pensaient avoir passé un cap en mettant en place des infrastructures de site web client, boutique en ligne, support&#8230; Ca a été difficile, notamment pour rendre disponible sur des applications Internet des services de coeur de SI, qui n&#8217;avaient pas du tout été conçus dans cette logique, mais au moins on espérait en [...]
Suggestion d'articles :<ol>
<li><a href='http://blog.octo.com/sca-quel-apport-pour-la-soa/' rel='bookmark' title='SCA, quel apport pour la SOA?'>SCA, quel apport pour la SOA?</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.octo.com%252Fun-si-pour-des-tablettes-tactiles%252F%22%2C%20%22style%22%3A%20%22small%22%2C%20%22title%22%3A%20%22Un%20SI%20pour%20des%20tablettes%20%28tactiles%29%22%20%7D);"></div>
<p>Nos DSI pensaient avoir passé un cap en mettant en place des infrastructures de site web client, boutique en ligne, support&#8230; Ca a été difficile, notamment pour rendre disponible sur des applications Internet des services de coeur de SI, qui n&#8217;avaient pas du tout été conçus dans cette logique, mais au moins on espérait en avoir fini avec les remises en cause.</p>
<p>Et bien non: les tablettes tactiles arrivent, iPad, tablettes Android, etc., y compris en B2B, et elles vont changer certains des métiers, dont la vente et la distribution. Et comme les applications Internet, elles vont poser de nouvelles difficultés en nécessitant un accès selon de nouvelles modalités à des services parfois (souvent) profondément enfouis dans nos systèmes d&#8217;information.</p>
<p><span id="more-15568"></span></p>
<h2>Pourquoi?</h2>
<p>Partons d&#8217;une autre question: Pourquoi les applications iPhone sont-elle majoritairement agréables à utiliser et ont-elles contribué notablement au succès de ces smartphones?</p>
<p>Si je peux avancer une réponse, ce serait parce qu&#8217;elles partagent une charte ergonomique stricte et qu&#8217;elles sont construite autour de certains modes d&#8217;interaction. Ces modes d&#8217;interaction sont intuitifs, mais limités, et les applications sont conçues autour de cette limite. Elles sont également conçues autour des cas d&#8217;utilisation spécifiques les plus courants: les use cases d&#8217;un smartphone sont différents de ceux d&#8217;un PC. On va par exemple utiliser un PC pour réserver un billet d&#8217;avion, alors que le smartphone va permettre de s&#8217;enquérir des horaires, des retards et de s&#8217;enregistrer.</p>
<p>La même dichotomie se retrouve sur les tablettes tactiles vs les applications pour PC, même sur des applications d&#8217;entreprise. Imaginons un système de vente, permettant de réaliser une souscription de téléphonie mobile, un upgrade de forfait, un changement de mobile&#8230; Le cas d&#8217;usage de l&#8217;application sur PC est celui d&#8217;un opérateur en centre d&#8217;appel ou en agence, qui a déjà réalisé le dialogue avec son client et passe à la phase administrative, assis à son poste, alors que le client attend. La phase intense d&#8217;échange avec le client est plus ou moins terminée, les choix sont faits.</p>
<p>La même application sur tablette aura une autre orientation: elle va pouvoir être utilisée dès le début de la vente, alors que les choix ne sont pas réalisés. Le vendeur est en proximité physique avec le client, il dialogue avec lui et la tablette est une aide pour ce dialogue, y compris pour le client lui-même qui la voit et interagit avec. Le vendeur peut comparer des terminaux, tester la couverture, montrer des options, choisir des offres&#8230; Il n&#8217;est pas concentré sur son interaction avec son ordinateur, mais sur celle avec son client.</p>
<p>Du coup, il apparaît que l&#8217;application qui justifie d&#8217;introduire une tablette tactile en distribution ne peut pas être un simple portage technique, mais demande une réécriture avec une logique d&#8217;interaction différente. Reformater les écrans d&#8217;une application Web ou d&#8217;un portail donnant accès à plusieurs applications conçues pour un PC ne suffit pas. Il faut tout repenser en partant des cas d&#8217;utilisation les plus importants, en utilisant la grammaire d&#8217;interactions de la tablette et en veillant à ne pas détourner l&#8217;utilisateur du dialogue avec son client. Ceci implique alors d&#8217;accéder aux données et aux services du système d&#8217;information d&#8217;une manière différente des application traditionnelles, parce que la logique différente de l&#8217;application tablette et les contraintes techniques de la tablette impliquent des services et modalités d&#8217;accès nouveaux.</p>
<h2>Alors, que faire?</h2>
<p>Nous pouvons nous inspirer des démarches mises en oeuvre pour créer des applications Internet. On considère les applications Internet comme mouvantes, multiples, parfois jetables, parfois même non issues de l&#8217;entreprise mais réalisées par des tiers. Elles doivent pouvoir être réalisées rapidement avec une expertise spécifique, mais sans devoir à chaque fois affronter la complexité du système d&#8217;information et sa dette technique.</p>
<p>Pour ce faire, on mettait en place des couches de services spécifiques, isolant cette galaxie d&#8217;applications légères et agiles de la complexité du coeur de système d&#8217;information. Je propose de suivre une même démarche pour les applications tablettes, en mettant en place une couche de services adaptés à leurs besoins spécifiques, intégrant des services métiers, et peut-être des services techniques partagés.</p>
<p>En plus des cas d&#8217;utilisation spécifiques, quelles contraintes techniques nouvelles? Nous pouvons citer:</p>
<ul>
<li>des protocoles légers (REST / JSON par exemple), parce que la bande passante et la capacité de traitement du terminal &laquo;&nbsp;tablette&nbsp;&raquo; sont plus limitées que sur un PC;</li>
<li>un écran = un service, parce que la fluidité de l&#8217;interaction est primordiale, et que la capacité du terminal est limitée;</li>
<li>des données simples, parce que l&#8217;utilisateur doit rapidement s&#8217;y retrouver et que le terminal tablette ne doit pas avoir à réaliser de conversion de données complexes (pas de modèle pivot trop riche!).</li>
</ul>
<h2>Comment créer cette couche de service?</h2>
<p>Ne pas la créer: la faire émerger. S&#8217;inspirer de l&#8217;excellente <a href="http://www.universite-du-si.com/fr/conferences/4-usi-2009/sessions/821-une-demarche-pour-realiser-des-services-durables">session de l&#8217;USI 2009</a> de mes camarades Benoît Guillou et Dominique Jocal. L&#8217;essence est d&#8217;utiliser deux patterns de définition de service:</p>
<ul>
<li>au départ, un service est créé pour une application, sans préoccupation de réutilisation. Il est défini par un contrat entre un client et un fournisseur, qui repose sur sa signature et le cas d&#8217;utilisation de ce client. On a un pattern &laquo;&nbsp;consumer contract&nbsp;&raquo;, ou &laquo;&nbsp;contrat client&nbsp;&raquo;, où on ne se préoccupe pas de réutilisation, seulement d&#8217;adéquation avec un besoin. On respecte néanmoins les bonnes pratiques d&#8217;implémentation des services (nommage, granularité, gestion d&#8217;états&#8230;) et de développement;</li>
<li>lorsque des services similaires sont nécessaires pour plusieurs clients (au moins trois!), on peut envisager une mutualisation et mettre en place un pattern &laquo;&nbsp;consumer-driven contract&nbsp;&raquo;. Le contrat de service lie un fournisseur et plusieurs clients. Il repose sur la signature de service et la somme des cas d&#8217;utilisation par les clients.</li>
</ul>
<p>Pourquoi ces patterns? Ils rendent les services facilement testables, et transparents d&#8217;utilisation. Le service respecte le contrat s&#8217;il passe une somme de tests d&#8217;utilisation. On favorise ainsi une approche de développement et de design reposant sur les tests, cruciale pour sécuriser un service qui doit être d&#8217;autant plus fiable qu&#8217;il est utilisé en plusieurs endroits, et donc susceptible de générer plus de perturbations s&#8217;il dysfonctionne.</p>
<h2>En synthèse?</h2>
<p>Les tablettes arrivent, préparons-nous à en tirer partie, pour la satisfaction de nos clients et de nos salariés. Elles nous offrent l&#8217;occasion de tirer partie des enseignements collectés sur les applications Internet pour accélérer le développement d&#8217;applications utiles, performantes et agréables. Elles vont enfin nous permettre de construire des infrastructures SOA pragmatiques, dans un modèle adaptable (possibilité de réagir rapidement par rapport aux besoins nouveaux) plutôt qu&#8217;adapté (couvrant parfaitement un besoin &#8211; réel ou théorique &#8211; tel que compris à un instant donné). Ne nous en privons pas! </p>

 <img src="http://blog.octo.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=15568" width="1" height="1" style="display: none;" /><p>Suggestion d'articles :</p><ol>
<li><a href='http://blog.octo.com/sca-quel-apport-pour-la-soa/' rel='bookmark' title='SCA, quel apport pour la SOA?'>SCA, quel apport pour la SOA?</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.octo.com/un-si-pour-des-tablettes-tactiles/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Réussir votre SOA : Un guide pratique en 10 questions (3/3)</title>
		<link>http://blog.octo.com/reussir-votre-soa-un-guide-pratique-en-10-questions-33/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=reussir-votre-soa-un-guide-pratique-en-10-questions-33</link>
		<comments>http://blog.octo.com/reussir-votre-soa-un-guide-pratique-en-10-questions-33/#comments</comments>
		<pubDate>Mon, 20 Sep 2010 17:43:11 +0000</pubDate>
		<dc:creator>Karim Ben Othman</dc:creator>
				<category><![CDATA[Architecture et technologies]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[Service]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[Web Service]]></category>

		<guid isPermaLink="false">http://blog.octo.com/?p=14662</guid>
		<description><![CDATA[&#8230; la suite du billet précédent Un guide pratique en 10 questions (2/3) 6 ) Comment faciliter la réutilisation d’un service? 5 principales actions peuvent être envisagées pour faciliter et favoriser la réutilisation des services : 1) Prévoir un référentiel pour regrouper et décrire tous les contrats d&#8217;interface existants: Il n&#8217;y pas d&#8217;outil idéal. Selon [...]
Suggestion d'articles :<ol>
<li><a href='http://blog.octo.com/reussir-votre-soa-un-guide-pratique-en-10-questions-23/' rel='bookmark' title='Réussir votre SOA : Un guide pratique en 10 questions (2/3)'>Réussir votre SOA : Un guide pratique en 10 questions (2/3)</a></li>
<li><a href='http://blog.octo.com/reussir-votre-soa-un-guide-pratique-en-10-questions-13/' rel='bookmark' title='Réussir votre SOA : Un guide pratique en 10 questions (1/3)'>Réussir votre SOA : Un guide pratique en 10 questions (1/3)</a></li>
<li><a href='http://blog.octo.com/le-tour-des-esb-en-10-questions/' rel='bookmark' title='Le tour des ESB en 10 questions'>Le tour des ESB en 10 questions</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.octo.com%252Freussir-votre-soa-un-guide-pratique-en-10-questions-33%252F%22%2C%20%22style%22%3A%20%22small%22%2C%20%22title%22%3A%20%22R%C3%A9ussir%20votre%20SOA%20%3A%20Un%20guide%20pratique%20en%2010%20questions%20%283%2F3%29%22%20%7D);"></div>
<p><em><strong>&#8230; la suite du billet précédent <a href="http://blog.octo.com/reussir-votre-soa-un-guide-pratique-en-10-questions-23/"> Un guide pratique en 10 questions (2/3)</a></strong></em><br />
<span id="more-14662"></span><br />
<strong> 6 ) Comment faciliter la réutilisation d’un service?</strong></p>
<p>5 principales actions peuvent être envisagées pour faciliter et favoriser la réutilisation des services :<br />
1) <em>Prévoir un référentiel pour regrouper et décrire tous les contrats d&#8217;interface existants:</em> Il n&#8217;y pas d&#8217;outil idéal. Selon le nombre de services et le budget dont on dispose, les solutions suivantes peuvent être envisagées :</p>
<ul> &#8211; Un simple gestionnaire de contenu (de type wiki): généralement utilisé pour regrouper la description de tous les contrats de services et utilisé en phase de développement.</ul>
<ul> &#8211; Un UDDI (Universal Description Discovery and Integration) : même si la valeur ajoutée de ces solutions reste à prouver, ils peuvent être utilisées comme &laquo;&nbsp;repository&nbsp;&raquo; de services en phase de développement, ou comme &laquo;&nbsp;registry&nbsp;&raquo; en phase d&#8217;exécution (runtime).</ul>
<p>2) <em>Prévoir un dictionnaire de synonymes pour l&#8217;entreprise pour faciliter la réutilisation des services entre les différentes entités : </em> Parfois, la description des champs des contrats d&#8217;interface n&#8217;est pas forcément compréhensible à toutes les entités de l&#8217;entreprise, ce qui peut avoir un impact sur la compréhension du contrat et par conséquent sur sa réutilisation.</p>
<p>3)<em> Faciliter la testabilité du service :</em> Fournir une plateforme de tests des services permet de rendre les services plus accessibles pour le client en lui permettant de bien valider son adéquation avec ses besoins en toute autonomie.</p>
<p>4) <em>Prévoir plusieurs niveaux de traçabilité (Ex : DEBUG, INFO, etc.) activables et désactivables selon le besoin (en développement ou en exploitation) : </em> Cela permet d&#8217;effectuer des analyses approfondies en cas de problèmes et d&#8217;augmenter le degré de confiance du ré-utilisateur du service.</p>
<p>5) <em>Communiquer, communiquer et communiquer autour des services existants, et partager les expériences.</em></p>
<p><strong> 7 ) Comment gérer le cycle de vie d’un service</strong><br />
L&#8217;article suivant traite cette problématique avec les principes d&#8217;architecture qui lui sont associés: <a href="http://blog.octo.com/versioning-des-services-principes-et-elements-darchitecture%E2%80%A6/">Versioning des services : principes et éléments d’architecture…</a></p>
<p><strong> 8 ) Quel style architectural choisir ? (SOAP-RPC ou REST ?)</strong><br />
Le tableau suivant synthétise, selon les cas d&#8217;utilisation, le style architectural adéquat:</p>
<p><em>(Pour plus de lisibilité, merci de cliquer sur le tableau)</em><br />
<a href="http://blog.octo.com/wp-content/uploads/2010/07/tableau-style-Archi1.png"><img class="aligncenter size-full wp-image-13815" title="tableau style Archi" src="http://blog.octo.com/wp-content/uploads/2010/07/tableau-style-Archi1.png" alt="" width="700" height="600" /></a></p>
<p><strong> 9 ) Comment sécuriser les Web services ?</strong><br />
Deux modes de sécurisation des web services existent:<br />
- Sécurisation applicative : en implémentant des mécanismes d&#8217;authentification des clients par le fournisseur de service ou en s&#8217;appuyant sur des standards, comme la stack WS-Security, WS-Trust, etc.<br />
- Sécurisation Hardware : par le déploiement de boîtiers réseaux  (exemple WebSphere DataPower) qui permettent notamment de:</p>
<ul> &#8211; Virtualiser les services : masquer les ressources d&#8217;arrière-plan afin de cacher les structures internes<br />
- Jouer le rôle d&#8217;un firewall en filtrant le contenu XML selon des règles pré-configurées<br />
- Implémenter XML encryption et digital signature<br />
- Contrôler l&#8217;accès aux services web<br />
- Valider les données par rapport à des schémas XML et protège les application des attaques DoS (Denial of Service)</ul>
<p><strong>10) &#8230;et pour conclure?</strong><br />
Au delà de ce guide pratique, il est important de prendre en considération les aspects organisationnels et de gouvernance des services, sujets sur lesquels on s&#8217;étalera dans d&#8217;autres articles. La conjugaison de tous ces facteurs fait qu&#8217;on réussisse ou pas la mise en œuvre d&#8217;une plateforme de services.</p>

 <img src="http://blog.octo.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=14662" width="1" height="1" style="display: none;" /><p>Suggestion d'articles :</p><ol>
<li><a href='http://blog.octo.com/reussir-votre-soa-un-guide-pratique-en-10-questions-23/' rel='bookmark' title='Réussir votre SOA : Un guide pratique en 10 questions (2/3)'>Réussir votre SOA : Un guide pratique en 10 questions (2/3)</a></li>
<li><a href='http://blog.octo.com/reussir-votre-soa-un-guide-pratique-en-10-questions-13/' rel='bookmark' title='Réussir votre SOA : Un guide pratique en 10 questions (1/3)'>Réussir votre SOA : Un guide pratique en 10 questions (1/3)</a></li>
<li><a href='http://blog.octo.com/le-tour-des-esb-en-10-questions/' rel='bookmark' title='Le tour des ESB en 10 questions'>Le tour des ESB en 10 questions</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.octo.com/reussir-votre-soa-un-guide-pratique-en-10-questions-33/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Intégration d’applications sur le Cloud</title>
		<link>http://blog.octo.com/integration-d%e2%80%99applications-sur-le-cloud/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=integration-d%25e2%2580%2599applications-sur-le-cloud</link>
		<comments>http://blog.octo.com/integration-d%e2%80%99applications-sur-le-cloud/#comments</comments>
		<pubDate>Mon, 13 Sep 2010 15:30:20 +0000</pubDate>
		<dc:creator>Matthias Feraga</dc:creator>
				<category><![CDATA[Architecture et technologies]]></category>
		<category><![CDATA[Cloud computing]]></category>
		<category><![CDATA[EAI]]></category>
		<category><![CDATA[ESB]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://blog.octo.com/?p=14223</guid>
		<description><![CDATA[Les entreprises qui ont fait le pari de l&#8217;externalisation ont de plus en plus d’applications sur Internet. S&#8217;ajoutant à cela la nécessité stratégique de pouvoir s’interfacer toujours plus vite avec d&#8217;autres partenaires, de nouveaux besoins d&#8217;intégration sont apparus: la continuité de l&#8217;information entre SI interne et Cloud (scénarios SI2Cloud et Cloud2SI) la continuité de l&#8217;information [...]
Suggestion d'articles :<ol>
<li><a href='http://blog.octo.com/deployer-net-sur-cloud/' rel='bookmark' title='Déployer les applications .NET sur cloud'>Déployer les applications .NET sur cloud</a></li>
<li><a href='http://blog.octo.com/integration-continue-performante-1/' rel='bookmark' title='Intégration continue performante (Part #1)'>Intégration continue performante (Part #1)</a></li>
<li><a href='http://blog.octo.com/petit-dejeuner-comment-batir-votre-cloud-15-novembre/' rel='bookmark' title='Petit-déjeuner : Comment bâtir votre Cloud ? 15 novembre'>Petit-déjeuner : Comment bâtir votre Cloud ? 15 novembre</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.octo.com%252Fintegration-d%2525e2%252580%252599applications-sur-le-cloud%252F%22%2C%20%22style%22%3A%20%22small%22%2C%20%22title%22%3A%20%22Int%C3%A9gration%20d%E2%80%99applications%20sur%20le%20Cloud%22%20%7D);"></div>
<p>Les entreprises qui ont fait le pari de l&#8217;externalisation ont de plus en plus d’applications sur Internet. S&#8217;ajoutant à cela la nécessité stratégique de pouvoir s’interfacer toujours plus vite avec d&#8217;autres partenaires, de nouveaux besoins d&#8217;intégration sont apparus:</p>
<ul>
<li>la continuité de l&#8217;information entre SI interne et Cloud (scénarios SI2Cloud et Cloud2SI)</li>
<li>la continuité de l&#8217;information entre applications sur le Cloud (scénarios Cloud2Cloud)</li>
</ul>
<p>Le besoin de continuité entre SI interne et Cloud ravive d&#8217;anciennes problématiques. Les principaux freins ont été jusque là:</p>
<ul>
<li>la réticence au changement (manque de confiance dans le Cloud, crainte de perdre le contrôle des données)</li>
<li>le risque encouru en exposant davantage le réseau de l&#8217;entreprise (ouvertures de ports supplémentaires sur le firewall)</li>
<li>le manque de visibilité des adresses IP internes depuis le Cloud (contrainte du NAT, mécanisme IPV4 de passage du réseau public au réseau privé)</li>
</ul>
<p>Face à ces défis nouveaux et anciens, l’intégration d’applications sur le Cloud est en pleine émergence. Tâchons dans cet article d&#8217;appréhender les différentes technologies d&#8217;intégration disponibles et leurs écueils, et d&#8217;identifier les tendances pour les années à venir.</p>
<p><span id="more-14223"></span><em><strong>SI2Cloud &amp; Cloud2Cloud</strong></em></p>
<p>Les éditeurs de SaaS proposent un interfaçage plus ou moins riche avec leurs solutions. Cela va de la simple exposition de services web pour les petits éditeurs, à la couche d’intégration complète de SAP (SAP Information Interchange), en passant par le moteur de workflow de Salesforce.com. Dans de nombreux cas, ces modules d’intégration se suffisent à eux-mêmes, mais sont indissociables de la solution SaaS en question. Ils sont particulièrement appropriés pour des échanges SI2Cloud (à l&#8217;initiative du SI interne) où les contraintes de sécurité sont négligeables, puisqu&#8217;il n&#8217;est pas nécessaire d&#8217;exposer davantage l&#8217;entreprise sur le réseau public.</p>
<p>Des spécialistes comme <a href="http://www.runmyprocess.com/">RunMyProcess</a> et <a href="http://www.castiron.com/">Cast Iron</a> poussent leur offre d&#8217;intégration Cloud2Cloud. L’achat d’une solution standalone et propriétaire pour couvrir ce seul scénario ne semble pas pertinente, dans la mesure où les solutions SaaS exposent et consomment déjà des services web, voire embarquent un moteur de workflow. C’est la simplicité d’utilisation de ces solutions que l’on appréciera ici, ainsi que l’outillage pour le design et le monitoring des échanges. Leur côté très démocratique et l&#8217;implémentation complète des flux par paramétrage en font plutôt des solutions SaaS.</p>
<p>Aucune de ces solutions SaaS ne permet de passer outre les contraintes de sécurité du SI, ni d&#8217;accéder directement aux ressources internes de l&#8217;entreprise. La problématique des échanges Cloud2SI (à l&#8217;initiative du Cloud) reste entière.</p>
<p><strong><em>Internet Service Bus</em></strong></p>
<p>Le concept embryonnaire d&#8217;Internet Service Bus (ISB) ne ressemble pas à un serveur d’échange classique tel qu’un EAI, un ESB ou tout autre middleware. L’ISB se situe au niveau PaaS et à pour vocation de relayer des messages sur Internet au travers de protocoles rudimentaires comme TCP et HTTP; que les échanges soient à l&#8217;initiative du Cloud ou du SI interne. C’est tout du moins la définition que je vous en propose.</p>
<p>La motivation première qui a conduit aux solutions <a href="http://linxter.com/">Linxter ISB</a>, <a href="http://www.microsoft.com/windowsazure/appfabric/">Microsoft Azure AppFabric</a>, ou encore <a href="http://aws.amazon.com/sqs/">Amazon Simple Queue Service</a>, est la difficulté et la réticence des entreprises à ouvrir leur réseau interne, empêchant les échanges Cloud2SI. En initiant lui-même la connexion, le service lève ici les problématiques de NAT et de firewall:</p>
<p style="text-align: center;"><img class="aligncenter" title="Internet Service Bus" src="http://blog.octo.com/wp-content/uploads/2010/08/ISB.png" alt="Internet Service Bus" width="305" height="225" /></p>
<p>Les ISB de Linxter et Microsoft sont très proches, puisque tous deux reposent sur Windows Communication Foundation. Ils permettent la négociation automatique du protocole approprié (HTTP ou TCP) et, sur le modèle des réseaux Peer2Peer, d&#8217;établir une connexion directe entre client et service. La plupart des ISB proposent également le queuing de messages.</p>
<p>Pour assurer la continuité entre SI et Cloud, l’ISB peut aussi être employé comme une extension du serveur d’échange interne. C’est typiquement la stratégie Software + Services de Microsoft.</p>
<p style="text-align: center;"><img class="aligncenter" src="http://blog.octo.com/wp-content/uploads/2010/08/SplusS.png" alt="Software + Services" width="350" height="200" /></p>
<p>Dans ce cas, c&#8217;est l&#8217;intégration native entre l&#8217;ESB et l&#8217;ISB qui permet de passer au travers du firewall et du NAT. Une seule liaison permanente et bidirectionnelle relie les deux serveurs d&#8217;échanges, permettant ainsi aux applications internes et aux applications sur le Cloud de communiquer librement.</p>
<p>Les ISB sont bâtis sur un modèle d’architecture distribuée à base d&#8217;API propriétaires, couplant très fortement les systèmes. En outre, là où les serveurs d&#8217;échange actuels ont atteint de très bons niveaux de maturité, les ISB sont pauvres en terme de fonctionnalités d&#8217;intégration, ce qui ne permet pas de couvrir les scénarios Cloud2Cloud:</p>
<ul>
<li>Pas de mécanisme de transformation</li>
<li>Connectivité réduite au strict minimum</li>
<li>Pas de couplage lâche producteur/consommateur</li>
</ul>
<p><em><strong>Integration as usual</strong></em></p>
<p>Les fonctionnalités nécessaires à l’intégration d’applications Cloud2Cloud sont peu ou prou les mêmes qu’à l’intérieur de l’entreprise: la connectivité technique, le mapping de données, les différents patterns d’échange, etc. Pourquoi alors ne pas héberger son ESB de prédilection directement sur une plateforme d&#8217;IaaS comme <a href="http://aws.amazon.com/vpc/">Amazon Virtual Private Cloud</a> ?</p>
<p>Par ailleurs l&#8217;arrivée progressive de l&#8217;IPV6 ne bouleversera pas la manière de gérer la sécurité dans les DSI. Celles-ci seront toujours aussi réticentes à s&#8217;exposer sur le réseau public. Quelle que soit la technologie retenue, un pont logiciel prenant la forme d&#8217;un flux technique générique s&#8217;avère nécessaire entre plateforme d&#8217;intégration interne et externe. L&#8217;approche ESB prend tout son sens au travers d&#8217;une architecture hybride de ce type:</p>
<p style="text-align: center;"><img class="aligncenter" title="Architecture hybride SI et Cloud" src="http://blog.octo.com/wp-content/uploads/2010/08/Hybride.png" alt="Architecture hybride SI et Cloud" width="350" height="253" /></p>
<p>Il faut interfacer un nombre critique d’applications sur le Cloud pour justifier d’une telle architecture. La charge de travail sur un ESB et le traffic réseau étant relativement constants &#8211; au moins étalés &#8211; l’approche IaaS pourrait être économiquement peu avantageuse. C&#8217;est pourtant à mon sens la seule solution qui couvre aujourd&#8217;hui tous les scénarios Cloud2SI, SI2Cloud et Cloud2Cloud. Cette approche présente un autre avantage de taille: offrir une bonne évolutivité en cas d&#8217;externalisation et de rapatriement de services applicatifs.</p>
<p><em><strong>Et pour demain</strong></em></p>
<p>La notion d’ISB reste à préciser. Fort est à parier que les éditeurs ne tarderont pas à se positionner davantage sur ce segment; mais probablement pas sur ce modèle de connecteurs propriétaires qui va à l’encontre de l’esprit même du Cloud Computing. L’ISB a un rôle essentiel dans l’Internet des Objets, où l’un des enjeux est de structurer un très grand nombre d’échanges de données, depuis et vers le Cloud. Au lieu d&#8217;API propriétaires les ISB devraient reposer uniquement sur des standards, qui restent à définir. Pour convaincre les entreprises et toucher l’informatique de gestion, les ISB devront s&#8217;enrichir de nouvelles fonctionnalités. L’approche IaaS semble pour l&#8217;instant plus pérenne. Faut-il alors attendre plusieurs années pour que les éditeurs d’ISB fournissent les mêmes fonctionnalités que les ESB conventionnels ? Il convient de choisir sa solution d’intégration en prenant en compte les scénarios d&#8217;intégration SI2Cloud, Cloud2SI ou Cloud2Cloud présents et à venir, la nature des applications à interfacer (SaaS, PaaS ou IaaS), et la maturité de l’entreprise en termes d’architecture d’échange.</p>

 <img src="http://blog.octo.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=14223" width="1" height="1" style="display: none;" /><p>Suggestion d'articles :</p><ol>
<li><a href='http://blog.octo.com/deployer-net-sur-cloud/' rel='bookmark' title='Déployer les applications .NET sur cloud'>Déployer les applications .NET sur cloud</a></li>
<li><a href='http://blog.octo.com/integration-continue-performante-1/' rel='bookmark' title='Intégration continue performante (Part #1)'>Intégration continue performante (Part #1)</a></li>
<li><a href='http://blog.octo.com/petit-dejeuner-comment-batir-votre-cloud-15-novembre/' rel='bookmark' title='Petit-déjeuner : Comment bâtir votre Cloud ? 15 novembre'>Petit-déjeuner : Comment bâtir votre Cloud ? 15 novembre</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.octo.com/integration-d%e2%80%99applications-sur-le-cloud/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Réussir votre SOA : Un guide pratique en 10 questions (2/3)</title>
		<link>http://blog.octo.com/reussir-votre-soa-un-guide-pratique-en-10-questions-23/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=reussir-votre-soa-un-guide-pratique-en-10-questions-23</link>
		<comments>http://blog.octo.com/reussir-votre-soa-un-guide-pratique-en-10-questions-23/#comments</comments>
		<pubDate>Tue, 07 Sep 2010 15:57:09 +0000</pubDate>
		<dc:creator>Karim Ben Othman</dc:creator>
				<category><![CDATA[Architecture et technologies]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[Service]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://blog.octo.com/?p=14659</guid>
		<description><![CDATA[&#8230; la suite du billet précédent Un guide pratique en 10 questions (1/3) 3) Qu’est-ce qui caractérise un service réussi ? Idéalement un service devrait satisfaire les conditions suivantes: - Réutilisable : Avoir plusieurs clients pour un même service - Évolutif : Les besoins évoluent dans le temps. Il est important que le service soit [...]
Suggestion d'articles :<ol>
<li><a href='http://blog.octo.com/reussir-votre-soa-un-guide-pratique-en-10-questions-33/' rel='bookmark' title='Réussir votre SOA : Un guide pratique en 10 questions (3/3)'>Réussir votre SOA : Un guide pratique en 10 questions (3/3)</a></li>
<li><a href='http://blog.octo.com/reussir-votre-soa-un-guide-pratique-en-10-questions-13/' rel='bookmark' title='Réussir votre SOA : Un guide pratique en 10 questions (1/3)'>Réussir votre SOA : Un guide pratique en 10 questions (1/3)</a></li>
<li><a href='http://blog.octo.com/le-tour-des-esb-en-10-questions/' rel='bookmark' title='Le tour des ESB en 10 questions'>Le tour des ESB en 10 questions</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.octo.com%252Freussir-votre-soa-un-guide-pratique-en-10-questions-23%252F%22%2C%20%22style%22%3A%20%22small%22%2C%20%22title%22%3A%20%22R%C3%A9ussir%20votre%20SOA%20%3A%20Un%20guide%20pratique%20en%2010%20questions%20%282%2F3%29%22%20%7D);"></div>
<p><em><strong>&#8230; la suite du billet précédent <a href="http://blog.octo.com/reussir-votre-soa-un-guide-pratique-en-10-questions-13/"> Un guide pratique en 10 questions (1/3)</a></strong></em></p>
<p><span id="more-14659"></span><br />
<strong>3) Qu’est-ce qui caractérise un service réussi ?</strong></p>
<p>Idéalement un service devrait satisfaire les conditions suivantes:</p>
<p>- <strong>Réutilisable </strong>: Avoir plusieurs clients pour un même service<br />
- <strong>Évolutif </strong>: Les besoins évoluent dans le temps. Il est important que le service soit conçu de telle manière à supporter, du moins, les modifications mineures<br />
- <strong>Autoportant /explicite</strong>, nécessitant peu de documentation pour qu&#8217;il soit réutilisable<br />
- <strong>Facilement testable par le client </strong>: autonomie du client à tester<br />
- <strong>Respectant les contraintes requises de performance et de montée en charge</strong></p>
<p>Des services respectant ces caractéristiques permettent à la DSI de disposer de services à forte valeur ajoutée permettant notamment à l’entreprise de :<br />
- Réduire les coûts d’échanges inter-applications<br />
- Accélérer la mise à disposition de nouvelles fonctionnalités aux utilisateurs</p>
<p><strong>4) Quelles sont les meilleures pratiques pour bien architecturer une plateforme de services ?</strong><br />
Afin de garantir une bonne qualité de service, les principes architecturaux suivants sont à prendre en considération:</p>
<p><em>Réduire le nombre d&#8217;étages inclus dans la composition de service</em><br />
Idéalement, il faut tabler sur 2 niveaux de composition de services (Maximum trois niveaux si on a des processus à gérer). Cela permet d&#8217;éviter le problème de dépendance en termes de qualité de service à travers les différents niveaux de composition et de réduire la  complexité de gestion des versions des services impliqués dans la composition du service (cf. <a href="Versioning des services: principes et éléments d’architecture…" class="broken_link">Versioning des services: principes et éléments d’architecture…</a>).</p>
<p><em>Bien cibler le porteur de la composition</em><br />
La composition de service peut être portée soit par le consommateur du service, soit par le fournisseur de service pour proposer un service de plus forte valeur ajoutée:<br />
-  Si les consommateurs présentent des besoins différents : c’est à la charge de chaque consommateur de composer le service dont il a besoin.<br />
- Si les consommateurs partagent les mêmes besoins : dans ce cas, la composition est à implémenter par le fournisseur de service</p>
<p><em>Pouvoir absorber la montée en charge en termes de sollicitation d&#8217;un service</em><br />
Un service/une plateforme de services qui n&#8217;implémente pas les bonnes pratiques pour gérer les montées en charge peut avoir un lourd impact sur la bonne exécution et la réutilisation du service à terme. Techniquement, des leviers architecturaux et des bonnes pratiques de conception doivent être prévus. Par exemple, la mise en place d’une couche de &laquo;&nbsp;Queuing&nbsp;&raquo; entre le fournisseur et le consommateur de service pour persister les requêtes des clients et lisser la charge pour le fournisseur de service. Une bonne pratique serait par exemple de débloquer les &laquo;&nbsp;threads&nbsp;&raquo; de traitement au niveau fournisseur en gérant des « time-out » quand aucune réponse ne peut être renvoyée à temps, etc.</p>
<p><strong>5) Comment bien concevoir un service? </strong><br />
<strong><em> </em></strong></p>
<ul><strong><em>Qualifier un service</em></strong></ul>
<p><strong><em> </em></strong><br />
Ci-dessous une liste préalable de questions pour qualifier un service :<br />
- Quels sont les bénéficiaires potentiels du service (interne, partenaire, grand public)?</p>
<blockquote><p>L&#8217;identification des types de bénéficiaires potentiels permet de cibler la bonne politique de gouvernance autour de la gestion du/des service(s):<br />
- Pour des bénéficiaires internes à l&#8217;entreprise: la gouvernance du service est totalement interne à l&#8217;entreprise.<br />
- Pour les partenaires externes, la gouvernance du service est partagée avec le partenaire. Dans ce cas, en tant que fournisseur de service, il faudra limiter les impacts et garantir au maximum une compatibilité ascendante des versions de service</p>
<p>Par ailleurs, la connaissance des bénéficiaires permet aussi de fixer le niveau de sécurisation des services et le choix de la politique qui convient le mieux</p></blockquote>
<p>-  Combien de clients potentiels seraient intéressés par le service?</p>
<blockquote><p>Avoir une estimation du nombre de consommateurs à gérer permettra de positionner le curseur vis-à-vis de la généricité des contrats de service. Faut-il s&#8217;orienter vers un service le plus générique possible, ou bien proposer une offre de services pour répondre à des besoins bien particuliers ?</p></blockquote>
<p>- Quelle qualité de service requise ?</p>
<blockquote><p>La connaissance des contraintes de volumétrie, de performance et de disponibilité permet de prendre en considération, dans la conception du service, des bonnes orientations techniques et architecturales permettant d&#8217;atteindre la qualité de service requise.</p></blockquote>
<p><strong><em> </em></strong></p>
<ul><strong><em>Spécifier le service</em></strong></ul>
<p><strong><em></em></strong><br />
Une fois la qualification faite, les points suivants sont à prendre en compte au moment de la spécification du service:<br />
- Étudier la granularité du service pour disposer d’un meilleur compromis entre performance et modularité<br />
- Couvrir un domaine métier donné de telle façon à proposer une cohérence entre les services, et éviter le recouvrement des fonctionnalités qu’ils proposent.</p>
<p>En d&#8217;autres termes, il faut éviter les services « couteau suisse », c&#8217;est à dire le service dont le contrat est tellement générique, que les objets qu&#8217;il traite n&#8217;ont aucune signification fonctionnelle.</p>
<p>La solution pourrait être de développer une « offre de services » autour d’un service principal qui traite un objet métier bien identifié. De point de vue pratique, les éléments ci-dessous orientent la bonne conception des services :<br />
- Éviter le service qui  manipule plusieurs objets métiers, c’est-à-dire la signification de l’objet dépend des paramètres renseignés dans la requête ou la réponse.</p>
<p>- Éviter les champs paramètres/valeurs. Typer plutôt les champs du service. Cette orientation permet à celui qui va l’utiliser d’être bien guidé sans se sentir obligé de parcourir les centaines de pages de spécifications.</p>
<p>- Si le protocole SOAP est choisi, décomposer le service en &laquo;&nbsp;operations&nbsp;&raquo; de telle façon que cela constitue un module homogène autour de l’objet métier manipulé.</p>
<p>- Penser à la distribution/diffusion du WSDL et son partage avec d&#8217;autres interlocuteurs qui auront à utiliser le service en question.  Avoir plus de flexibilité dans la diffusion des services ainsi que leur maintenance.</p>
<p>- Distinguer le volet contractuel des formats de messages du contrat de service  du volet transport (HTTP, JMS, SMTP, etc.)</p>
<p>- Prévoir des services stateless. Aucune context-session ne doit être gérée.</p>
<p>On distingue 2 types de services. Des services &laquo;&nbsp;applicatifs&nbsp;&raquo; constituant un émissaire applicatifs et correspondant plus ou moins  à des services CRUD (Create, Read, Update, Delete) et des services de type &laquo;&nbsp;Processus&nbsp;&raquo;.</p>
<p><strong><em>1) Services applicatifs</em></strong><br />
Ce sont des services qui portent sur des objets métier unitaires et qui permettent d&#8217;exécuter des actions de création, de suppression, de recherche et de vérification. Autour d&#8217;un service principal, l’idée serait de définir une offre de services pour couvrir un périmètre/domaine particulier.</p>
<p><em>Exemple de règle de nommage</em>:<br />
Une règle de nommage pour le service principal pourrait être : Une  [action] + [objet métier]; avec [action] =  put, set, update, create, delete, etc.<br />
Exemple d&#8217;un service Principal : GetStock</p>
<p>Néanmoins, la granularité d’un objet métier est aussi importante, plusieurs variantes d’un objet peuvent en découler pour définir une offre de services:</p>
<p><em>Exemple d&#8217;offre de services</em>:<br />
Si on considère que le service principal  &laquo;&nbsp;GetStock&nbsp;&raquo; couvre 80% des cas d&#8217;utilisation, une offre de services peut se traduire comme suit:</p>
<p>1) En considérant une granularité plus fine de l&#8217;objet métier.<br />
Exemple:<br />
- GetStockRetourClient: l&#8217;objet métier &laquo;&nbsp;StockRetourClient&nbsp;&raquo; est un sous-objet métier de stock<br />
- Etc.</p>
<p>2) En appliquant un filtre sur le service principal.<br />
Exemple:<br />
- GetStockByReference<br />
- Etc.</p>
<p><strong><em>2) Services de type processus</em></strong><br />
Cette typologie de service englobe les services de plus grosse granularité, issus généralement de la composition de services de l’offre de services applicatifs.<br />
- gererTournee<br />
- gererPurchaseOrder<br />
- Etc.</p>

 <img src="http://blog.octo.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=14659" width="1" height="1" style="display: none;" /><p>Suggestion d'articles :</p><ol>
<li><a href='http://blog.octo.com/reussir-votre-soa-un-guide-pratique-en-10-questions-33/' rel='bookmark' title='Réussir votre SOA : Un guide pratique en 10 questions (3/3)'>Réussir votre SOA : Un guide pratique en 10 questions (3/3)</a></li>
<li><a href='http://blog.octo.com/reussir-votre-soa-un-guide-pratique-en-10-questions-13/' rel='bookmark' title='Réussir votre SOA : Un guide pratique en 10 questions (1/3)'>Réussir votre SOA : Un guide pratique en 10 questions (1/3)</a></li>
<li><a href='http://blog.octo.com/le-tour-des-esb-en-10-questions/' rel='bookmark' title='Le tour des ESB en 10 questions'>Le tour des ESB en 10 questions</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.octo.com/reussir-votre-soa-un-guide-pratique-en-10-questions-23/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Réussir votre SOA : Un guide pratique en 10 questions (1/3)</title>
		<link>http://blog.octo.com/reussir-votre-soa-un-guide-pratique-en-10-questions-13/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=reussir-votre-soa-un-guide-pratique-en-10-questions-13</link>
		<comments>http://blog.octo.com/reussir-votre-soa-un-guide-pratique-en-10-questions-13/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 15:37:44 +0000</pubDate>
		<dc:creator>Karim Ben Othman</dc:creator>
				<category><![CDATA[Architecture et technologies]]></category>
		<category><![CDATA[démarche]]></category>
		<category><![CDATA[Service]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://blog.octo.com/?p=14657</guid>
		<description><![CDATA[L&#8217;un des facteurs clé pour la réussite de la mise en place d’une architecture orientée services, c’est de parvenir à identifier et mettre en œuvre des services à forte valeur ajoutée. Cet article synthétise, sous forme de questions pratiques, les principaux éléments et concepts à considérer pour réussir cette transformation du SI. Cet article sera [...]
Suggestion d'articles :<ol>
<li><a href='http://blog.octo.com/reussir-votre-soa-un-guide-pratique-en-10-questions-23/' rel='bookmark' title='Réussir votre SOA : Un guide pratique en 10 questions (2/3)'>Réussir votre SOA : Un guide pratique en 10 questions (2/3)</a></li>
<li><a href='http://blog.octo.com/reussir-votre-soa-un-guide-pratique-en-10-questions-33/' rel='bookmark' title='Réussir votre SOA : Un guide pratique en 10 questions (3/3)'>Réussir votre SOA : Un guide pratique en 10 questions (3/3)</a></li>
<li><a href='http://blog.octo.com/le-tour-des-esb-en-10-questions/' rel='bookmark' title='Le tour des ESB en 10 questions'>Le tour des ESB en 10 questions</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.octo.com%252Freussir-votre-soa-un-guide-pratique-en-10-questions-13%252F%22%2C%20%22style%22%3A%20%22small%22%2C%20%22title%22%3A%20%22R%C3%A9ussir%20votre%20SOA%20%3A%20Un%20guide%20pratique%20en%2010%20questions%20%281%2F3%29%22%20%7D);"></div>
<p>L&#8217;un des facteurs clé pour la réussite de la mise en place d’une architecture orientée services, c’est de parvenir à identifier et mettre en œuvre des services à forte valeur ajoutée. Cet article synthétise, sous forme de questions pratiques, les principaux éléments et concepts à considérer pour réussir cette transformation du SI.</p>
<p>Cet article sera publié en 3 parties :<br />
Partie 1 &#8211; Questions 1 et 2<br />
Partie 2 &#8211; Questions 3 à 5<br />
Partie 3 &#8211; Questions 6 à 10<br />
<span id="more-14657"></span><br />
<strong>1) Qu’est-ce qu’un service ?</strong><br />
Dans le domaine informatique, un service est tout programme exposant une ou plusieurs fonctionnalités à des tierces applications en environnement distribué</p>
<p><strong>2) Comment émergent les services ?</strong><br />
Pour qu’on puisse parler de service, il faut un client et un fournisseur de service.</p>
<p>Dans un processus &laquo;&nbsp;Bottom up&nbsp;&raquo;, un service émerge d’une démarche « Push » initiée par un fournisseur ou « Pull » initiée par un consommateur.</p>
<p>Dans un processus &laquo;&nbsp;Top-down&nbsp;&raquo;, il est la résultante d’une étude plus globale et systémique du SI ou d’un bloc du SI.</p>
<p><strong><em>Processus  Bottom-Up</em></strong></p>
<p><em>- Processus  « push» &#8211; par le fournisseur (Le fournisseur fournit un service le plus « générique » possible)</em></p>
<p><a href="http://blog.octo.com/wp-content/uploads/2010/07/buttom-up-push.png"><img class="alignright size-medium wp-image-13417" title="buttom up push" src="http://blog.octo.com/wp-content/uploads/2010/07/buttom-up-push-300x163.png" alt="" width="300" height="163" /></a></p>
<p>C’est une démarche initiée par un fournisseur qui expose un service et le propose à ses partenaires. Le fournisseur essaie de proposer un service le plus générique possible qui répond au besoin de tous ses partenaires (exemple : les services exposés par ViaMichelin, Amazon, Google, etc.)</p>
<p><em>- Processus « Pull» &#8211;  par le client (Le client demande un service)</em></p>
<p><a href="http://blog.octo.com/wp-content/uploads/2010/07/butom-up-pull.png"><img class="alignright size-medium wp-image-13418" title="butom up - pull" src="http://blog.octo.com/wp-content/uploads/2010/07/butom-up-pull-300x214.png" alt="" width="300" height="214" /></a></p>
<p>Cette démarche est initiée par un consommateur qui exprime le besoin pour un ou plusieurs service(s) lui permettant d’échanger avec des tierces applications. Dans ce cas, le fournisseur essaie de répondre au besoin du consommateur sans forcément prendre en compte des perspectives de réutilisation du service. Cela s&#8217;explique par le fait que ce genre de demande se conjugue généralement avec des impératifs « Time To market » imposés par le client du service.</p>
<p><strong><em>Processus Top-Down (Le service est identifé) </em></strong></p>
<p><a href="http://blog.octo.com/wp-content/uploads/2010/07/top-down.png"><img class="alignright size-medium wp-image-13419" title="top down" src="http://blog.octo.com/wp-content/uploads/2010/07/top-down-140x300.png" alt="" width="140" height="300" /></a></p>
<p>Certains services de ce processus émergent d’une démarche d’urbanisation ou de refonte du SI. Le besoin d’échanges est préalablement étudié et une définition des services est proposée.</p>
<p>Il est vrai que cette démarche garantit une cohérence globale de l’ensemble des services, néanmoins, sa mise en place s’avère un challenge inintelligible dont les bénéfices sont loin d’être acquis.</p>
<p><strong><em>Quelle démarche favoriser?</em></strong><br />
Dans l&#8217;absolu, il n&#8217;y a pas de démarche à favoriser en particulier. Les 3 peuvent co-exister selon le contexte et l&#8217;offre de services existante. Néanmoins, en phase de conception et de mise en œuvre du service, il est primordial de prendre en considération les points suivants:<br />
1) Favoriser une démarche itérative et collaborative entre clients(s) et fournisseurs de services.</p>
<p><a href="http://blog.octo.com/wp-content/uploads/2010/07/démarche1.png"><img class="alignright size-medium wp-image-13420" title="démarche" src="http://blog.octo.com/wp-content/uploads/2010/07/démarche1-300x251.png" alt="" width="300" height="251" /></a></p>
<p>Pourquoi? Parce qu&#8217;un service est un processus dont le résultat ne préexiste pas à la demande du client, cela signifie que le client va devoir s’engager vis-à-vis d’un fournisseur avant que la service ne soit réalisée, c’est-à-dire avant qu’il puisse évaluer la qualité de ce résultat, puisque celle-ci ne pourra être  évaluée qu’une fois le service réalisé. Ce décalage temporel entre  l’engagement de la transaction client/fournisseur et la réalisation du service crée une situation d’incertitude. D’où l’importance des méthodologies de mise en œuvre projet concernant ce type de besoin.<br />
2) Penser un service donné en tant qu&#8217;<strong>offre de services</strong>, plutôt qu&#8217;un mono-service qui essaie de répondre à tous les besoins<br />
3) Ne pas considérer l&#8217;étude d&#8217;urbanisation, s&#8217;il y en avait une, comme une cible en elle même, mais plutôt comme un fil conducteur pour la cible.</p>

 <img src="http://blog.octo.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=14657" width="1" height="1" style="display: none;" /><p>Suggestion d'articles :</p><ol>
<li><a href='http://blog.octo.com/reussir-votre-soa-un-guide-pratique-en-10-questions-23/' rel='bookmark' title='Réussir votre SOA : Un guide pratique en 10 questions (2/3)'>Réussir votre SOA : Un guide pratique en 10 questions (2/3)</a></li>
<li><a href='http://blog.octo.com/reussir-votre-soa-un-guide-pratique-en-10-questions-33/' rel='bookmark' title='Réussir votre SOA : Un guide pratique en 10 questions (3/3)'>Réussir votre SOA : Un guide pratique en 10 questions (3/3)</a></li>
<li><a href='http://blog.octo.com/le-tour-des-esb-en-10-questions/' rel='bookmark' title='Le tour des ESB en 10 questions'>Le tour des ESB en 10 questions</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.octo.com/reussir-votre-soa-un-guide-pratique-en-10-questions-13/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Agilité et SOA ?</title>
		<link>http://blog.octo.com/agilite-et-soa/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=agilite-et-soa</link>
		<comments>http://blog.octo.com/agilite-et-soa/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 16:25:46 +0000</pubDate>
		<dc:creator>Pierre Pezziardi</dc:creator>
				<category><![CDATA[Actualité]]></category>
		<category><![CDATA[Agilité]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://blog.octo.com/?p=6088</guid>
		<description><![CDATA[OCTO sera présent à la table ronde organisée par CIO et Le Monde Informatique sur le thème SOA et Agilité mardi 6 Octobre à l&#8217;Automobile Club de France (Paris 8e). Le séminaire démarrera à 8:45 avec de nombreux intervenants, la table ronde aura elle lieu à 14h45. En espérant vous voir nombreux, promis, nous irons [...]
Suggestion d'articles :<ol>
<li><a href='http://blog.octo.com/erp-et-agilite/' rel='bookmark' title='ERP et agilité'>ERP et agilité</a></li>
<li><a href='http://blog.octo.com/petit-dejeuner-agilite-et-erp-avec-le-temoignage-de-danone-le-22-mars/' rel='bookmark' title='Petit-déjeuner &laquo;&nbsp;Agilité et ERP&nbsp;&raquo; avec le témoignage de Danone, le 22 mars'>Petit-déjeuner &laquo;&nbsp;Agilité et ERP&nbsp;&raquo; avec le témoignage de Danone, le 22 mars</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.octo.com%252Fagilite-et-soa%252F%22%2C%20%22style%22%3A%20%22small%22%2C%20%22title%22%3A%20%22Agilit%C3%A9%20et%20SOA%20%3F%22%20%7D);"></div>
<p>OCTO sera présent à la <a href="http://www.itnewsinfo.com/invitation/SOA2009/index.html" class="broken_link">table ronde organisée par CIO et Le Monde Informatique</a> sur le thème SOA et Agilité mardi 6 Octobre à l&#8217;Automobile Club de France (Paris 8e). Le séminaire démarrera à 8:45 avec de nombreux intervenants, la table ronde aura elle lieu à 14h45.<br />
En espérant vous voir nombreux, promis, nous irons <a href="http://blog.octo.com/informatique-conviviale/">au-delà des poncifs d&#8217;usage sur ce sujet</a> &#8230;</p>

 <img src="http://blog.octo.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=6088" width="1" height="1" style="display: none;" /><p>Suggestion d'articles :</p><ol>
<li><a href='http://blog.octo.com/erp-et-agilite/' rel='bookmark' title='ERP et agilité'>ERP et agilité</a></li>
<li><a href='http://blog.octo.com/petit-dejeuner-agilite-et-erp-avec-le-temoignage-de-danone-le-22-mars/' rel='bookmark' title='Petit-déjeuner &laquo;&nbsp;Agilité et ERP&nbsp;&raquo; avec le témoignage de Danone, le 22 mars'>Petit-déjeuner &laquo;&nbsp;Agilité et ERP&nbsp;&raquo; avec le témoignage de Danone, le 22 mars</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.octo.com/agilite-et-soa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Complex Event Processing (CEP), de quoi s&#8217;agit-il?</title>
		<link>http://blog.octo.com/complex-event-processing-cep-de-quoi-sagit-il/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=complex-event-processing-cep-de-quoi-sagit-il</link>
		<comments>http://blog.octo.com/complex-event-processing-cep-de-quoi-sagit-il/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 23:12:33 +0000</pubDate>
		<dc:creator>Karim Ben Othman</dc:creator>
				<category><![CDATA[Architecture et technologies]]></category>
		<category><![CDATA[CEP]]></category>
		<category><![CDATA[Complex event processing]]></category>
		<category><![CDATA[ESP]]></category>
		<category><![CDATA[événements complexes]]></category>
		<category><![CDATA[IEP]]></category>
		<category><![CDATA[Intelligent event processing]]></category>
		<category><![CDATA[SOA]]></category>

		<guid isPermaLink="false">http://blog.octo.com/?p=4660</guid>
		<description><![CDATA[Depuis quelques années, on assiste à l’émergence de nouvelles solutions logicielles, dont le concept à la base est loin d’être nouveau, mais dont l’offre est de plus en plus riche et perfectionnée, à savoir, Complex Event Processing. Alors de quoi s’agit-il ? Complex Event Processing (CEP)? Selon la définition fournie par EPTS (Event Process Technical [...]
Suggestion d'articles :<ol>
<li><a href='http://blog.octo.com/complex-event-processing-2/' rel='bookmark' title='Complex Event Processing'>Complex Event Processing</a></li>
<li><a href='http://blog.octo.com/complex-event-processing-avec-esper/' rel='bookmark' title='Complex Event Processing avec Esper'>Complex Event Processing avec Esper</a></li>
<li><a href='http://blog.octo.com/lanalyse-decisionnelle-en-temps-reel-convergence-entre-big-data-et-complex-event-processing/' rel='bookmark' title='L&#8217;analyse décisionnelle en temps réel Convergence entre Big Data et Complex Event Processing'>L&#8217;analyse décisionnelle en temps réel Convergence entre Big Data et Complex Event Processing</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.octo.com%252Fcomplex-event-processing-cep-de-quoi-sagit-il%252F%22%2C%20%22style%22%3A%20%22small%22%2C%20%22title%22%3A%20%22Complex%20Event%20Processing%20%28CEP%29%2C%20de%20quoi%20s%27agit-il%3F%22%20%7D);"></div>
<p>Depuis quelques années, on assiste à l’émergence de nouvelles solutions logicielles, dont le concept à la base est loin d’être nouveau,  mais dont l’offre est de plus en plus riche et perfectionnée, à savoir, Complex Event Processing.</p>
<p>Alors de quoi s’agit-il ?<span id="more-4660"></span></p>
<h3><strong>Complex Event Processing (CEP)?</strong></h3>
<p>Selon la définition fournie par EPTS (Event Process Technical Society) dans son glossaire publié fin 2008, Complexe Event Processing, (en français, traitement des événements complexes), est tout calcul/traitement exécutant des opérations sur des événements complexes tels que la lecture, la création, la transformation, l’abstraction des données portées par ces événements. En d’autres termes, Complex Event Processing traduit plus des concepts d’analyse d’événements porteurs d’informations prévenant de diverses sources de données que de solutions logicielles.</p>
<h3><strong>Inspiration et concepts</strong></h3>
<p>« Complex Event processing » a été développé vers le début des années 90. C’a été principalement utilisé par les plateformes de simulation en tout genre. Elle doit son inspiration aux concepts développés par <strong>Stephan H.Haechel </strong>dans son livre: «Adapative Entreprise». Le concept de base est traduit par le schéma suivant:</p>
<p><img src="http://blog.octo.com/wp-content/uploads/2009/08/Cycle1.jpg" alt="Cycle" title="Cycle" width="218" height="212" class="aligncenter size-full wp-image-4784" /></p>
<p>Deux dérivés conceptuels se distinguent:</p>
<p><strong>- ESP (Event Stream Processing)</strong>: traite des streams* d’événements ordonnés dans le temps<br />
<strong>- CEP (Complex Event Processing)</strong>: réfère à un processus de traitement d’événements qui assume avoir un Event Cloud* comme input, par conséquent, il n&#8217;y a aucune supposition quant à l’ordre d’arrivée des messages. </p>
<p><strong>(*) </strong>Ces termes sont définis dans le paragraphe suivant</p>
<h3><strong>Un peu de vocabulaire…</strong></h3>
<p>EPTS a publié une première ébauche de <a href="http://complexevents.com/wp-content/uploads/2008/08/epts-glossary-v11.pdf">glossaire </a>regroupant l’ensemble des termes utilisés dans le domaine du CEP.</p>
<p>Le schéma suivant reprend les termes les plus importants extraits de ce glossaire:</p>
<p><img src="http://blog.octo.com/wp-content/uploads/2009/09/Vocab_CEP_V0.51.png" alt="Vocab_CEP_V0.5" title="Vocab_CEP_V0.5" width="650" height="320" class="aligncenter size-full wp-image-5491" /></p>
<p><strong>Event stream (un flux d&#8217;événements)</strong>: une séquence linéaire d’événements ordonnée par rapport à un axe temps.<br />
Cette séquence peut:<br />
- être bornée<br />
- contenir des événements de différents types.</p>
<p><strong>Event Cloud (un nuage d&#8217;événements)</strong>: une séquence d’événements partiellement ordonnée dans le temps. La séquence est engendrée par des relations (entre les événements) autres que le temps. Typiquement, un event cloud :<br />
- est créé par des événements produits par un ou plusieurs systèmes distribués<br />
- peut inclure plusieurs types d’événements, plusieurs steams d’événements, etc.</p>
<p>Cela dit :<br />
- Dans un cloud, il n’y a pas nécessairement de règles permettant d’ordonner les événements.<br />
- Un Event Stream est un cloud, pas l’inverse.</p>
<p><strong>Event source (une source d&#8217;événements)</strong>: un système qui envoie des événements.</p>
<p><strong>Event Sink (un collecteur d&#8217;événements)</strong>: un système qui reçoit des événements</p>
<p><strong>Event Channel (un canal d&#8217;événements)</strong>: un conduit dans lequel les événements partent du système source au système cible.</p>
<p><strong>Event processing Agent (un agent de traitement d&#8217;événements)</strong>: un module logiciel qui traite les événements.</p>
<p><strong>Complex event</strong> (un événement complexe): un événement traduisant une abstraction d’autres événements. Exemple: une transaction en ligne est une abstraction de plusieurs événements (dépôt de l&#8217;article dans le panier, saisie d&#8217;un code réduction, saisie du n° de la carte bancaire, etc.)</p>
<p><strong>Composite event (un événement composé)</strong>: un événement construit par combinaison de plusieurs événements utilisant des constructeurs d’événements particuliers, comme une conjonction, disjonction, etc.</p>
<p><strong>Rule (une règle)</strong>: règle de traitement de l’événement</p>
<p><strong>Window (une fenêtre)</strong>: une portion de stream d’événements bornée </p>
<p><strong>Event template (gabarit d&#8217;événement)</strong>: Traduit un descriptif de l&#8217;événement dont les paramètres sont des variables.</p>
<h3><strong>Domaines d’application</strong></h3>
<p>Complex Event Processing, en tant que concept, répond à tout besoin exigeant en termes de traçabilité, réactivité, disponibilité et prise de décision.  La complexité de mise en œuvre réside dans la définition d’algorithmes de calcul et de corrélation performants ainsi que de processus et règles métiers optimisés. </p>
<p>Les domaines d’application sont divers et variés. Ci-dessous quelques exemples:</p>
<p>• Traçabilité par le biais de puces RFID<br />
     &#8211; Exemple 1: Fiabilisation de la traçabilité d’objets dans une chaîne logistique<br />
     &#8211; Exemple 2: Traçabilité des bagages dans un aéroport entre le dépôt à l&#8217;enregistrement par le voyageur et le chargement dans l’avion</p>
<p>• Problématiques financières et boursières<br />
     &#8211; Exemple : Détection des <a href="http://en.wikipedia.org/wiki/Microcap_stock_fraud">« Microcap stock fraud »</a><strong> (**)</strong>.</p>
<p>• Optimisation de tournées de flottes de véhicule<br />
     &#8211; Optimisation en temps réel de tournées de flotte par corrélation de positions GPS et état du trafic</p>
<p>• Supervision technique des plateformes<br />
     &#8211; Exemple : Traitement des alertes SNMP remontées par les composants logiciels et les serveurs</p>
<p>• Business Activity Monitoring (BAM)</p>
<p>• Sécurité des systèmes d’information par corrélation d’événements.</p>
<p><strong>(**)</strong> Combine connue dans le domaine boursier et utilisée par les fraudeurs pour manipuler le cours des actions.</p>
<h3><strong>Panorama des solutions logicielles du marché</strong></h3>
<p>Depuis quelques années, on assiste à l’intérêt grandissant des acteurs majeurs de l’édition logicielle pour le Complex Event Processing, après avoir été réservé à une niche d’éditeurs dans le domaine « trading».</p>
<p>Les solutions du marché proposent l’outillage nécessaire pour l’implémentation des concepts inhérents à l’ESP et/ou CEP.  On désigne <strong>Intelligent Event Processing  (IEP)</strong> les solutions implémentant les 2 concepts.</p>
<p>Le schéma suivant trace l’évolution des solutions du marché (inspiré d&#8217;un <a href="http://tibcoblogs.com/cep/2009/07/31/the-cep-market-2009-a-brief-history-lesson/">post de Paul Vincent sur le blog Tibco</a> et mis à jour):</p>
<p><img src="http://blog.octo.com/wp-content/uploads/2009/09/Offre_logicielle_CEP_V11.png" alt="Offre_logicielle_CEP_V11" title="Offre_logicielle_CEP_V11" width="650" height="550" class="aligncenter size-full wp-image-5492" /></p>
<h3><strong>CEP dans la jungle des solutions</strong></h3>
<p>Les  solutions CEP peuvent être intégrées soit dans un périmètre applicatif (utilisation de frameworks comme Esper ou NEsper) ou positionnées comme un module transverse recueillant l’ensemble des événements provenant d&#8217;applications diverses du SI (par exemple, intégrées à une plateforme d&#8217;échanges transverse entreprise à base d&#8217;ESB).</p>
<p>Par rapport aux solutions existantes, de type BPM, BI ou autres, les solutions CEP se caractérisent par :<br />
-	Un traitement continu d’une  masse considérable (plusieurs centaines de milliers par seconde) d’événements provenant de sources d’information différentes<br />
-	D’un besoin de prise de décision en temps réel par rapport à un ensemble d&#8217;événements quelconque surgissant dans une fenêtre temporelle définie. (de quelques secondes, à quelques heures, voire quelques jours)</p>
<p>C’est pour cette raison que ces solutions logicielles ne sont pas positionnées comme des solutions concurrentes, plutôt, complémentaires:<br />
-	<strong>CEP, BI</strong>: solutions d’optimisation du business<br />
-	<strong>BPM, workflow</strong>: solutions de gestion des processus<br />
-	<strong>ESB/EAI</strong>: solution d’infrastructure logicielle<br />
-	<strong>Serveurs physiques, virtualisation</strong>: solutions d’infrastructure physique </p>
<h3><strong>Quelles perspectives?</strong></h3>
<p>On peut dire aujourd’hui que les solutions existantes sont au stade de la « croissance » et dépassent largement l’écosystème «trading» financier, historiquement connues pour. L’évolution et l’adaptation de ce genre de solution sur les prochaines années sera rapide. Selon IDC, ce marché représente 140M$  aujourd’hui et 800M$ en 2012. </p>
<p>Plusieurs initiatives autour de CEP ont été lancées. On note celle la plus significative qui concerne la définition d&#8217;un event metaModel portée par OMG.</p>
<p>Cet article sera suivi par un deuxième présentant un outil du marché ainsi qu’une implémentation d’un cas d’utilisation. </p>

 <img src="http://blog.octo.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=4660" width="1" height="1" style="display: none;" /><p>Suggestion d'articles :</p><ol>
<li><a href='http://blog.octo.com/complex-event-processing-2/' rel='bookmark' title='Complex Event Processing'>Complex Event Processing</a></li>
<li><a href='http://blog.octo.com/complex-event-processing-avec-esper/' rel='bookmark' title='Complex Event Processing avec Esper'>Complex Event Processing avec Esper</a></li>
<li><a href='http://blog.octo.com/lanalyse-decisionnelle-en-temps-reel-convergence-entre-big-data-et-complex-event-processing/' rel='bookmark' title='L&#8217;analyse décisionnelle en temps réel Convergence entre Big Data et Complex Event Processing'>L&#8217;analyse décisionnelle en temps réel Convergence entre Big Data et Complex Event Processing</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.octo.com/complex-event-processing-cep-de-quoi-sagit-il/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

