Architectures des applications de l’Internet du Futur  Décentralisées, Partagées, Mobile  par tous   Didier Parigot www-sop.inria.fr/members/Didier.Parigot Didier. [email_address]
Programmable Overlay Network Prototype de recherche 13 000 lignes de Java Avec Baptiste Boussemart (1 an d’ingénieur)
Plan Court CV Survol rapide de PON Contexte : Les quatre couches Quelques petites applications de PON Squelette de programmation  Architecture de PON Architecture Orientée Service Information publiées dans l’Overlay Network Communication, Protocole de transport Conclusion
Mes travaux de recherche Grammaire Attribuée :   FNC-2  [1986-2000] Programmation dirigée par la grammaire, [méta-modèle] par Domain Specific Language (DSL) Programmation  générative  par excellence Fabrique logicielle :   SmartTools  [2000] Programmation  générative Programmation par DSLs, par Aspects Programmation par  composants, Architecture Orientée Services (SOA) Programmable Overlay Network :   PON  [2008] Architecture Orientée Services en Pair à Pair
SOA de SmartTools  CM C3 C2 C1 Instances de composant SOA Locale ConnectTo OSGi Bundles Passage en Réparti Pair à Pair  ? DHT
Organisation en P2P d’une application Organisation Décentralisée Client Fournisseur Fournisseur Client Client Client Client Client Client Client Ses services Ses services Client Arrivée d’un Client Départ d’un Fournisseur Ses services Départ d’un Fournisseur Ses services Arrivée d’un
Pub/Sub des services en pair à pair Réseaux de recouvrement CHORD Client Fournisseur Fournisseur Fournisseur Client Client Client Client Client Client Client Client Fournisseur Ses services Ses services Ses services SOA P2P
PON: les quatre couches OSGi CM C3 Fournisseur Client Bundles Composants OSGi Chord CHORD Navigateur Serveur GWT VirtPipes JXTA
Wireless,  Ad-hoc Network, Mobile Internet of Things The Future of The Internet Extensible  Decentralization Self organization Interoperability  Scalability Security Discovery  Invocation Composition Planification Orchestration Mobility Topology Fault tolerance Load Balancing Reputation Services Components Protocols Resources Underlay Network Virtual Pipes Overlay Network Pub/Sub Overlay Application SOA WEB
Programmable Overlay Network Quelques applications
Chat instantané en P2P Les utilisateurs s'inscrivent ( put ) sur un SON et demandent à être en communication avec quelqu'un ( get ,  connect )
Localisation de Services Le prestataire de services publie pour une zone géographique leurs services dans un SON :  put() l'utilisateur recherche en fonction de sa position, les services dans sa zone :  get()   et se connecte  à un service Utilisateur Prestataire
Publication  d’information en P2P Publication d’une information (une liste) par un utilisateur  Publication, Connexion, Partage, Edition Utilisateur Application de type Web 3.0 Eric Didier
Underlay Network Virtual Pipes Overlay Network Pub/Sub Overlay Application SOA Squelette de programmation  Un DSL  ConnectTo() Put() Connect() Get() Send() Receive()
La programmation avec PON  Ecriture des services  Création d’un projet Ecriture d’un projet Génération et lancement
Programmable Overlay Network Archictecture
Architecture Modulaire de PON Communication Publication/Recherche VirtPipes ST Mod “ local” ST Mod “ PON” CM VP  Key Values Storage Services “ Openchord” ST Mod ... Modules VP Mod ... Modules KVS Mod ... Modules
Architecture Orientée Services  le «  Run-time  » de SmartTools Architecture Orientée Services Composant Orienté Services (publication, recherche) Déclarative à l’aide d’un DSL (CDML) Couplage faible Inversion du contrôle Messages Asynchrones Dynamique (connexion des services) Orchestration Intégration dans  OSGi , Eclipse En mode distribué et décentralisé  Publication, Recherche, Organisation en P2P.
Technologies SOA :  OSGi, Spring, SCA WebServices… Passerelle OSGi Bundle = composant POJO (Objets) SOA locale Protocoles de  communication Internet des Objets The Dynamic Module System for Java™
Publication et recherche des services Architecture Orientee Service ; SOA Appels synchrones sur des objets
Cycle de vie des Bundles: OSGi Gestion : ClassPath Dynamique
SOA de SmartTools au-dessus OSGi Gestionnaire de Composants Déclaration des Services Opération de connexion connectTo(C1, C2) Gestion des messages asynchrones  Passerelle OSGi
Ingénierie dirigée par les modèles  Multi paradigmes Auto utilisée
Intégration de SmartTools dans Eclipse
Programmable Overlay Network Publication et Recherche des Services  en Pair à Pair
Service-Oriented Architecture  + Overlay Network Une ressource = un ensemble de services  = un composant P2P apporte une Architecture Décentralisée  (intelligente) SOA apporte un Modèle de programmation (d’application)
Informations publiées  dans Chord Services  : à chaque création de composant Nom de l’instance du composant-> Description des services du composant ID unique du tuyau virtuel d’entrée du composant ID du tuyau virtuel du gestionnaire de composants Map de services de sorties qui donne pour chacun un ID du tuyaux virtuel de sortie VirtPipes  : à chaque JVM ID-VirtPipe -> ID-VirtPipesService ID-VirtPipesService -> liste des adresses IP + port clé -> valeur put (clé, valeur) valeur ←  get (clé) 0 3 6 9 8 11 1 2
Programmable Overlay Network Communication
Communication à la JXTA Tuyau Virtuel Identificateur Unique par Tuyau API lectures/écritures non bloquantes (NIO) Publication/Recherche des tuyaux ou des services indépendant
Connexion entre A et B (unicast) ST Mod “ local” ST Mod “ PON” CM A CM VirtPipes TCP VirtPipes Chord NIO NIO Chord ST Mod “ local” ST Mod “ PON” A B B A A B PUT GET B
Tuyau de communication : unicast Pour chaque composant un tuyau d'entrée (service fourni) Publié dans le SON : nom du composant -> tuyau Connexion  connect (A,B) , B à distance Le DS de A recherche dans le SON le tuyau d'entrée  de B. Le DS de A crée un proxy associé au tuyau d'entrée de B. Le DS associe les sorties (service requis) de A à ce proxy B. L'opération  connect  s'effectue aussi dans l'autre sens. Autres informations publiées sur le SON Tuyau de service d'un DS pour effectuer les connexions dans le sens inverse .
Connexion entre A et B, B1 (multicast) ST Mod “ local” ST Mod “ PON” CM A CM VirtPipes TCP VirtPipes Chord NIO NIO Chord ST Mod “ local” ST Mod “ PON” GET A.a A.b  PUT B B1 A.a A.b A.a A.b
Tuyau de communication : Multicast Communication en MultiCast, écriture d'un seul message pour l'envoi d'un message vers une même JVM. Pour chaque service en sortie (écriture) d'un composant, publication d'un tuyau de sortie sur le SON. connect (A,B)  et  connect (A,B1) , B et B1 sur la même JVM Le DS de B et B1 recherche sur le SON le tuyau de sortie (écriture) de A pour l'associé au service d'entrée (lecture) de B et B1 Le DS associe ce tuyau au service d'entrée (lecture) de B et B1 Une seule écriture du message pour deux lectures
Distribution de PON Distribution sous  http://gforge.inria.fr/projects/smarttools/ PON (Programmable Overlay Net)  Les Bundles/Plugins de base pour PON. Version Plugins ou Bundles Exemples en version Standalone Chat Transport Le site de PON  http://www-sop.inria.fr /members/Didier.Parigot/ pon/ Informations sur l'installation et utilisation (source plugins/Eclipse) Développement en java  Linux, Windows, Mac, Nokia 800
Petit logiciel http://www-sop.inria.fr/members/Didier.Parigot/pon/
Logiciel modulaire http://www-sop.inria.fr/members/Didier.Parigot/pon/
Underlay Network Virtual Pipes Overlay Network Pub/Sub Overlay Application SOA Conclusion  Quelques perspectives Web Annuaire   intelligent Protocole Serveur de requêtes WorkFlow Alignement
Résumé Architecture Décentralisée = Partagée Pour Tous = Mobile Pluridisciplinaire Petit logiciel
Programmable Overlay Network FIN www-sop.inria.fr/members/Didier.Parigot
Composition Structurelle A A’ g Traitement Donnée B f Transformation Donnée B g’ B’ Traitement g’    g O f Donnée

