AMQP : nouvelle generation des middlewares orientés message – RabbitMQ – Alexandre Vasseur à l'USI

merci effectivement aujourd’hui le sujet de cette cession de ces petites 20 minutes qu’on a à partager ensemble c’est les middlewares orientés messages moi-même alexandre vasseur je travaille chez vmware sur les technologies middleware les deux dernières années un mémoire a fait pas mal d’acquisition sur ce volet-là avoir une trajectoire de middleware orienté cloud dont rabbitmq qu’à une implémentation open source d occuper alors qu est ce qu a même occupé on va le voir tout de suite c’est l’objet de cette présentation effectivement quand on pas quand on pense middleware orientés messages on pense jms si on a un bagage un peu java on pense même pu series on pense qu’il co mais globalement ça s’arrête là c’est aussi le constat qu’un analyste a fait il ya quelques temps si on regarde le patrimoine orientés messages d’une entreprise on s’aperçoit de coûts assez conséquents sur les middlewares orientés messages de coûts qui reviennent chez deux acteurs donc sur vraiment une situation quasi monopole a deux qui sont ils cauet et ibm pour de bonnes raisons puisqu’ils ont été innovant il ya longtemps sur ce sujet là parce qu’il s’agit de systèmes critiques puisqu’il connecte plusieurs applications entre elles à des systèmes qui font partie des backbone des entreprises des systèmes de facturation quand vous faites des débits en carte bleue il ya ce très certainement soins m q séries sur un type qu’aux quelque part mais ceci dit comme sur les autres domaines du middleware le marché évolue aussi bien sur les serveurs d’applications vous allez me dire open source om dire gilles aux hauts standards et vous avez vu que ça a créé un marché sur les dix dernières années qui a été sérieusement secoué ça s’est pas limité à websphere weblogic on est tous d’accord donc qu’en est il du middleware et des systèmes de messages globalement il ya déjà six ans jp morgan en 2004 s’est dit ça va pas en regardant l’addition est ce qui ce qui donnait à ses éditeurs ils sont 10 l’an nous on a trop de messages déjà c’est bien sûr critique dans les systèmes bancaires en les systèmes de trading on a beaucoup de messages on n’arrive pas à se différencier des concurrents parce que on est sur une solution qui est celle d’un vendeur donc on a du mal à innover par dessus et à se différencier des concurrents et puis ça va que faire voilà en grossissant le flux de messages là le nombre de systèmes connectés entre eux donc ils sont mis en tête de créer en fait une initiative d’abord interne de standardisation d’un middleware orientés messages de définir qu’est ce que serait un standard orientés messages et puis après ils l’ont ouvert à d’autres banques notamment la deutsche bank par exemple qui contribuent et puis à des éditeurs parce que les éditeurs ils ont une certaine expertise à implémenter des solutions donc à une qpc saem qpc 1 ça veut dire advanced metering protocole d’accord donc c’est un protocole qui définit la manière dont les systèmes communiquent par messages entre eux d’accord ce qui est intéressant dans la qpc que c’est un protocole et une standardisation c’est à dire que ça définit la tête du message sur le réseau et donc dans le groupe de travail on va retrouver un acteur comme cisco par exemple qui intéressait parce que peut-être qu’ils ont des choses à faire dans les routeurs pour accélérer des flux de messages par exemple mais c’est aussi plus qu’un protocole dans le sens où ça va définir un ensemble d’un pays de verbes comment je me connecte à un système orienté message comment je vais écrit pour publier un message comment je m’y à bonn pour consommer les messages est ce qu’il ya des topologies de routage de messages qui vont au delà de la simple connexion déconnexion d’accord par exemple pour faire des topologies de type publishers’ graille j’ai un grand nombre d’abonnés qui se connecte sur un backbone de messages qui reçoivent des flux de messages qui leur sont destinés globalement mqp prend la place d’acheter tp mais sur un segment bien identifiés qui traitement asynchrone et robuste on perd pas de message c’est l’objet c’est sur une stack tcp le port est standardisé par le ghana donc l’autorité qui attribue les ports à occuper aujourd’hui un groupe qui contient à peu près une bonne trentaine d’organisations aussi bien utilisateurs finals qu’éditeur et qui effectivement fait l’objet d’une concurrence saine puisqu’il ya déjà plusieurs implémentations d’aller occuper il y en a une c’est la page que vous connaissez peut-être savez cupides il y en a une chair red hat émergé cette hormone qca un acteur plus historique de niche il y en a une chair rabbitmq ce don qui a atterri chez vmware par le fruit d’une acquisition manière intéressante on retrouve ici un protocole une standardisation et on retrouve aussi beaucoup de l’open source si vous regardez 100% cette solution open source sauveteurs benq parce que c’est un mode hébergé donc c’est un un cloud hébergé de messages alors histoire de voile a posé un peu le les concepts amqp p c’est essentiellement une architecture orientée broker ça doit vous avez avoir un serveur qui est le

