Présentation d'un MOM open-source Saber Dir - Victor Laborie - Guillaume Penaud Licence ASRALL 25 mars 2015 Middleware Orientés Message 25 mars 2015 1 / 29
Sommaire 1 Introduction 2 Etat de l'art 3 Maquette 4 Bilan Middleware Orientés Message 25 mars 2015 2 / 29
Introduction Sommaire 1 Introduction 2 Etat de l'art 3 Maquette 4 Bilan Middleware Orientés Message 25 mars 2015 3 / 29
Introduction Gestion de projet Composition de l'équipe Guillaume PENAUD (chef de projet) Victor LABORIE Saber DIR Israël OLGUIN SUAREZ (a quitté le projet en semaine 3) Middleware Orientés Message 25 mars 2015 4 / 29
Introduction Planication Rétro-planning Planning Middleware Orientés Message 25 mars 2015 5 / 29
Introduction Fonctionnement sans MOM Chaque application doit savoir communiquer avec les autres Echange de message synchrone (sinon, le message est perdu) Couplage fort entre applications Middleware Orientés Message 25 mars 2015 6 / 29
Introduction Fonctionnement avec MOM Echange de message asynchrone (message persistant) Couplage faible des applications Middleware Orientés Message 25 mars 2015 7 / 29
Introduction Concepts clefs Quelques concepts : Broker : ensemble de serveurs MOM. Queue : le de message Exchange : type de routage Binding : relation entre un exchange et une queue Virtual Hosts : serveur virtuel Middleware Orientés Message 25 mars 2015 8 / 29
Etat de l'art Sommaire 1 Introduction 2 Etat de l'art 3 Maquette 4 Bilan Middleware Orientés Message 25 mars 2015 9 / 29
Etat de l'art Protocoles Un ancêtre : JMS : API java, le plus ancien des standards de messagerie 4 principaux protocoles : AMQP : spécialisé dans les grosses infrastructures MQTT : très léger, utilisé pour les logiciels embarqués STOMP : orienté utilisation en mode texte OpenWire : utilisé dans les projets de la fondation apache Middleware Orientés Message 25 mars 2015 10 / 29
Etat de l'art MOM Nous avons étudiés quatres MOMs : RabbitMQ (2006) HornetQ (2009) Apollo (2012) Qpid (2012) MOM sélectionné pour la réalisation de notre maquette : RabbitMQ Middleware Orientés Message 25 mars 2015 11 / 29
Maquette Sommaire 1 Introduction 2 Etat de l'art 3 Maquette 4 Bilan Middleware Orientés Message 25 mars 2015 12 / 29
Maquette Objectifs Echange et chirement de mail : l'ensemble doit être facilement extensible la couche transport doit être découplée de la couche applicative Industrialisation de la maquette : tous scripts doivent être documentés et normalisés les scripts doivent être transformés en services sysvinit le système doit être scalable et hautement disponible Middleware Orientés Message 25 mars 2015 13 / 29
Maquette infrastructure Middleware Orientés Message 25 mars 2015 14 / 29
Maquette mail-input Middleware Orientés Message 25 mars 2015 15 / 29
Maquette mail-input Middleware Orientés Message 25 mars 2015 16 / 29
Maquette mail-input Middleware Orientés Message 25 mars 2015 17 / 29
Maquette encrypter Middleware Orientés Message 25 mars 2015 18 / 29
Maquette encrypter Middleware Orientés Message 25 mars 2015 19 / 29
Maquette mail-output Middleware Orientés Message 25 mars 2015 20 / 29
Maquette mail-output Middleware Orientés Message 25 mars 2015 21 / 29
Maquette Le broker Middleware Orientés Message 25 mars 2015 22 / 29
Maquette Outils complémentaires Les outils que nous avons crées : infra.sh : gère l'infrastructure via l'outil cli virsh synchronizer.sh : synchronise les vm avec le dépot git benchmarker.sh : envoit des paquets de mails create_daemon.sh : transforme un script en service sysvinit broker1_mom_logconsumer.rb : ache les meta-données des messages passant par les brokers Tous ces scripts ont été normalisés à la demande de nos tuteurs. Middleware Orientés Message 25 mars 2015 23 / 29
Maquette Dicultés rencontrées Voici les problèmes que nous avons rencontrés, et comment nous les avons résolus : traitement avancé de chaînes bash via awk et sed transformer des scripts en service sysvinit logger le trac à l'intérieur de RabbitMQ congurer le load-balancing sur les deux noeuds du broker NOTE : ce dernier point n'a pas pu être résolu. Middleware Orientés Message 25 mars 2015 24 / 29
Maquette Evolutions envisagées Si nous avions disposé de plus de temps (ou d'une quatrième personne sur le projet), nous aurions mis en place : du monitoring, à des ns d'industrialisation du benchmark et des tests de redondances l'implémentation d'une autre aplication (de traduction, de correction,...) une maquette basée sur un MOM diérent Middleware Orientés Message 25 mars 2015 25 / 29
Bilan Sommaire 1 Introduction 2 Etat de l'art 3 Maquette 4 Bilan Middleware Orientés Message 25 mars 2015 26 / 29
Bilan Progression technique Le projet nous a permis de progresser sur les points suivants : connaissance et implémentation des MOM (RabbitMQ) réalisation de scripts de niveau "professionnel" : maîtrise d'awk et de sed mise en place et gestion de services linux avec syvinit mise en place d'une infrastructure kvm mise en place de pacemaker et d'haproxy pour RabbitMQ utilisation de la librairie ruby "bunny" Et plus généralement, sur le travail en équipe et la gestion de projet. Middleware Orientés Message 25 mars 2015 27 / 29
Bilan Valorisation en milieu professionnel Nos connaissances sur les MOM nous ouvrent les portes d'entreprises de grande taille ; particulièrement celles qui implémentent : des EAI : Entreprise Application Integration des ESB : Entreprise Service Bus une architecture de type distribuée Parmis ces entreprise, on trouve notamment des banques, des multinationales, et des entreprises de création vidéoludique. Middleware Orientés Message 25 mars 2015 28 / 29
Bilan Fin Merci de nous avoir écouté ; avez vous des questions? Middleware Orientés Message 25 mars 2015 29 / 29