Architecture Décentralisée

  • 1.
    Architectures des applicationsde l’Internet du Futur Décentralisées, Partagées, Mobile par tous Didier Parigot www-sop.inria.fr/members/Didier.Parigot Didier. [email_address]
  • 2.
    Programmable Overlay NetworkPrototype de recherche 13 000 lignes de Java Avec Baptiste Boussemart (1 an d’ingénieur)
  • 3.
    Plan Court CVSurvol rapide de PON Contexte : Les quatre couches Quelques petites applications de PON Squelette de programmation Architecture de PON Architecture Orientée Service Information publiées dans l’Overlay Network Communication, Protocole de transport Conclusion
  • 4.
    Mes travaux derecherche Grammaire Attribuée : FNC-2 [1986-2000] Programmation dirigée par la grammaire, [méta-modèle] par Domain Specific Language (DSL) Programmation générative par excellence Fabrique logicielle : SmartTools [2000] Programmation générative Programmation par DSLs, par Aspects Programmation par composants, Architecture Orientée Services (SOA) Programmable Overlay Network : PON [2008] Architecture Orientée Services en Pair à Pair
  • 5.
    SOA de SmartTools CM C3 C2 C1 Instances de composant SOA Locale ConnectTo OSGi Bundles Passage en Réparti Pair à Pair ? DHT
  • 6.
    Organisation en P2Pd’une application Organisation Décentralisée Client Fournisseur Fournisseur Client Client Client Client Client Client Client Ses services Ses services Client Arrivée d’un Client Départ d’un Fournisseur Ses services Départ d’un Fournisseur Ses services Arrivée d’un
  • 7.
    Pub/Sub des servicesen pair à pair Réseaux de recouvrement CHORD Client Fournisseur Fournisseur Fournisseur Client Client Client Client Client Client Client Client Fournisseur Ses services Ses services Ses services SOA P2P
  • 8.
    PON: les quatrecouches OSGi CM C3 Fournisseur Client Bundles Composants OSGi Chord CHORD Navigateur Serveur GWT VirtPipes JXTA
  • 9.
    Wireless, Ad-hocNetwork, Mobile Internet of Things The Future of The Internet Extensible Decentralization Self organization Interoperability Scalability Security Discovery Invocation Composition Planification Orchestration Mobility Topology Fault tolerance Load Balancing Reputation Services Components Protocols Resources Underlay Network Virtual Pipes Overlay Network Pub/Sub Overlay Application SOA WEB
  • 10.
    Programmable Overlay NetworkQuelques applications
  • 11.
    Chat instantané enP2P Les utilisateurs s'inscrivent ( put ) sur un SON et demandent à être en communication avec quelqu'un ( get , connect )
  • 12.
    Localisation de ServicesLe prestataire de services publie pour une zone géographique leurs services dans un SON : put() l'utilisateur recherche en fonction de sa position, les services dans sa zone : get() et se connecte à un service Utilisateur Prestataire
  • 13.
    Publication d’informationen P2P Publication d’une information (une liste) par un utilisateur Publication, Connexion, Partage, Edition Utilisateur Application de type Web 3.0 Eric Didier
  • 14.
    Underlay Network VirtualPipes Overlay Network Pub/Sub Overlay Application SOA Squelette de programmation Un DSL ConnectTo() Put() Connect() Get() Send() Receive()
  • 15.
    La programmation avecPON Ecriture des services Création d’un projet Ecriture d’un projet Génération et lancement
  • 16.
  • 17.
    Architecture Modulaire dePON Communication Publication/Recherche VirtPipes ST Mod “ local” ST Mod “ PON” CM VP Key Values Storage Services “ Openchord” ST Mod ... Modules VP Mod ... Modules KVS Mod ... Modules
  • 18.
    Architecture Orientée Services le «  Run-time  » de SmartTools Architecture Orientée Services Composant Orienté Services (publication, recherche) Déclarative à l’aide d’un DSL (CDML) Couplage faible Inversion du contrôle Messages Asynchrones Dynamique (connexion des services) Orchestration Intégration dans OSGi , Eclipse En mode distribué et décentralisé Publication, Recherche, Organisation en P2P.
  • 19.
    Technologies SOA : OSGi, Spring, SCA WebServices… Passerelle OSGi Bundle = composant POJO (Objets) SOA locale Protocoles de communication Internet des Objets The Dynamic Module System for Java™
  • 20.
    Publication et recherchedes services Architecture Orientee Service ; SOA Appels synchrones sur des objets
  • 21.
    Cycle de viedes Bundles: OSGi Gestion : ClassPath Dynamique
  • 22.
    SOA de SmartToolsau-dessus OSGi Gestionnaire de Composants Déclaration des Services Opération de connexion connectTo(C1, C2) Gestion des messages asynchrones Passerelle OSGi
  • 23.
    Ingénierie dirigée parles modèles Multi paradigmes Auto utilisée
  • 24.
  • 25.
    Programmable Overlay NetworkPublication et Recherche des Services en Pair à Pair
  • 26.
    Service-Oriented Architecture + Overlay Network Une ressource = un ensemble de services = un composant P2P apporte une Architecture Décentralisée (intelligente) SOA apporte un Modèle de programmation (d’application)
  • 27.
    Informations publiées dans Chord Services : à chaque création de composant Nom de l’instance du composant-> Description des services du composant ID unique du tuyau virtuel d’entrée du composant ID du tuyau virtuel du gestionnaire de composants Map de services de sorties qui donne pour chacun un ID du tuyaux virtuel de sortie VirtPipes : à chaque JVM ID-VirtPipe -> ID-VirtPipesService ID-VirtPipesService -> liste des adresses IP + port clé -> valeur put (clé, valeur) valeur ← get (clé) 0 3 6 9 8 11 1 2
  • 28.
  • 29.
    Communication à laJXTA Tuyau Virtuel Identificateur Unique par Tuyau API lectures/écritures non bloquantes (NIO) Publication/Recherche des tuyaux ou des services indépendant
  • 30.
    Connexion entre Aet B (unicast) ST Mod “ local” ST Mod “ PON” CM A CM VirtPipes TCP VirtPipes Chord NIO NIO Chord ST Mod “ local” ST Mod “ PON” A B B A A B PUT GET B
  • 31.
    Tuyau de communication: unicast Pour chaque composant un tuyau d'entrée (service fourni) Publié dans le SON : nom du composant -> tuyau Connexion connect (A,B) , B à distance Le DS de A recherche dans le SON le tuyau d'entrée de B. Le DS de A crée un proxy associé au tuyau d'entrée de B. Le DS associe les sorties (service requis) de A à ce proxy B. L'opération connect s'effectue aussi dans l'autre sens. Autres informations publiées sur le SON Tuyau de service d'un DS pour effectuer les connexions dans le sens inverse .
  • 32.
    Connexion entre Aet B, B1 (multicast) ST Mod “ local” ST Mod “ PON” CM A CM VirtPipes TCP VirtPipes Chord NIO NIO Chord ST Mod “ local” ST Mod “ PON” GET A.a A.b PUT B B1 A.a A.b A.a A.b
  • 33.
    Tuyau de communication: Multicast Communication en MultiCast, écriture d'un seul message pour l'envoi d'un message vers une même JVM. Pour chaque service en sortie (écriture) d'un composant, publication d'un tuyau de sortie sur le SON. connect (A,B) et connect (A,B1) , B et B1 sur la même JVM Le DS de B et B1 recherche sur le SON le tuyau de sortie (écriture) de A pour l'associé au service d'entrée (lecture) de B et B1 Le DS associe ce tuyau au service d'entrée (lecture) de B et B1 Une seule écriture du message pour deux lectures
  • 34.
    Distribution de PONDistribution sous http://gforge.inria.fr/projects/smarttools/ PON (Programmable Overlay Net) Les Bundles/Plugins de base pour PON. Version Plugins ou Bundles Exemples en version Standalone Chat Transport Le site de PON http://www-sop.inria.fr /members/Didier.Parigot/ pon/ Informations sur l'installation et utilisation (source plugins/Eclipse) Développement en java Linux, Windows, Mac, Nokia 800
  • 35.
  • 36.
  • 37.
    Underlay Network VirtualPipes Overlay Network Pub/Sub Overlay Application SOA Conclusion Quelques perspectives Web Annuaire intelligent Protocole Serveur de requêtes WorkFlow Alignement
  • 38.
    Résumé Architecture Décentralisée= Partagée Pour Tous = Mobile Pluridisciplinaire Petit logiciel
  • 39.
    Programmable Overlay NetworkFIN www-sop.inria.fr/members/Didier.Parigot
  • 40.
    Composition Structurelle AA’ g Traitement Donnée B f Transformation Donnée B g’ B’ Traitement g’  g O f Donnée