Rubriques

Noeuds, processeurs et périphériques Haut de la page

Les processeurs et les périphériques sont des stéréotypes courants du noeud. La distinction entre les deux peut paraître difficile à déterminer, du fait que de nombreux périphériques contiennent désormais leur propre UC. Cependant, la distinction entre processeurs et périphériques réside dans le type de logiciel qui s'exécute sur eux. Les processeurs exécutent des programmes/logiciels qui sont écrits de manière explicite pour le système en cours de développement. Ce sont des périphériques de calcul à usage général, dotés de capacités de calcul et d'exécution, et de mémoire.

Les périphériques exécutent le logiciel qui contrôle la fonctionnalité du périphérique lui-même. Ils sont souvent connectés à un processeur qui contrôle le périphérique. Ils exécutent généralement un logiciel incorporé et sont incapables d'exécuter des programmes à usage général. Leur fonctionnalité est généralement contrôlée par un logiciel de pilote de périphérique.

Patterns de distribution Haut de la page

Il existe un certain nombre de patterns typiques de distribution dans les systèmes qui dépendent de la fonctionnalité du système et du type d'application. Dans de nombreux cas, le pattern de distribution est utilisé de façon informelle pour décrire l'architecture du système, bien que l'architecture complète englobe également de nombreuses autres choses. Par exemple, il arrive souvent qu'un système soit décrit comme ayant une "architecture client-serveur", bien qu'il ne s'agisse là que de l'aspect de la distribution de l'architecture. Ceci permet de mettre en évidence l'importance des aspects de la distribution du système et la portée de leur influence sur d'autres décisions architecturales.

Les patterns de distribution décrits ci-dessous impliquent certaines caractéristiques système et de performances, ainsi que certaines architectures de processus. Chacun résout des problèmes particuliers, mais pose également des défis uniques.

Architectures client-serveur Haut de la page

Dans les architectures dites "client-serveur", il existe des noeuds de processeur réseau appelés clients et des noeuds appelés serveurs. Les clients sont des consommateurs de services fournis par un serveur. Un client sert souvent un seul utilisateur et traite des services de présentation pour l'utilisateur final (interface utilisateur), tandis que le serveur fournit généralement des services à plusieurs clients simultanément. Les services fournis sont généralement ceux de base de données, de sécurité et d'impression. La "logique applicative" ou la logique métier, de ces systèmes est généralement distribuée sur le client et le serveur. La distribution de la logique métier est appelée partitionnement d'application.

Dans la figure suivante, le client A présente un exemple d'architecture à 2 niveaux, la majorité de la logique applicative se situant sur le serveur. Le client B présente une architecture à 3 niveaux, les services métier étant implémentés dans un serveur d'objets métier. Le client C présente une application Web typique.

Diagramme décrit dans le contenu.

Variations des architectures client-serveur

Dans les systèmes client-serveur traditionnels, la majorité de la logique est implémentée sur des clients ; mais certaines fonctionnalités sont mieux adaptées pour se trouver sur le serveur, comme par exemple une fonctionnalité accédant souvent à des données stockées sur le serveur. En procédant ainsi, il est possible de réduire le trafic réseau qui dans la plupart des cas est très coûteux.

Quelques caractéristiques :

  • un système peut être constitué de plusieurs types de clients différents, comme par exemple :
    • des postes de travail utilisateur,
    • des ordinateurs réseau.
  • les clients et les serveurs communiquent au moyen de diverses technologies, comme CORBA/IDL ou les appels RPC (Remote Procedure Call) ;
  • un système peut être constitué de plusieurs types de serveurs différents, comme par exemple :
    • des serveurs de base de données, gérant les machines de base de données, telles que Sybase, Ingres, Oracle, Informix,
    • des serveurs d'impression, gérant la logique du pilote (mise en file d'attente, etc.) d'une imprimante spécifique,
    • des serveurs de communications (TCP/IP, ISDN, X.25),
    • des serveurs de gestionnaire de fenêtres (X),
    • des serveurs de fichiers (NFS sous UNIX).

Architecture à 3 niveaux Haut de la page

L'architecture à 3 niveaux est un cas spécial d'architecture client-serveur dans lequel la fonctionnalité du système est divisée en trois partitions logiques : services d'application, services métier et services de données. Les partitions logiques peuvent en fait mapper vers trois noeuds physiques ou davantage.

