Back From OW2Con 2011

I was in Paris last week for the OW2 annual conference and I gave a talk called “Petals BPM and the Cloud” during the Open Cloud Summit Session (wow what a name!). This talk was about showing that we have things running and ready to be published in the Cloud. As I said during my talk, difficulty is not to provide the SaaS layer, pushing a Web app to the Cloud is not so hard (and not so interesting). The interesting part is about building the PaaS layer. In the current case, the PaaS will provide “Integration as a Service”, or how we can use Petals Service Bus, to provide ways to integrate, orchestrate, manage and monitoring business services.

My son is an open source fan

My son is an open source fan

So let’s go back on my talk, where I planned to show things working… Unfortunately, I was not able to show anything due to some low resolution problems and this was really a shame; next time I will prepare a video in case of something like that happens. I am going to record these videos this week to show that we have interesting things under development : We can create business processes with Petals BPM and deploy them on the service bus in order to execute and monitor the process itself in a distributed way.

While waiting these videos, here are the slides of my talk. There are sort of ‘zen’ slides so the talk I gave was really important to understand all… So come and see me next time, or just send me comments.

For the other parts of the conference, as usual, there were really interesting presentations and discussions around OW2, open source and Cloud. One fun thing which I learnt was that OW2-Jonas is used in MS Azure Cloud solution as support of J2EE apps (can I also inform that Microsoft was a big sponsor of OW2Con? Yes, really, they gave money for an open source conference, that’s fun). Well, there were so many interesting things and I can not list all here. But open source is really something companies should have a look if they do not did it already, they will be surprised to see how active and professional is the community behind it.

Service Bus Live Monitoring

I explained in the last articles how I tested the Play Framework, Web sockets and how I integrated all this nice stuff with a real example based on a Service Bus, Web services Notifications, etc…

This time, let’s go one step further. We have a Service Bus which is Web service notification enabled like last time. We can bind services to the bus, expose service endpoints as Web services, blahblahblah… But, this time, I am interested on having some real time monitoring of service invocations. It means that each time a message goes through the service bus (a service invocation in fact), I want to know (almmost) immediatly the service response time.
Hopefuly, the PetalsLink Distributed Service Bus I develop and use provides many extension points. One is the capability to add modules to the routing engine ie the software module each message must be able to go through on service request and response. So adding some router module which catch all the messages, timestamp them and then send this monitoring data to someone is quite easy. At the implementation level, this monitoring router module publishes monitoring reports to the service bus notification engine topic dedicated to monitoring stuff.

So, a client interested in monitoring data just has to register itself as subscriber to the monitoring notification topic. Every time a message is published in the topic, it will be delivered to all the subscribers. Up to the subscriber to display data as soon as it can. This is where Play, Web sockets and some cool javascript library came in. Since I never developed javascript stuff, I tried to find an easy to integrate solution to create some moving plots, asking twitter. I finally found the Smoothie Chart library which is really easy to use and updates graph in real time.

The high level architecture of the system can be defined as

The following video shows the result of the complete stack: Each time a message a service is invoked with SOAPUI, a Web service notification is sent to a Play application which subscribed to the monitoring topic, the Play application then pushes the data to the client by using a Web socket. Finally, the javascript code on the client side feeds the Smoothie chart which updates automatically. At the end, it is quite simple and efficient.

Oh, I forgot to say something: This took me 2 or 3 hours to create all this stuff… The code has been published on github in the dsbmanager-webapp project.

Some Play Framework, Service Bus, WS Notification and Web Sockets…

The Context

In the previous post I was introducing some tests I did with Play Framework and Web sockets. To summarize, it was just ‘about’ receiving messages on the Play! application and pushing them to the browser. This time, let’s go one step forward: Let’s add some infrastructure stuff to do something more real…

In the current case, I want to introduce a service bus which allows to create a real integration between service consumers and producers (I need to write another article in response to this nice videocast about integration from Zenexity guys ‘EAI & ESB n’apportent rien si les applications ne sont pas intégrables et interopérables’, but I really need more time to explain my thoughs…).
Using a service bus in the current case (and not for this case in fact…) must bring some added value. Here I choose to show that a service bus, even if it is not so lightweight at all, can provide some real cool features that you can have out of the box. Now, let’s add some event stuff to switch to an event-based world where we can have tons of event producers and let’s say thousands of event consumers. Since I can not setup such hude amount of actors, let’s say that we have one event producer and two event consumers:

  • The event producer wants to publish some stuff somewhere. To illustrate, let’s say that we have a weather sensor connected to our platform.
  • The platform provides a list of topics which producers can use to publish data. One is the weather topic which will be used by the producer above.
  • The event consumers want to be notified on new weather data i.e. as soon as the weather sensor publish new data. To keep it simple, they need to subscribe to the weather topic provided by the platform.