serveur de messages cas pour responsabilité de traiter les messages vous allez avoir des producteurs et les consommateurs qui vont se poser entre eux par des sortes de routeurs qui s’appelle d exchange dans la standardisation mqp et qui transmettent les messages aux clients par l’intermédiaire de kew ce qui est intéressant c’est que le client il est connecté via un tube qui peut être unique privé pour lui ou qui peut être partagé et à partir de là il ya une certaine flexibilité en termes de topologie mais globalement avec ces quatre mots broker exchange qui use et binding globalement qui nous indique qui est connecté à kelkoo et qu’elle exchange publie vers quelqu’un on définit des topologies qui sont intéressantes qui vont bien au delà voilà de ce qu’on peut faire par exemple avec jm s i on va mettre ça en avant dans certains cas d’ usage c’est exchange en fait ils peuvent avoir des stratégies de routage donc une des stratégies qui existe est fade out donc globalement si je suis enfin out chaque message va être dupliqué dans tout les clous qui sont connectés à cette exchange intrinsèque manger du broadcasting pour diffuser le message vers tous les clients qui sont connectés même s’il consomme différemment même si on a un qui se déconnectent peut-être que sa cuvée et durable donc il revient plus tard hélas les messages qui sont là et c’est les clous elle même son lot de balancer c’est à dire que si j’ai plusieurs clients qui sont connectés sur la même ku à ce moment là j’ai un autre ballantyne en sortie avec une gestion du client l’an d’accord donc si un client qui est trop lent il va ressort moins de messages par rapport aux clients qui consomment les messages rapidement et c’est une autre stratégie c’est le topic et c’est une notion de topics hiérarchique globalement on va avoir une stratégie de routage qui va être basé sur un heads-up d’accord qui peut être lui même hiérarchique avec des patterns donc de type règle c’est relativement simplifier les toits les dièses et à partir de là on peut avoir un petit jeu si j’envoie un message du type stock nasdaq vmware ou est-ce qu’il va donc dans ce cadre là il va être copié et diffusé vers les trois fils un stock nasdaq cisco va pas aller dans la file du bas et un stock nasdaq general electric va aller dans cette fille là ce qui est intéressant avec cette notion de brokers d’exchange qse que ces diagrammes là en fait sont des diagrammes d’architecturé ils dépendent pas de l’implémentation avec cupid avec rabbitmq avec storm mqp voilà on a une réflexion qui est orienté qu’elle aima topologie de messages comment j’ai un routage entre eux si je réinjecte un message comment ils re circulent etc on voit aussi que ça va assez loin donc un des exemples qui apparaît c’est qu’on peut tout de suite aller vers une discussion beaucoup plus fonctionnel de à quoi sert un système de messages un exemple ici j’ai un groupe d’amis à hugo et mae arthur sont trois amis et mae arthur veulent suivre hugo et quand hugo va faire un tweet en dix ans il est au travail voilà ils veulent peut-être avoir une info d’accord donc ici ils peuvent très bien créer un exchange qui représente la notion d’ a mis d’accord donc les trois sont sur cet excellent jeu là à ce moment là la clé de routage de binding entre les kiwis l’ex-siège bas serait la relation entre les amis donc en l’occurrence la relation d’amitié entre emma hugo par un plus beau et donc quand il publie un message il va être dynamiquement routé vers l’ensemble de ses amis pour ce qui est intéressant c’est que le broker des messages intrinsèquement héberge la notion un social c’est un exemple qui est tiré de ce domaine là ce que je pense c’est une bonne image mais globalement c’est ce que permet de faire occuper l’ensemble de la topologie et dynamique vous avez au niveau des api la possibité craint exchange créer des kew les enlever de reconnecter la de modifier la clé et c’est donc l’ensemble de cette topologie là et dynamique vous pouvez bien sûr la persister l’avoir en configuration l’avoir unis en dynamique etc alors maintenant qu’est ce qui se passe quand on veut vraiment jouer avec la technologie est là au delà de lire la spec on peut essayer rabbitmq donc pour ceux qui sont fans de ubuntu c’est assez simple à faire un petit indice en eau et rabbitmq effectivement c’est une technologie qui a à peu près quatre ans qui a été créée plutôt sur londres par des gens qui a travaillé dans la banque finance etc qui ont vu ce standard émerger qui était déjà bien connecté sur sur le groupe de travail jp morgan et qu’ils sont 10 est intéressant il faut qu’on ait une solution qu’on travaille sur une implémentation et c’est de là que l’histoire ait parlé c’est une histoire qui a effectivement évolué très rapidement et de manière un peu success story pourquoi parce que terreau fertile terreau fertile parce que standard d’accord dont couverture parce que open source rabbitmq est une solution open source avec une licence mozilla a donc tout à fait libérale c’est la gpl avec un volet un peu virale et en plus parce qu’ils ont décidé de l’implémenter en erlang donc c’est un pari risqué on pourrait se dire il ya quatre ans mais vous savez bien car langue est une solution un langage qui revient à la mode facebook l’utilisent dans pas mal de ses systèmes des gros acteurs de l’internet utilise de plus en plus

