Académique Documents
Professionnel Documents
Culture Documents
Jusqu’à une date récente l’architecture multi tiers étant une notion qui ne
dépassait pas le cercle très restreint des concepteurs du système d’exploitation, ou celui des
concepteurs des systèmes temps réel pour la défense.
Dans le système d’information « traditionnel » disons les années 70-80, sur une machine
centralisée(le mainframe) le système prenait complètement à sa charge tout le contrôle de ce
qui se passe dans la machine ainsi que les diverses régulations nécessaires à une répartition
équitable des ressources disponible pour les applications que la machines héberge. Ces
dernières années, l’architecture client-serveur fut la principale solution préconisée par les
constructeurs d’applications.
Ayant acquis de la maturité, l’architecture n-tiers devient aujourd’hui une alternative.
Apres avoir présenté brièvement les types d’architectures et les modelés un tiers, deux tiers,
trois tiers et n tiers ; nous ferons une synthèse sur tous ces modèles, enfin nous allons
compléter la présentation d’une solution concrète.
1
I. CONTEXTE
II. PROBLEMATIQUE
Dans un environnement marqué par une croissance de plus en plus exponentielle de
nouvelles technologies, l’amélioration continue des besoins dans un système d’information
moderne. Voici un défi global qui pousse les directeurs du système d’information à améliorer
leurs architectures informatique pour suivre la tendance. Dès lors, comment alléger les postes
clients ? Quelle architecture est mieux adaptée pour les conceptions des logiciels ? Comment
implémenter une architecture pour le nouveau système d’exploitation ?
2
D’Après Wikipédia, une architecture désigne la structure générale inhérente
à n système informatique, l’organisation des différents éléments du système
(logiciels et/ou matériels et/ou humain et/ou information) et des relations entre
les éléments. Cette structure fait suite à un ensemble de décisions stratégiques
prises durant la conception de tout ou partie du système informatique, par
l'exercice d'une discipline technique et industrielle du secteur de l'informatique
dénommée elle aussi architecture, et dont le responsable est l'architecte
informatique. Il peut y avoir plusieurs diagrammes d'architecture s pour un même
système, tels que : architecture des informations, architecture métier,
architecture applicative et architecture technique.
A. ARCHITECTURE METIER
L'architecture métier décrit les applications informatiques, les principales bases de
données du système informatique d'une institution ou d'une entreprise, les utilisations faites
de ces éléments dans le cadre de l'activité de l'institution et leur alignement à l'organisation
générale de l'institution. La vue métier fait ressortir les éléments historiques et en fin de vie,
les interfaces avec des éléments appartenant à des tiers, ainsi que les possibilités d'ajouter
des nouveaux éléments.Le diagramme d'architecture métier servira à guider la direction de
l'institution dans le choix de création de nouveaux éléments, et aidera les ingénieurs à créer
des produits informatiques en ligne avec les activités et l'organisation générale de l'institution.
Il permettra également d'informer les collaborateurs de l'institution sur son organisation
générale, ses buts, sa stratégie, et les flux d'informations au sein de l'institution.
3
d'accéder à ces informations, la compréhension qu'ont les lecteurs et comment ils manipulent
et s'échangent les informations ainsi que l'organisation de la base de données qui contiendra
les informations. L'architecture repose sur trois axes clés:
Les sites web contenant de nombreuses informations, tels que les sites de vente en ligne, les
médias, les bases de connaissances ou les encyclopédies en ligne sont les premiers concernés
par l'architecture des informations.
C. ARCHITECTURE LOGICIELLE
L'architecture logicielle est une vue tournée sur l'organisation interne et le découpage
d'un logiciel en modules. Dans les logiciels les caractéristiques communes concernent
les interfaces, c'est-à-dire la connectique qui permet la communication entre les modules,
ainsi que les caractéristiques du matériel informatique et du système d'exploitation sur lequel
le logiciel s'exécutera et les caractéristiques du réseau informatique qui sera utilisé 7.Le
diagramme d'architecture logicielle décrit la nature des différents modules d'un logiciel, les
responsabilités et les fonctionnalités de chaque module, quelle machine va les exécuter, et
quand. Il décrit également la nature des relations entre les modules. Vont-ils s'échanger des
informations ? Un module en pilote-t-il un autre, lui envoie-t-il des informations, ou lui fait-il
4
des demandes ? En ingénierie informatique le diagramme d'architecture donne une première
série de réponses sur comment sera le futur logiciel, avant le début du travail
de programmation.
D. ARCHITECTURE MATERIELLE
Le mot architecture matérielle est parfois utilisé pour désigner l'architecture du jeu
d'instructions d'un processeur. L'architecture matérielle comprend toutes les caractéristiques
générales, la conception, le choix et l'organisation des différents dispositifs électroniques des
appareils informatiques (ordinateurs personnels, serveurs, assistants personnels, téléphones
portables, consoles de jeu...). L'architecture est fonction du type d'appareil, du client cible, de
l'espace d'adressage - qui est fonction du nombre de bits utilisés pour les adresses mémoire,
du système d'exploitation et du langage de programmation cible. L’architecture matérielle est
un premier élément de réponse sur la manière de concevoir le futur ordinateur, recherchant
la performance tout en respectant les contraintes de coût, de consommation électrique et de
fiabilité. Le choix de l'architecture est inspiré par le marché, en particulier par les logiciels
applicatifs existants et auxquels l'appareil est destiné. La conception d'une architecture
matérielle requiert la connaissance d'une large gamme de technologies concernant
les compilateurs, les systèmes d'exploitation, les circuits logiques et l'isolation. L’architecture
du jeu d'instruction est le point de rencontre entre le matériel et le logiciel informatique. Selon
son architecture, le jeu d'instruction peut être de type register-memory - chaque instruction
peut être effectuée sur le contenu d'une adresse mémoire ou d'un registre - ou du type load-
store - toutes les instructions sont effectuées sur des registres sauf les
5
instructions load et store qui copient des informations de et vers une certaine adresse
mémoire.
E. ARCHITECTURE TECHNIQUE
L'architecture technique est une vue tournée sur l'organisation logique de la plateforme
informatique, c'est-à-dire les moyens techniques clés qui seront utilisés par tous les logiciels
applicatifs. La vue contient le matériel informatique, les logiciels systèmes, les middlewares,
ainsi que les réseaux de télécommunication et les relations entre ces différents éléments. Pour
une entreprise ou une institution, le choix de l'architecture technique vise à maximiser les
possibilités d'implantation de logiciels du commerce ainsi que de réalisation de logiciels sur
mesure. Il vise également à rentabiliser l'utilisation du matériel et des logiciels déjà acquis par
l'institution. Pour une entreprise ou une institution qui transforme son architecture technique,
le plan d'architecture est accompagné d'un planning et d'un budget des acquisitions, des
ventes et des opérations de migration nécessaires pour aligner le système informatique avec
le plan.
6
IV. LANGAGE DE PROGRAMMATION
Entre 1842 et 1843, une jeune comtesse du nom d'Ada Lovelace traduisait le mémoire
d'un mathématicien italien du nom de Luigi Menabrea sur la machine analytique proposée
par Charles Babage. À cette traduction, la jeune comtesse avait ajouté ses propres notes dont
l'une décrivait de façon détaillée une séquence progressive d'opérations pour résoudre
certains problèmes mathématiques. Le premier programme était né. Depuis cette époque les
choses n'ont pas bien évolué. De 1957 à 1959 on note le développement des langages Fortran,
Lisp et COBOL. À partir de 1970 on assiste à la naissance du Pascal créé par Niklaus Wirth.
En 1972 le C (premier au classement de TIOBE) fait son apparition. Créé par le regretté Denis
Ritchie, ce langage a servi à coder le système Unix. L'année 1995 voit la naissance de trois
langages populaires, Java créé par James Gosling, PHP créé par Rasmus Lerdof et JavaScript
par Brendan Eich. La tendance pour les langages de programmation est à la hausse et leur
nombre s'en va sans cesse grandissant.
Avant 1940
Au départ, les langages étaient de simples codes . Pendant neuf mois entre 1842 et
1843, Ada Lovelace a traduit le mémoire du mathématicien italien Luigi Menabrea sur
la machine analytique, la dernière machine proposée par Charles Babbage. Elle ajouta cet
article à une collection de notes dans lesquelles elle détaillait une méthode pour calculer
les nombres de Bernoulli à l'aide de la Machine. Ces notes furent reconnues par certains
historiens comme le premier programme informatique au monde1 Mais l'étendue des
contributions originales d'Ada Lovelace, comparées à celles de son mari, est l'objet de débat
parmi certains biographes[réf. souhaitée]2.
En 1801, le métier Jacquard utilisait des trous dans des cartes perforées pour représenter les
mouvements du bras du métier à tisser, et ainsi générer automatiquement des motifs
décoratifs.
En observant les tickets de trains, où était décrite l'apparence du voyageur à l'aide de trous
perforés sur les tickets (couleur des cheveux et des yeux, taille…), Herman Hollerith s'est rendu
compte qu'il pouvait encoder de l'information sur des cartes perforées. Il a pu ainsi créer une
machine à cartes perforées qui a servi au recensement de 1890.
7
À leurs débuts, les langages de programmation étaient très influencés par les restrictions
matérielles. De ce fait, le premier vrai langage de programmation est difficile à identifier. Par
exemple, les cartes perforées pouvaient avoir 80 colonnes, certaines d'entre elles étant
utilisées comme numéro de tri sur chaque carte. Plus tard, les mémoires utilisées dans les
premiers ordinateurs étaient faites de tambours magnétiques. Les programmes devaient donc
tenir compte des rotations du tambour. Ils étaient donc beaucoup plus dépendants du
matériel qu'à l'heure actuelle.
Pour certaines personnes, il est nécessaire que les « programmes » soient facilement lisibles
par des êtres humains, et que la puissance mise en œuvre soit suffisante, pour pouvoir parler
de langage de programmation. Le Métier Jacquart et la machine Analytique de Charles
Babbage avaient des langages extrêmement simples et limités pour décrire les actions
effectuées par ces machines. On peut également considérer les rouleaux en papier d'un
pianola (piano mécanique) comme un programme limité à un domaine très particulier,
quoique non destiné à être exploité par des humains
En 1948, Konrad Zuse publie un article sur son langage de programmation qu'il a développé
entre 1943 et 1945 : le Plankalkül. Son créateur le considère comme étant le premier langage
de programmation de haut niveau. Néanmoins, il n'aura jamais été implémenté à l'époque et
les contributions de l'auteur sont d'ailleurs restées très isolées du courant dominant.
1943 : Le Plankalkül
1943 : Le langage de programmation de l'ENIAC
1948 : Le langage machine du premier programme enregistré, i.e. le jeu
d'instructions de la SSEM : première machine à programme enregistré.
8
1949 : Le langage C-10
Java, de Sun Microsystem, est un langage comportant une large palette de classes
réutilisables. Il possède un ramasse-miettes. Il a eu un développement important dans
l'industrie du logiciel.
Les nouveaux langages de scripts, héritiers des langages de commande intégrés dans les
systèmes d'exploitation, ont une approche plus novatrice parce qu'ils sont interprétés.
Certains sont intégrés dans des pages Web. Ils présentent de nouvelles caractéristiques
syntaxiques et de nouvelles fonctionnalités leur sont incorporées de manière à faciliter
l'enchaînement de commandes simples. Ils fonctionnent bien quand les programmes sont
petits. Les programmes plus gros sont plus difficiles à mettre en œuvre et à maintenir que des
programmes compilés analogues.
1990 - Haskell
1991 - Python
1993 - Ruby
1993 - Lua
1994 - ANSI Common Lisp
1995 - JavaScript
1995 - Java
1995 - PHP
9
2000 - C#
Tendance actuelle
L'évolution des langages de programmation continue, à la fois dans l'industrie et la
recherche. Quelques tendances actuelles :
i. La préhistoire
Les premiers ordinateurs n’avaient pas à proprement parler de système d’exploitation,
et cette situation dura de 1949 avec les premières machines à programme enregistré jusqu’en
10
1956, année du premier moniteur de traitement par lots. En effet, les langages initialement
utilisés étaient très proches de la machine physique : code binaire, assembleurs primitifs,
collections de sous-programmes. D’autre part, le partage de la machine se faisait simplement
par réservation : chaque utilisateur avait la machine pour lui seul pendant une tranche de
temps déterminée. En ce sens, l’exploitation des ordinateurs privilégiait le confort des
utilisateurs, donc le côté « ergonomie ».
On peut néanmoins noter les premiers embryons de mécanismes d’assistance à l’utilisation
des ordinateurs. L’EDSAC de Cambridge, première machine à programme enregistré, avec
le Manchester Mark-1, utilisait une forme rudimentaire de langage assembleur, où les
instructions étaient écrites sous forme symbolique et les adresses (absolues) sous forme
décimale. Les programmes, enregistrés sur ruban perforé, étaient traduits en binaire et placés
en mémoire par un mécanisme appelé « ordres initiaux », lui-même enregistré sur une
mémoire externe en lecture seule. Plus tard furent introduits les sous-programmes, conservés
dans une bibliothèque sous forme de rubans ; ceux-ci devaient être physiquement copiés
avant exécution, sur le ruban contenant le programme principal. Les ordres initiaux devaient
donc assurer ce qu’on appelle aujourd’hui l’édition de liens, c’est-à-dire fixer les adresses
d’appel et de retour des sous-programmes pour garantir leur exécution correcte. D’autres
langages primitifs utilisant des sous-programmes furent développés plus tard, notamment sur
UNIVAC par Grace Hopper. Leur traduction en langage machine était cette fois à la charge
d’un programme enregistré, mais l’exploitation de l’ordinateur restait sous contrôle manuel.
Compte-tenu de l’important investissement que représentait à l’époque l’achat d’un
ordinateur, il n’est pas étonnant que l’on ait recherché les moyens de rendre son exploitation
plus efficace. Les programmes des utilisateurs furent ainsi regroupés en lots ou fournées (en
anglais batch), pour les traiter en série, sans transitions. Une nouvelle fonction apparut, celle
d’opérateur, un technicien chargé de préparer les lots d’entrée à partir des programmes
fournis par les utilisateurs, de surveiller l’exécution des travaux, et de distribuer les résultats
de sortie. L’enchaînement des travaux était réalisé par un programme appelé moniteur, ou
système de traitement par lots, qui fut la première forme de système d’exploitation.
L’économie prit alors le pas sur l’ergonomie, les usagers étant désormais privés de l’accès libre
à la machine et de la mise au point interactive
//job
//fortran
<cartes constituant un programme en Fortran>
//run
//data
<données pour le programme Fortran>
//job
<le travail suivant>
…
12
Deux innovations matérielles permirent de remédier à ces problèmes.
13
introduction dans le Perq et l’Apple Lisa, c’est le Macintosh qui a popularisé ces idées qui sont
maintenant reprises par l’ensemble des systèmes pour ordinateur individuel (voir à ce propos
l’article « Xerox PARC et la naissance de l’informatique contemporaine »).
Les données ne sont plus de simples textes, mais des structures complexes comprenant des
textes associés à des images, des sons et des films. La conservation fiable et à long terme de
ces données fait largement appel à la virtualisation à grande échelle s’appuyant sur
d’abondantes ressources réparties (cloud computing). Le souci d’économie revient sous une
nouvelle forme : plutôt que le coût du matériel, c’est l’énergie consommée par ces
concentrations de machines qu’il s’agit maintenant de réduire.
La vision centralisatrice du système telle qu’on la concevait au début des années 1970 est
définitivement abandonnée au profit d’une structure répartie. Mais les questions éthiques
posées par cette structure centralisée (ordinateur Big Brother) sont toujours présentes, avec
la difficulté d’assurer confidentialité et sécurité dans un environnement où tout est en ligne.
Même si les ordinateurs individuels sont la plupart du temps oisifs, la course à la puissance de
calcul se poursuit, tirée par les applications (images animées, simulation de systèmes
complexes, jeux vidéo). Elle repose sur le parallélisme, soit à l’intérieur d’un processeur
(structure multicœur), soit à l’aide de calculateurs interconnectés (grappes de milliers de
machines ).
Enfin, la généralisation de l’informatique enfouie (embedded systems) dans presque tous les
appareils de la vie courante a donné lieu au développement à la carte de systèmes adaptés à
des appareils et à des applications spécifiques : téléphonie mobile (smartphones), réseaux de
capteurs, automobile, avionique, etc. Ces systèmes étant en général plus petits et plus simples
que les systèmes à usage général, on peut prévoir qu’il sera possible à terme de les certifier,
c’est-à-dire d’établir rigoureusement leur conformité à leurs spécifications. Des avancées
spectaculaires ont récemment eu lieu dans ce sens (voir l’article Les débuts d’une approche
scientifique des systèmes d’exploitation).
14
la couche de présentation, encore appelée IHM, permet l'interaction de l'application avec
l'utilisateur. Cette couche gère les saisies au clavier, à la souris et la présentation des
informations à l'écran. Dans la mesure du possible, elle doit être conviviale et
ergonomique.
la logique applicative, les traitements, décrivant les travaux à réaliser par l'application. Ils
peuvent être découpés en deux familles :
les traitements locaux, regroupant les contrôles effectués au niveau du dialogue
avec l'IHM, visant essentiellement le contrôle et l'aide à la saisie,
les traitements globaux, constituant l'application elle-même. Cette couche,
appelée Business Logic ou couche métier, contient les règles internes qui
régissent une entreprise donnée.
les données, ou plus exactement l'accès aux données, regroupant l'ensemble des
mécanismes permettant la gestion des informations stockées par l'application.
Ces trois niveaux peuvent être imbriqués ou répartis de différentes manières entre plusieurs
machines physiques
Le noyau de l'application est composé de la logique de l'affichage et la logique des traitements.
Le découpage et la répartition de ce noyau permettent de distinguer les architectures
applicatives suivantes :
l'architecture 1-tiers
l'architecture 2-tiers,
l'architecture 3-tiers,
les architectures n-tiers.
15
a. Architecture un tiers
Présentation
Dans une application un tiers, les trois couches applicatives sont intimement liées et
s'exécutent sur le même ordinateur. On ne parle pas ici d'architecture client-serveur, mais
d'informatique centralisée. Dans un contexte multi-utilisateurs, on peut rencontrer deux
types d'architecture mettant en œuvre des applications un tiers:
des applications sur site central,
des applications réparties sur des machines indépendantes communiquant par
partage de fichiers.
Historiquement, les applications sur site central furent les premières à proposer un
accès multiutilisateurs. Dans ce contexte, les utilisateurs se connectent aux applications
exécutées par le serveur central (le mainframe) à l'aide de terminaux passifs se comportant
en esclaves. C'est le serveur central qui prend en charge l'intégralité des traitements, y
compris l'affichage qui est simplement déporté sur des terminaux passifs
Limitations
17
On le voit, les applications sur site central souffrent d'une interface utilisateur en mode
caractères et la cohabitation d'applications micro exploitant des données communes n'est pas
fiable au-delà d'un certain nombre d'utilisateurs. Il a donc fallu trouver une solution conciliant
les avantages des deux premières :
la fiabilité des solutions sur site central, qui gèrent les données de façon centralisée,
l'interface utilisateur moderne des applications sur micro-ordinateurs.
Pour obtenir cette synthèse, il a fallu scinder les applications en plusieurs parties
distinctes et coopérants
gestion centralisée des données,
gestion locale de l'interface utilisateur. Ainsi est né le concept du client-serveur.
18
Le serveur, c'est le programme qui se contente de répondre au client.
Cet échange de messages transite à travers le réseau reliant les deux machines. Il met en
œuvre des mécanismes relativement complexes qui sont, en général, pris en charge par un
middleware.
Le Middleware
Définition
On appelle middleware, littéralement ``élément du milieu'', l'ensemble des couches réseau et
services logiciel qui permettent le dialogue entre les différents composants d'une application
répartie. Ce dialogue se base sur un protocole applicatif commun, défini par l'API du
middleware.
Le Gartner Group définit le middleware comme une interface de communication universelle
entre processus. Il représente véritablement la clef de voûte de toute application client-
serveur. L'objectif principal du middleware est d'unifier, pour les applications, l'accès et la
manipulation de l'ensemble des services disponibles sur le réseau, afin de rendre l'utilisation
de ces derniers presque transparente.
19
Figure 10: positionnement du middleware entre client et serveur
20
Pour résoudre les limitations du client-serveur deux tiers tout en conservant ses avantages,
on a cherché une architecture plus évoluée, facilitant les forts déploiements à moindre coût.
La réponse est apportée par les architectures distribuées.
le frontal est complexe et non standard (même s'il s'agit presque toujours d'un PC sous
Windows),
21
des solutions propriétaires comme ForT ou Implicite permettent l'exploitation d'un
serveur d'application par des clients simplement équipés d'un environnement
d'exécution (runtime).
Cependant, l'application de ces technologies dans une architecture trois tiers est complexe et
demande des compétences très pointues, du fait du manque de standards. Malgré ses
avantages techniques évidents, ce type d'application fut souvent jugé trop coûteux à mettre
en place. Ce premier essai s'est soldé par un échec dû en grande partie à l'absence de standard
et à la complexité des mécanismes mis en œuvre.
Le serveur de transaction
Ce type de serveur héberge un moniteur transactionnel qui s'occupe de la mise en relation du
client avec un ensemble de serveurs de données. Le serveur transactionnel, interrogé en
utilisant une API unique, masque au client la complexité de l'organisation des serveurs de
données.
Le moniteur transactionnel permet de garantir que toutes les transactions vérifient la règle
ACID :
Atomicité : La transaction ne peut être partiellement effectuée,
Cohérence : Une transaction fait passer la base d'un état cohérent à un autre,
Isolation : Une transaction n'est pas affectée par le résultat des autres transactions,
Durée : Les modifications dues à une transaction sont durablement garanties.
En fait, soit une transaction a définitivement eu lieu, soit elle n'a jamais existé.
La notion de serveur transactionnel est citée brièvement ici car elle correspond, à mon avis, à
une architecture trois tiers puisqu'une partie des traitements applicatifs est centralisée.
22
L'architecture trois tiers, encore appelée client-serveur de deuxième génération ou
client-serveur distribué, sépare l'application en trois niveaux de service distincts :
premier niveau : l'affichage et les traitements locaux (contrôles de saisie, mise
en forme de données...) sont pris en charge par le poste client,
deuxième niveau : les traitements applicatifs globaux sont pris en charge par le
service applicatif,
troisième niveau : les services de base de données sont pris en charge par un
SGBD.
Tous ces niveaux étant indépendants, ils peuvent être implantés sur des machines différentes,
de ce fait :
le poste client ne supporte plus l'ensemble des traitements, il est moins sollicité et
peut être moins évolué, donc moins coûteux,
les ressources présentes sur le réseau sont mieux exploitées, puisque les traitements
applicatifs peuvent être partagés ou regroupés (le serveur d'application peut
s'exécuter sur la même machine que le SGBD),
La fiabilité et les performances de certains traitements se trouvent améliorées par leur
centralisation,
il est relativement simple de faire face à une forte montée en charge, en renforçant le
service applicatif.
Dans le cadre d'un Intranet, le poste client prend la forme d'un simple navigateur Web, le
service applicatif est assuré par un serveur HTTP et la communication avec le SGBD met en
œuvre les mécanismes bien connus des applications client-serveur de la première génération.
Ce type d'architecture fait une distinction nette entre deux tronçons de communication
indépendants et délimités par le serveur HTTP :
Le premier tronçon relie le poste client au serveur Web pour permettre l'interaction
avec l'utilisateur et la visualisation des résultats. On l'appelle circuit froid et n'est
23
composé que de standards (principalement HTML et HTTP). Le serveur Web tient le
rôle de ``façade HTTP'',
Le deuxième tronçon permet la collecte des données, il est aussi appelé circuit chaud.
Les mécanismes utilisés sont comparables à ceux mis en œuvre pour une application
deux tiers. Ils ne franchissent jamais la façade HTTP et, de ce fait, peuvent évoluer sans
impacter la configuration des postes clients.
Figure 13:Repartition des couches applicatives dans une architecture trois tiers
Limitations
L'architecture trois tiers a corrigé les excès du client lourd en centralisant une grande partie
de la logique applicative sur un serveur HTTP. Le poste client, qui ne prend à sa charge que la
présentation et les contrôles de saisie, s'est trouvé ainsi soulagé et plus simple à gérer.
Par contre, le serveur HTTP constitue la pierre angulaire de l'architecture et se trouve souvent
fortement sollicité et il est difficile de répartir la charge entre client et serveur. On se retrouve
confronté aux épineux problèmes de dimensionnement serveur et de gestion de la montée
en charge rappelant l'époque des mainframes.
De plus, les solutions mises en œuvre sont relativement complexes à maintenir et la gestion
des sessions est compliquée.
Les contraintes semblent inversées par rapport à celles rencontrées avec les architectures
deux tiers : le client est soulagé, mais le serveur est fortement sollicité6.22. Le phénomène
fait penser à un retour de balancier. Le juste équilibrage de la charge entre client et serveur
semble atteint avec la génération suivante : les architectures n-tiers.
24
4. Architecture n-tiers
Présentation
L'architecture n-tiers a été pensée pour pallier aux limitations des architectures trois tiers et
concevoir des applications puissantes et simples à maintenir. Ce type d'architecture permet
de distribuer plus librement la logique applicative, ce qui facilite la répartition de la charge
entre tous les niveaux. Cette évolution des architectures trois tiers met en œuvre une
approche objet pour offrir une plus grande souplesse d'implémentation et faciliter la
réutilisation des développements. Théoriquement, ce type d'architecture supprime tous les
inconvénients des architectures précédentes :
elle permet l'utilisation d'interfaces utilisateurs riches,
elle sépare nettement tous les niveaux de l'application,
elle offre de grandes capacités d'extension,
elle facilite la gestion des sessions.
Que de niveaux...
L'appellation ``n-tiers'' pourrait faire penser que cette architecture met en œuvre un
nombre indéterminé de niveaux de service, alors que ces derniers sont au maximum trois (les
trois niveaux d'une application informatique). En fait, l'architecture n-tiers qualifie la
distribution d'application entre de multiples services et non la multiplication des niveaux de
service. Cette distribution est facilitée par l'utilisation de composants ``métier'', spécialisés et
indépendants, introduits par les concepts orientés objets (langages de programmation et
middleware). Elle permet de tirer pleinement partie de la notion de composants métiers
réutilisables. Ces composants rendent un service si possible générique et clairement identifié.
Ils sont capables de communiquer entre eux et peuvent donc coopérer en étant implantés sur
des machines distinctes. La distribution des services applicatifs facilite aussi l'intégration de
traitements existants dans les nouvelles applications. On peut ainsi envisager de connecter un
programme de prise de commande existant sur le site central de l'entreprise à une application
distribuée en utilisant un middleware adapté.
25
Les évolutions successives de l'informatique permettent de masquer la complexité des
mécanismes mis en œuvre derrière une approche de plus en plus conceptuelle.
Ainsi, les langages de programmation ont tout d'abord été très proches de la machine (langage
machine de bas niveau), puis procéduraux et, enfin, orientés objets. Le succès du langage Java
a véritablement popularisé ce mode de programmation. Les protocoles réseau ont suivi le
même type d'évolution. Ils furent d'abord très proches de la couche physique, avec les
mécanismes de sockets orientés octets. Ensuite, la notion de RPC a permis de faire abstraction
des protocoles de communication et, ainsi, a facilité la mise en place d'application client-
serveur. Aujourd'hui, l'utilisation d'ORB7.1 permet une totale transparence des appels
distants et permet de manipuler un objet distant comme s'il était local. Le flux d'informations
fut donc initialement constitué d'octets, puis de données et, enfin, de messages. Les méthodes
de conception orientées objet telles qu'UML ou OMT permettent une modélisation plus
concrète des besoins et facilitent le passage de la conception à la réalisation. Aucune de ces
évolutions ne constitue en soi une révolution, mais elles rendent économiquement réalisables
des architectures qui n'étaient jusqu'à présent que techniquement envisageables.
26
CONCLUSION
Avec les applications n-tiers, on dispose enfin d'une vision cohérente du système
d'information. Tous les services sont représentés sous la forme d'objets interchangeables
qu'il est possible d'implanter librement, en fonction des besoins.
Le potentiel de ce type d'application est très important et permettrait enfin l'utilisation
d'objets métiers réutilisables.
Serions-nous en présence de l'architecture parfaite, nous permettant de mettre en oeuvre les
applications les plus ambitieuses au moindre coût et de les faire évoluer librement en
fonction des besoins ?
Si, sur le papier, on pourrait répondre par l'affirmative, l'expérience des précédentes
``révolutions'' de l'informatique nous pousse à plus de modération. L'architecture n-tiers
propose effectivement un potentiel énorme, reste à voir comment il sera utilisé, à quel coût
et, surtout, comment sera gérée la transition depuis les environnements actuels.
27