To recap, in the event context, the event producer only knows the service he has to push weather data to, the event consumers just have to subscribe to a topic they are interested in. All the knowledge stuff about producers, consumers, topics and all the mapping is delgated at the service bus level. Yes, true it is exactly like in some topic-based messaging stuff because at the end of the day, it is topic-based messaging stuff…

The Stuff

Now we can speak about the stuff we are going to use in the software point of view for notificaiton actors…

  • The event producer will not be a sensor but a Play! application. The application sends Web service notifications message to the service bus on a given topic.
  • The service bus is (of course) the Petals Distributed Service Bus with some Web service notification modules inside.
  • The event consumers are 1/A Play! application exposing a Web service to receive notification it subscribes to and 2/ A local java application displaying OS X notifications using Growl (let’s use JavaGrowl I published some days ago…). Note that the Play! application which have subscribed to notifications pushes them to their clients (browsers) using the funky Websocket stuff.

Let’s look at what really happens in a short video:

  • I use the Play! powered application play-soap-wsnclient to subscribe to notification on behalf of the play-soap-websocket Web application.
  • In Eclipse, I start a Web service notification powered Web service which subscribes to the same notification topic. Its listener is configured to use JavaGrowl to display incoming notifications.
  • I use play-soap-wsnclient to send notification messages to the notification service hosted on the service bus.
  • Once received, the service bus forwards the notification to all the subscribers using internal routing and WSN stuff.
  • The play-soap-websocket Web application receives a notification and push it to the client browser using Websocket.
  • At the same time, the Java application also receives a notification and display it using Growl.

One (or more) step(s) further…

And what if we have something which is not a Web service which subscribes to notifications? With the help of a service bus like Petals ESB/DSB, we just have to add a component which knows how to speak with the subscriber. For example, let’s say that SOAP is bad and that REST is the best thing ever. Can we have REST services receiving notifications? Yes, we can! Let’s just add the REST connector to the service bus. Another protocol/transport/format? Develop and add the new one. This is where the service bus can also help you. Hopefully, there are also other things which are possible with a service bus, we will see it later in other posts if I have time (as usual): Let’s think about business processes, service orchestration, transformation…
Next time we will have a look on what we can do if we use the distributed feature of the service bus, for example, receiving some notifications on one node and be able to notify subscribers which are bound to other nodes…

Source Code

Logiciels Libres SOA et BPM par PetalsLink

PetalsLink ce n’est pas juste Petals ESB. C’est aussi toute une collection d’outils complémentaires pour créer une véritable pile Open Source. Bertand Escudié, Président de PetalsLink, donne un aperçu de notre vision dans cette vidéo tournée lors de SolutionsLinux 2011.

Tant qu’on y est, PetalsLink s’agrandit et cherche des consultants pour développer le business sur Paris. Des postes en R&D sont aussi ouverts sur Toulouse.

Europe-Trotteur, Play, SOA4All et co.

Les deux dernières semaines ont été bien remplies, en passant par Athènes pour une réunion de travail sur le projet Play puis par Bruxelles pour la revue finale du projet SOA4All (après un détour par Montpellier pour coder un peu), il est temps de faire un bilan de tout cela…

Athènes - Mai 2011

Athènes - Mai 2011

SOA4All

Toute personne déjà venue sur ce blog devrait connaitre un minimum ce projet qui m’a occupé ces trois dernières années. C’est bon je ne devrais plus en parler trop puisque il est maintenant officiellement terminé depuis la fin du mois dernier. La revue finale s’est déroulée aujourd’hui à Bruxelles. Pas de présentation technique pour cette fois, j’ai même pas eu besoin de dire un mot… La session du matin était assez spéciale pour un projet recherche: essayer de vendre le projet a un investisseur (avec un vrai investisseur, mais qui venait sans son chéquier). Bref un jeu de rôle que je trouve un peu grotesque et qui au final n’a rien donné a part trop de travail pour les speakers.