erlang c’est quoi c’est une plate forme donc c’est un langage plus runtime un peu comme jvm qui a été inventé par ericsson il ya déjà plusieurs quasiment 20 ans pour tous qui essaient softswitch donc les softswitch et les composants qui route les appels on va dire est l’objet de d’ericsson sur cette plateforme là c’était de faire des plateformes qui se met à jour dynamiquement sans downtime et qui affiche un john thain de 9,9 donc ces quelques millisecondes d’interruption parents d’accord et c’est intéressant dans la fonctionnalité qu’on a autour d’un broker de messages parce qu’effectivement on voilà du débit on veut la haute disponibilité on veut de la dynamique cité et on veut de la synchro n’est donc on retrouve beaucoup de choses intéressantes à ce niveau là le volet clustering der langue est tout à fait intéressant par ailleurs donc rabbitmq depuis a été racheté par par vmware je brosse très quelques quelques cas clients et qu’elle est la trajectoire autour de rabbitmq donc bien sûr on peut faire tout un bien sûr on peut le supporter c’est open source mais il y avait un mur derrière avec une équipe de support type en voilà support sur l’open source bien sûr il ya des fonctionnalités d’opérabilité avec une console de pilotage qui nous permet de voir des statistiques de performances je reviendrai sur ses statistiques de performances est ce qu’on peut en sortir il ya des possibilités de mettre les brokers en cluster ça aussi c’est un point intéressant quand vous mettez un rabbitmq en cluster l’ensemble de votre topologie qu’on a vues entre les exchange et que vous et c est intrinsèquement distribués c’est dire si vous changez la topologie sur un des noeuds sur lequel vous êtes connecté les autres ne vont voir ce changement topologie si vous publiez un message sur un des noeuds mais que le consommateur à une ku sur un autre ne y aura un routage interne entre les noeuds pour aiguiller le message là où il doit arriver d’accord et c’est un système donc est complètement élastique dont 40 ans aperçoit un petit peu la trajectoire de vmware ou des middlewares sur cette trajectoire du clad un pouvoir augmenter la capacité de traitement d’un backbone orientés messages en rajoutant des brokers sans réplique et des configurations dans tous les sens a un intérêt et bien sûr après on a un volet avec sécurité et scalabilité on a fait des benchmark avec intel sur nouvellement du billion messages par seconde sur du c’ur du sur des architectures à à faible latence en réseau infiniband et autres autre littérature ce qui me paraît être plus intéressant sur un vrai rabbitmq et a occupé à ces deux choses c’est un c’est l’aspect polyglotte comme un mqp est un standard on n’est pas liée à java et l’émergence de ce standard et des solutions autour a fait qu’on a toute une panoplie de librairie à m occuper donc bien sûr en java mais on en perd on en avance et on en attend d’autres net en rugby il s’agit pas de rappeurs autour d’un truc en java il s’agit vraiment d’une api natives à m occuper puisque la standardisation défini vous souvenez de la tête des messages sur le réseau au-delà de ça rabbitmq s’est aussi orientée vers une stratégie multi broker à ne pas être que m occuper ça aussi c’est intéressant quand on repense un patrimoine orientés messages ou un patrimoine applicatif et son évolution même s’il ya occupé très ouverts peut-être que je veux quand même connecté sahara autre chose xmpp par exemple stomp voilà le protocole de google pop seube d’autres choses comme ça qui font partie de la solution autour de rabbitmq il ya un point qui est aussi fondamental je pense dans l’adoption ces technologies là c’est tout ce qui est web messaging tout ce qui est push vers le browser donc il ya 3 4 ans vous m’auriez dit comme est longue polling je vais bloquer des threads dans mon observeur cette année vous devriez penser rabbitmq il ya une librairie javascript ya une librairie flex et vous pouvez vous brancher à partir d’un browser directement sur un broker rabbitmq ya pas d’apache entre 2 etc si vous aimez notre js vous pouvez très bien mettre un autre js entre 2 et avoir un flux voilà html5 websocket également j’ai fait des tests pour avoir un ordre de grandeur ça m’intriguait j’arrive à pousser 400 messages par seconde verra brothers avec une solution rabbitmq node.js et ce à une négociation de flux donc si je connecte un vieux firefox il va passer en flux autres si je connecte à un safari va prendre websocket et ses technologies aussi intéressantes sur ce cas d’ usage qui vraiment exposé le système orientés messages vers les device vers le mobile qui sont des tendances on l’a vu qu’ils sont évoqués souvent sur ces deux jours pour vous parler d’un cas clients donc si vous jouer à guitar hero si vous jouer à call of duty ou si vous aviez déjà joué à ça globalement il ya 42 millions de joueurs qui jouent à ça vous avez ensuite vu des clans donc vous former des clans notamment sur call of duty des équipes etc vos clients vous avez besoin voilà de communiquer avec eux il n’y a pas que le volet jeu il ya un volet web il ya un volet chat il ya un volet voilà collaboratif en petites équipes à bord aguets mais est un éditeur qui se