Diagramme décrit dans le contenu.

Exemple d'architecture à 3 niveaux

Le partitionnement logique en ces trois niveaux reflète une observation faite sur comment la fonctionnalité dans des applications de bureau standard tend à s'implémenter et comment elle change. Les services d'application, traitant principalement de questions de présentation d'interface utilisateur, tendent à s'exécuter sur un poste de travail de bureau dédié, doté d'un environnement d'exploitation de fenêtrage graphique. Les changements de fonctionnalité sont souvent dictés par la simplicité d'utilisation ou des questions esthétiques ; ce sont essentiellement des questions de facteurs humains.

Les services de données sont souvent implémentés à l'aide d'une technologie de serveur de base de données qui tend à exécuter un ou plusieurs noeuds de large bande passante ultra-performants qui servent des centaines ou des milliers d'utilisateurs, connectés sur un réseau. Les services tendent à changer lorsque la représentation et les relations entre les informations stockées changent.

Les services métier reflètent la connaissance codée des processus métier. Ils manipulent et synthétisent les informations obtenues des services de données et les fournissent aux services d'application. Les services métier sont généralement utilisés par de nombreux utilisateurs en commun, aussi tendent-ils à se trouver sur des serveurs spécialisés également, bien qu'ils peuvent résider sur les mêmes noeuds que les services de données.

La fonctionnalité de partitionnement, avec ces lignes, fournit un pattern relativement fiable pour l'évolutivité. En ajoutant des serveurs et en rééquilibrant le traitement sur les serveurs de données et métier, un degré plus grand d'évolutivité est atteint.

Architecture client lourd Haut de la page

Le client est dit "lourd" lorsque presque tout s'exécute dessus (excepté dans une variation, appelée "architecture à 2 niveaux" dans la quelle les services de données résident sur un noeud distinct). Les services d'application, les services métier et les services de données résident tous sur une machine client ; le serveur de base de données se trouve généralement sur une autre machine.

Diagramme décrit dans le contenu.

Architecture traditionnelle à 2 niveaux ou "client lourd"

Les "clients lourds" sont relativement simples à concevoir et à créer, mais plus difficiles à distribuer (ils tendent à être larges et monolithiques) et à gérer. Comme les machines client tendent à mettre des données en cache localement afin d'améliorer les performances, la cohérence de la cache locale tend à faire naître des problèmes et des zones nécessitant une attention particulière. Les changements apportés à des objets partagés se trouvant dans plusieurs caches locales sont difficiles et onéreux à coordonner, impliquant une diffusion réseau des changements.

Architecture serveur lourd Haut de la page

A l'autre extrémité du spectre du "client lourd" se trouve le "serveur lourd" ou "client anorexique". Par exemple, pour une application de navigateur Web exécutant un ensemble de pages HTML, seule une très petite part de l'application se trouve dans le client. Presque tout le travail a lieu sur un ou plusieurs serveurs Web et de données.

Diagramme décrit dans le contenu.

Application Web

Les applications Web sont simples à distribuer, faciles à modifier. Elles sont relativement peu onéreuses à développer et à prendre en charge (du fait qu'une grande partie de l'infrastructure d'application est fournie par le navigateur et le serveur Web). Elles peuvent cependant ne pas fournir le degré de contrôle souhaité sur l'application et elles tendent à saturer le réseau rapidement si elles ne sont pas bien conçues (et parfois malgré qu'elles soient bien conçues).

Architecture client-serveur distribuée Haut de la page

Dans cette architecture, les services d'application, métier et de données résident sur des noeuds différents, potentiellement avec une spécialisation des serveurs dans les niveaux de services métier et de données. Réalisation complète d'une architecture à 3 niveaux.

Architecture entre homologues Haut de la page

Dans cette architecture, tout processus ou noeud du système peut être à la fois client et serveur. La distribution de la fonctionnalité est assurée en regroupant les services connectés afin de réduire le trafic réseau, tout en optimisant le rendement et l'utilisation du système. De tels systèmes tendent à être complexes et nécessitent une plus grande attention concernant les questions d'inter-blocage, de carence entre processus et de gestion des erreurs.



RUP (Rational Unified Process)   2003.06.15