Les thèmes que recouvre “Applications distribuées”: toutes les tentatives de faire participer des machines distantes à un traitement informatique.
système d'échange de messages,
systèmes d'exploitation distribués
applications réparties/parallèles
Tous ces systèmes nécessitent certaines techniques usuelles pour leur fonctionnement:
technique de localisation (annuaires, découverte, …),
horloges globales,
identifiants uniques,
espace global de stockage (disque, mémoire)
Depuis 1985, au fil du temps, les technologies ont évoluées sur la base d'idées fondamentales avec des ajouts, selon des déclinaisons différentes. Par exemple:
-
Java RMI (Sun, 1997 -
JDK 1.1)
-
Les technologies des applications distribuées doivent s'adapter
à l'évolution des technologies matérielles, marquée par évolution rapide
des capacités des réseaux informatiques,
des capacités des processeurs (loi de Moore puis augmentation nombre de coeurs)
à l'évolution des technologies logicielles, marquée par multiplication des systèmes d'exploitation, des protocoles, …
timeline image
Les tendances logicielles s'adaptent au matériel et à son coût économique. (ex: les stations diskless ont disparu dès que le disque est devenu peu cher).
Parmi les tendances, plus de naissances que de morts. Donc, plus de choix possibles pour implanter une solution (et plus de besoins de niches).
evolution towards components
Les difficultés de maintenir des codes sur des plateformes changeant sans arrêt conduisent à une tentative d'encapsulation plus grande des codes. Un composant est un élément qui:
contient toute sa logique et ses données (comme un objet)
est composable: interfaces externes bien définies, pas de communications cachées.
est configurable pour être déployé dans différents contextes.
Exemples de modèles de composants: EJB, CCM, Bonobo, …
epiphany-gnumeric %component model component component
Parallèlement, depuis la fin des années 1990, l'idée de transposer le formidable succès de HTTP pour les applications fait son chemin.
Objectif: permettre à des applications appartenant à des entités différentes de coopérer.
L'idée de grille est proposée (
Globus, Foster 1998)
Le
W3C établit la recommandation
SOAP (2000)
Constat:
accélérations des usages et besoins issus d'internet, notamment avec la mobilité (géolocalisation, synchronisation, …)
complexité techniques croissantes des environnements: rapport amortissement sur dépense d'investissement décroit,
difficultés de dimensionner les infrastructures matérielles (ex: Amazon: pic de charge à Nöel).
Solution: Externaliser !
evolution towards components
Plusieurs évolutions technologiques favorisent l'externalisation:
Le développemet des réseaux (vitesse, fiabilité)
Le développement des datacenters (prix clusters)
La virtualisation (machines virtuelles)
Trois formes d'externalisation:
recours à des applications en ligne: SaaS (Software as a Service) – (Google Apps, Microsoft BPOS, Adobe Acrobat.com, …)
recours à l'infrastructure matérielle d'un fournisseur à travers une
API: PaaS (Platform as a Service) – (Google AppEngine, Microsoft Azure, amazon AWS,…),
Ex: (Utiliser Google AppEngine avec Java: video)
Applications distribuées/parallèles utilisant une même technologie existe encore pour des besoins spécifiques.
Les efforts vont vers des technologies qui peuvent s'intégrer dans le paysage des protocoles existants
Tendance générale: pour s'accomoder de l'hétérogénéité croissante des matériels et
OS clients, utilisation de technologies web pour communiquer entre client et serveur. En cas de surcharge, externalisation du serveur (éventuellement démultiplié) chez des fournisseurs de plateformes ou de machines.