spécialise et qui opère une plateforme comme ça pour ces jeux là d’accord puisque les éditeurs de jeux il pense au scénario au marketing etc et agoras guémy opère un runtime qui est la plateforme collaborative orienté clan on va dire et sociale derrière ces jeux là ils utilisent rabbitmq hauteur d’à peu près cent mille messages secondes environ et ça représente à peu près 6000 tunes donc les cuves où elles vont elles viennent en fonction des topologies et de nombre de partis en cours etc on a d’autres acteurs qui sont plutôt sur des sites de poker poker en ligne on voit bien la table de poker qui représenté par un exchange du coup on publie tous les événements sur la table sur les chaînes de ces routes et au travers ils tiennent à peu près 60 mille utilisateurs concurrents connecter avec du javascript donc les brothers directement connectée dessus sur deux serveurs qui sont chez amazon ça vous donne une idée de la puissance de la technologie et en tout 400 son adaptation sur c’est sûr certains cas des usages on a parlé ce matin non pas ce matin tout à l’heure avec le cas d’ usage de salesforce qui fait un peu du mining sur les réseaux sociaux c’est ce que fait de la bbc également ils ont implémenté une solution de datamining des twitts pour comprendre quand est-ce que vous retweetez les pages de la bbc et du coup ils comprennent globalement leur audience non pas en nombre de pages sur le site web et en nombre de retweets dans twitter donc ils ont fait une architecture orientée événement à base de voile à de consommateurs qui remettent des messages le temps de décortiquer l’url dans twitter qui est trop courte et de la remettre en url longue et de l’as rome ap / leur ensemble d’url et d’indexer leur leur mac office derrière pour comprendre quels sont les mails et les pages les plus les plus intéressantes les plus populaires sur les réseaux sociaux il ya bien sûr tout un ensemble de clients à y en a deux qui sont intéressants il ya et rocco qui est intéressant on a parlé aussi ce matin ce suv coussin plateforme de services ruby qui a été racheté par salesforce ya pas très longtemps on l’a vu émerger la présentation salesforce et recouvre fournit un rabbitmq à ce service d’accord vous pouvez avoir dans votre pass ruby un message broker rabbitmq c’est la régie stratégie qu’on a dans cloud foundry donc le plateforme de services vmware on a un service rabbitmq qu’est prêt à l’emploi donc en fait on peut couvrir on va dire avec un vécu à m occuper un ensemble de new skies on va dire bush et web un ensemble de new skies au back office ou on va être plutôt en modernisation d’un parc existant jms mqseries il sans autres et puis une trajectoire en termes d’adoption qui va du classique apt-get installe rabbitmq serveur si vous n’avez pas retenu et voilà je l’utilisais platform as a service avec trois clics dans mon héros coup dans mon club flandrien aux autres la nasa a également développé un cloud pour le gouvernement américain a proposé rabbitmq en tant que service et utilise rabbitmq montant que backbone de 100 cloud infrastructure voilà pour vous brosser le portrait d’un homme occupé rabbitmq vraiment très rapidement dans les vingt minutes qui nous était imparti n’hésitez pas ping et si vous voulez voilà follow up accéder à une démo etc on a plein de démo que vous soyez java ruby ou autre bien sûr ça a été intégré dans spring noter aussi que vmware avait acheté springsource donc bien sûr on a un projet spring aemq huppé et on n’a pas un projet spring rabbitmq télé aussi et puis sinon ben on a à peu près une minute trente pour quelques questions en tout cas je vous remercie de votre attention sur ces 20 minutes je crois qu’il ya un micro qui circulent mais bonjour alors si j’ai bien compris en fin août si j’ai bien lu rabbitmq il n’est pas x à est-ce que ça pose un problème est ce qu’il y a des projets dans l’avenir pour le pour le rendre et que ça tout à fait donc c’est tout à fait exact déjà là la spécification mqp n’intègre pas x à elle a défini ses propres démarcation transactionnel d’accord donc effectivement il est il n’est pas x à la réponse qu’on peut faire simplement sceptiques au rendez-vous et ax à ça n’a pas empêché les gens de l’adopter parce qu’il ya des solutions de type voilà la slow game ressources etc donc il ya des contournements où les implémentations autour d’un point de vue stratégique on a pas volonté implémenter x adam rabbitmq on pense que c’est pas l’heure moncade usage on pense qu’ils voulaient du x à garder votre solution et que ça pour faire du x a dans le message qu’a besoin d’éthique ça et à la fin il vous reste peut-être 1% des new skies qui sont pas ceux qui nous intéressent j’ai une question plus sur des questions de latence première question est ce que rabbitmq supporters dma et deuxième question est ce que ce qu’elle serait si