Regardons ce que ce projet a pu m’apporter, apporter à PetalsLink et aux produits associés, les points forts, les points faibles, etc, (en essayant de faire court):

  • + Mon premier projet de recherche européen. Je suis entré dedans dès le début après avoir passé 2 ans a bosser sur Petals ESB à temps plein en tant que développeur, product leader et compagnie. J’avais par le passé travaillé sur un projet ANR pendant presque 3 ans aussi sur le thème du grid computing (cf http://grid-tlse.org).
  • + Petals ESB n’avait jamais été trituré de la sorte (ndlr: faut que je trouve un autre mot que trituré, je l’ai déjà utilisé hier plusieurs fois). La version utilisée dans SOA4All diffère énormément de la version communautaire OW2. En plus de l’ajout de nombreux services, il a été aussi customisé dans tout les sens pour qu’il soit non plus ‘Enterprise Service Bus’ mais ‘Internet Service Bus’. Les protocoles et contraintes de la version entreprise n’étant pas forcément les mêmes que ceux d’Internet.
  • + Le Distributed Service Bus qui en découle est maintenant une base pour de nombreux projets de recherche chez PetalsLink, donc on en entendra encore parler sur ce blog.
  • - Les partenaires du projet avaient une toute autre vision de ce qu’est un middleware, dès la première réunion on a entendu plusieurs fois ‘The middleware is the Internet’. Donc là forcément çà commence pas trop bien.
  • + Heureusement, l’INRIA était là. J’avais déjà eu le plaisir de travailler avec l’INRIA Lyon sur Grid-TLSE, et généralement ces personnes là savent de quoi elles parlent et savent ce qu’est un middleware. On travaille d’ailleurs ensemble sur de nouveaux projets dont Play.
  • -SOA pour tous‘ mais pas pour le projet lui même… Le but du DSB était aussi de fournir cette brique SOA de base. On se retrouve avec des développeurs qui font tous leurs Webapps dans leur coin et qui s’intégrent ‘à la mano’. Dommage il faut recompiler tout si le service est déployé ailleurs…J’ai presque honte de dire la taille de l’installer graphique que j’ai été chargé de faire pour installer les différents modules; allez 800Mo et encore tout les modules ne sont pas présents.
  • + C’est fini, maintenant on va pouvoir faire des vrais projets midleware, SOA et compagnie.

Play

Le projet Play a commencé depuis un peu plus de six mois (je ne parle toujours pas de Play! Framework mais vous devriez vous intéresser à ce Framework Web, le premier tuto est assez bluffant quand on a l’habitude de faire du Spring, du Struts, du GWT ou tout autre Framework Web, Play! est en train de percer et de botter le cul aux autres). Bien que le projet soit encore au début (durée 36 mois), l’activité est assez intense et promet de bonnes choses dans un futur proche. Pour faire rapide, il est question de développer une plateforme événementielle qui utilisera des technos issues/basées sur le Distributed Service Bus, de Complex Event Processing, de P2P, d’adaptation contextuelle, le Cloud, etc, etc, etc… Bref, beaucoup de choses à faire et un Bus de Service, qui va évoluer encore et encore. Ah et on parle aussi de gouvernance au niveau service et évènements, ce qui est un peu plus nouveau pour la partie évènementielle.
Donc la réunion de la semaine dernière à Athènes (ça change de Bruxelles…) a encore une fois tenue ses promesses: du contenu en masse, des cas d’usage qui évoluent pour utiliser au mieux la plateforme et le concept d’Event Marketplace qui se précise. Je pense que je parlerais mieux de tout ça d’ici peu de temps mais les bases sont posées.

Codons!

Ces voyages au sud et au nord de l’Europe m’ont laissé le temps de coder (surtout quand le TGV tombe en panne entre Montpellier et Bruxelles), un article sur une nouvelle feature du DSB a vu le jour hier soir, j’en ferais un autre plus précis dans les jours qui viennent.

Cloud aware large scale distributed SOA

Ma proposition de présentation sur la SOA dans le Cloud intitulée “Cloud aware large scale distributed SOA” a été acceptée pour l’OW2 annual conference qui se tiendra à Paris en novembre.

The Internet is growing fast and is becoming the support for thousands to billions of services prosumers. In parallel, business entities needs to collaborate more, are using Internet as a communication layer and are starting cloud intiatives to expose and consume IT services into public and private clouds.The goal of this presentation/talk is to introduce state of the art solution and to propose OW2-based Open Source response allowing entities to develop and extend their business easily in a cloud-aware way. The approach we are proposing is composed of three major modules : A cloud-aware/federated service bus, a service governance tool and an online Collborative Business Process Editor.The cloud service bus extends the OW2-Petals ESB by enabling service exposition and consumption between service farms by using OW2-ProActive as the framework to build a federated communication layer. Once communication links are established between parties using the cloud middleware, services visibility can be expressed using the OW2-Petals Master governance solution and automatically exposed to defined partners by the service bus. Finally, an online business processes editor is deployed in the cloud and fully connected to the infrastrucutre in order to provide a fully collaborative processes creation using BPMN standards.

Je parlerais donc de mes travaux sur le portage de notre pile SOA dans le Cloud et sur le travail que l’on fait depuis presque trois ans dans le cadre du projet SOA4All avec les gens de chez OW2/INRIA ProActive.

Le programme complet de la conférence est disponible sur le site d’OW2 (notez bien la Free Beer Party après mon talk, j’en aurais bien besoin pour décompresser), les autres slots sont tout aussi intéressants! Bref, encore une très bonne occasion de rencontrer des personnes passionnées et d’avoir de vrai discussions (IRC c’est bien mais F2F c’est mieux).

Pour info, nous présenterons aussi nos travaux actuels sur PRESTO et Petals ESB: French web service protocol for public administrations exchanges – an open-source implementation.

WSMO-Lite approuvé par le W3C

La spécification WSMO-Lite, élaborée principalement dans le cadre du projet SOA4All, vient d’être approuvée par le W3C.

The W3C, the Web’s standardization consortium with a mission to lead the Web to its full potential, has today acknowledged WSMO-Lite, a technology submission led by KMi.

Developed within the EU project SOA4All, WSMO-Lite is a lightweight set of terms for describing the semantics of Web services that builds on the W3C standard SAWSDL. According to the W3C’s ownTeam comment, WSMO-Lite “is a useful addition to SAWSDL for annotations of existing services and the combination of both techniques can certainly be applied to a large number of semantic Web services use cases.”

Source KMi Planet News


La SOA et le Cloud

Le Cloud Computing (certains appellent aussi ça ‘l’informatique dans le nuage’, presque aussi sexy…) est le mot à la mode depuis quelque temps. Tout le monde s’y met, que ce soit les géants d’Internet ou la PME innovante du coin et donc on y retrouve de tout et de n’importe quoi bien sûr… Des tonnes d’annonces sont faites en ce moment et je me réjouis de voir que les fournisseurs Open Source sont de la partie. D’ailleurs, OW2 (que je soutiens évidement fortement dans cette démarche) à lancé il y a quelques mois une initiative sur le sujet : OSCi i.e. Open Source Cloudware Initiative, initiative à laquelle PetalsLink participe bien évidement.

Pour nous, le but est ‘simple’. Pouvoir fournir des solutions SOA dans le Cloud. Comment? Vous le saurez évidement bientôt sur ce blog puisque je devrais leader cette thématique. En attendant, je viens de soumettre une proposition de présentation pour la prochaine conférence annuelle OW2 qui se tiendra à Paris en novembre. Le sujet, “Cloud aware large scale distributed SOA“, part des résultats que nous sommes en train de consolider dans le projet SOA4All et d’étendre à une approche Cloud. La suite bientôt…

Le support de WS-notification* dans Petals ESB

Petals ESB

Image via Wikipedia

Je profite de passer un peu de temps à aider les collègues de l’équipe produit sur le sujet des notifications dans Petals ESB qui est assez récent dans la suite Petals pour proposer un article sur une vision de haut niveau du support des notifications dans le bus de service distribué.

L’architecture et l’intégration

Je ne reviens pas ici sur l’architecture de Petals ESB basée sur JBI (il y a assez d’articles la dessus sur mon blog) mais je voudrais parler de l’architecture choisie pour fournir un support aux notifications dans Petals. Malgré tout le support JBI est important ici car cette intégration est basée sur l’aspect composants JBI de Petals. Pour rappel, un composant JBI est une sorte de plugin qui vient enrichir le container JBI en offrant des fonctionnalités supplémentaires en tant que connecteur protocolaire ou de moteur service (les fameux Binding Components et Service Engines).
L’intégration des notifications est donc exclusivement basée sur des composants JBI via des composants dédiés d’une part et via une intégration dans le Kit de Développement de Composants (CDK) développé au sein du projet.

Du point de vue des spécifications, il est choisit de fournir une implémentation des spécifications WS-Notification de chez Oasis. Une vision simpliste de cette spécification fait intervenir un broker (un intermédiaire intelligent) pour gérer et découpler les émetteurs de notifications et les destinataires. C’est sur ce broker que les émetteurs s’enregistrent, et c’est aussi sur lui que les destinataires informent qu’ils sont intéressés par uu/des types de notifications précises. Pour plus de détails, je vous recommande de jeter un coup d’oeil à la spec elle même ou à Googler le sujet.

Du point de vue de l’intégration, le broker est implémenté dans un composant JBI dédié, le petals-se-notification. Comme tout le travail se passe généralement dans les autres composants JBI, le CDK (qui est le support pour le développement des composants) propose une activation du support des notifications en tant que producteur. Cette activation implique un enregistrement envers le broker dès son démarrage. Malgré cette activation, si aucun producteur n’est enregistré au niveau du broker, il ne se passera rien! En effet, l’architecture actuelle force les consommateurs de notifications à informer le broker de leur interêt pour des notifications via un système de topics. Je passe vite la dessus mais en gros, lorsque le consommateur s’enregistre au niveau du broker, le broker va relayer cette demande avec un contexte associé aux producteurs de notifications. Une fois cette étape achevée, des échanges de messages standard provoqueront potentiellement des notifications envoyées au broker qui fera ensuite son travail de relai.

Les principaux points forts de cette intégration sont :

  1. la possibilité d’utiliser ce médium de notifications pour tracer les échanges entre consommateurs et fournisseurs de services standards. Ces informations peuvent alors être remontées vers une console de BAM par exemple.
  2. L’utilisation du canal JBI pour échanger les notifications. Pas de nouveau canal de communication à créer, tout passe par les couches de communications du bus de service. Comme Petals est un bus de service nativement distribué, cette approche est vraiment un point important.
  3. Le support rapide via un CDK qui fournit toute la mécanique nécessaire pour implémenter ses producteurs et consommateurs de notifications.

Cette intégration a bien sûr des points faibles. Premièrement, il faut absolument que le composant qui fait acte de broker soit présent et robuste pour pouvoir gérer les notifications venant de N fournisseurs en tant que point central. Ensuite, ce broker doit (pour le moment) être unique dans le contexte du bus. En placer un autre sur un autre noeud du bus n’est pas possible actuellement (enfin si c’est possible mais des messages seront perdus).

La suite?

De nouveaux projets sont au programme en cette fin d’année avec pour but (un des buts plutôt) d’aller vers une architecture full EDA intégrée dans le coeur du bus. Cela va normalement supprimer les points négatifs cités précédemment avec notamment la suppression des composants JBI et le développement d’un broker distribué se basant sur l’architecture distribuée de Petals. Cela fera bien sûr de la matière pour les prochains articles de ce blog courant 2011.

En attendant, un prochain article portera surement sur quelque chose de plus technique avec un peu de code, je conseille de faire tourner la démo (disponible ici) qui met en oeuvre Petals ESB, Petals View et les notifications. Elle éclaircira mes dires, car le blahblah c’est bien, passer à l’action c’est mieux!

SOAP, tu es un grand maintenant!

Sanjiva Weerawarana (CEO de WSO2, oui bon je fais de la pub pour les concurrents de PetalsLink) vient de publier un article très intéressant sur son parcours et sur toutes ses contributions autour des Web Services quand il travaillait chez IBM et sur ce qu’il fait depuis qu’il a fondé WSO2.

This is a historic week for SOAP .. it was on April 26, 2000 that the SOAP v1.1 specification was published

“SOAP tu as 10 ans, tu es grand maintenant”. Bref, il va bientôt faire sa crise d’adolescence, alors profitons en avant que cela n’arrive!

Mises à jour Twitter