c’est le cas où ce valet perf qui pourrait qui pourraient être envisagées en termes de latence parce que de thés récemment tibco a annoncé avec son dernier produit ftl descendre au niveau de la nanoseconde en termes de latence en utilisant du 10 gigabit ethernet et du rdm ah ouais c’est une très bonne question globalement il n’y a pas d’ optimisation particulière aujourd’hui dans rabbitmq sur ce périmètre on va dire hardware accélération un accès direct mémoire ou autre on a fait des benchmark avec intel il ya déjà quelques années peut-être deux ans donc l’ordre de grandeur c’était plutôt la minute millisecondes microsecondes millions de messages par seconde sur de l’infiniband d’accord il n’y a pas de petits lisation particulière effectivement antico d’autres acteurs comme terreau vela et ses soins et nine west ont des brokers qui vont dans le hardware qui sont pas forcément mqp donc après il ya des possibilités d’architecturé à deux étages pour les ouvrir sur mp mais en tout cas c’est pas tout cas la stratégie qu’on a sur 1,8 mg kg ou de faire une app l’alliance hardware optimiser ce peut-être celle de cisco à terme je peux pas me prononcer pour eux mais ils sont dans le groupe de travail voilà donc je pense qu’on a atteint le temps limite dernière question oui une dernière question concernant l’évolution de la spécification est occupé j’ai cru lire qu’il y avait pas mal de modifications en fait entre la version 09 et la version 1 0 et que enfin dans ce cadre là valait mieux attendre un petit peu la mise à jour 2 rabbitmq et parce qu’elles supportent encore pris 0,9 alors effectivement très bonne question donc comme comme tout groupe de standards beaucoup de discussions la version qui est actuellement implémentée par tous et qui est la dernière ratifié finalisé celle à 0 9-1 nous qu’on considère voilà prête pour la prod on a des new skies on n’hésite pas à le déployer dans nos cloud etc effectivement il ya des discussions autour d’une 1 0 qui est fonctionnellement beaucoup plus riches a notamment du côté producteurs donc après voilà en fonction de votre cas d’ usage à voir merci