A la terrasse d'un café, vous êtes le client. En tant que client, vous êtes en position d'exprimer vos requêtes à un serveur qui tentera de satisfaire tous vos désirs. C'est ce principe appliqué aux technologies de l'information qui a engendré l'architecture client-serveur.
Ceux qui ont vécu l'informatique des années 80 ont été témoins d'un étrange phénomène : les utilisateurs avaient sur leur bureau deux postes de travail :
Ces utilisateurs ont naturellement souhaité retrouver de la place sur leur bureau en regroupant les deux postes en un seul. Les cartes d'émulation de terminal ont rendu la chose possible en transformant, le temps d'une session, le PC en terminal clavier/écran connecté. Ce faisant, ces cartes court-circuitaient "l'intelligence" du PC, celle qui permettait de disposer de logiciels très conviviaux avec des icônes et des menus déroulants accessibles via la souris.
Les utilisateurs ont alors exprimé une deuxième insatisfaction : pourquoi les programmes de gestion accessibles sur le site central n'offraient-ils pas la même convivialité que les outils bureautiques présents sur le poste ?
Les informaticiens se sont mis au travail pour éclater les applications à deux niveaux :
Ainsi, la machine centrale devenait serveur. Elle était capable de répondre aux multiples sollicitations de divers PC devenus clients.
Lorsqu'ils se connectaient, les utilisateurs subissaient la loi du "site central" (version "corporate" de "Big Brother"), qui leur imposait d'office une liste restrictive de services. Pour devenir des clients réellement satisfaits, ils ont exprimé un troisième souhait, avoir le choix et pouvoir se connecter, selon leur humeur du moment, au service jugé le plus judicieux. Les divers avatars de l'architecture client-serveur démontrent comment cette quête du client roi a trouvé satisfaction.
Dans la version la plus simple, le poste de travail (PC, Mac, ...) appelé client ne prend en charge que la présentation des informations en mode graphique.
Le serveur assure la logique applicative et l'accès aux données réunies dans une Base de Données.
L'essor de la première génération de l'architecture client-serveur est lié à la multiplication des PC et au développement des systèmes de gestion de Bases de Données Relationnelle (SGBDR) et du langage d'interrogation (requête) associé : SQL (pour Structured Query Language).
La couche logicielle du PC propose une grille de saisie des données avec des boutons radios, des cases à cocher et des listes déroulantes. Dès que l'utilisateur clique sur le bouton OK pour valider la saisie, le PC transforme la grille de saisie en une requête qui est transmise au serveur. Celui-ci la soumet à la Base de données. Le serveur envoie les résultats de la requête (une table de données extraite de la base en fonction des critères de sélection définis dans la requête) au PC qui les stocke et les met en forme dans un écran de réponse.
Le modèle est progressivement enrichi et décliné en de multiples variantes. Profitant des développements technologiques que nous avons évoqués dans les articles précédents (système d'exploitation multitâches pour les postes de travail, évolution des protocoles réseau) et d'autres touchant les architectures de traitement et de stockage des informations, les informaticiens transfèrent vers les clients une partie de la logique fonctionnelle et quelques données locales.
La complexité du réseau évolue aussi d'une structure n clients vers 1 serveur en une structure n clients vers p serveurs, chacun des serveurs étant censé jouer un rôle particulier. Les experts parlent d'architecture distribuée et éditent des normes pour assurer l'interopérabilité (DCE de l'OSF, en clair Distributed Computing Architecture de l'Open Software Fondation).
Alors que les premières applications avaient ravi les utilisateurs du fait de la nouvelle convivialité (it's fun - c'est sympa- plébiscitent les utilisateurs aux USA), la complexité croissante va transformer les tâches de développement, de déploiement, d'administration et de maintenance en un véritable cauchemar. Les clients deviennent "gras" du fait de l'empilement des couches logicielles (chaque application apporte une nouvelle "couche client").
Deux facteurs vont permettre de sortir de cette impasse : le développement du concept d'objet et l'explosion d'Internet.
Grâce au concept d'objet, le modèle client-serveur de la première génération évolue vers un modèle d'architecture à base de composants réutilisables et interopérables.
Un composant "client" est simplement celui qui émet une demande de services à destination d'un autre composant, le serveur, qui lui-même peut jouer le rôle de client vis à vis d'un autre objet. La tendance est donc de réduire la taille du client (qui devient un client léger) avec les composants strictement nécessaires à la gestion de l'interface utilisateur. Les postes clients peuvent être alors de simples terminaux windows, sans disque ni disquette -donc plus fiables et sans souci de sécurité- ou de vieux PC à bout de souffle.
Tous donnent à l'utilisateur l'impression de travailler avec un PC classique dans sa forme et moderne dans sa puissance, y compris pour les outils bureautiques. Le serveur analyse les sollicitations clients (touches du clavier, opérations souris) et renvoie les images des écrans sous forme compressée à l'aide du protocole RDP (solution Microsoft avec Terminal Edition) ou ICA (solution Citrix avec Metaframe).
Avec le développement de l'Internet, une autre approche qui vise à réduire la taille du client est d'utiliser le navigateur comme interface universelle d'accès. Il dialogue alors avec un serveur web au standard http qui analyse les demandes client sous forme de formulaires HTML, construit des requêtes vers le serveur de base de données avec des scripts type ASP ou PHP, récupère les réponses et les formate sous forme de pages web pour les renvoyer vers le navigateur.
Le fonctionnement en mode client serveur
Dans les deux cas, l'architecture se structure à trois niveaux (3-tiers où il ne faut pas entendre tiers comme le français tiers, mais comme l'anglais tier = couche) :
Architecture "3 tiers" de type web computing"
Ce retour de la charge vers le serveur implique un déploiement plus simple des applications en évitant la diffusion et le support de modules clients spécifiques.
Enfin, la conversion de l'ensemble aux règles du web permet d'offrir à l'utilisateur un éventail de choix qui marque un renversement copernicien par rapport à la vision du terminal esclave du "site central".
Compte-tenu de la diversité des architectures envisageables, il est difficile d'évaluer un coût type.
Les architectures à trois niveaux et les grands logiciels client-serveur type ERP étaient réservés aux grands comptes. Ce marché étant saturé, les éditeurs et intégrateurs se tournent vers les PME/PMI.
C'est sur ce marché que se battent aujourd'hui SAP et Microsoft avec des tarifications basées sur le nombre d'utilisateurs et la marge de négociation reste forte dans un marché un peu déprimé. IBM décline son offre en version Express et le serveur d'application Websphere est proposé à 21 € par utilisateur ou 1 700 € par processeur.
Les architectures web et les solutions "open source" permettent de réduire encore les coûts.
Une PME industrielle de 30/40 personnes faisant un chiffre d'affaires de 3 à 5 millions d'euros devrait pouvoir lancer un projet de déploiement d'un PGI en mode client-serveur pour un budget global de 20-25 000 €.
Une TPE peut facilement, sur son réseau bureautique, développer pour quelques k€ des outils métier pertinents en mode client serveur sur la base de navigateurs et d'un petit gestionnaire de base de données (avec le couple MySQL/PHP ou le couple Access MCSE/ASP pour les inconditionnels de Microsoft).
Il ne faut pas mettre en place de tels outils pour faire "moderne" ou parce que le voisin l'a fait.
Ceux qui réussissent identifient des indicateurs précis pour la réussite de leur déploiement : diminuer les délais de paiement, réduire les stocks, améliorer la réactivité interne et la qualité du service au client pour gagner des parts de marché, décloisonner les services, optimiser la logistique, mieux piloter l'ensemble.
Les nouveaux outils sont intéressants vis à vis de ces objectifs et apportent performance et ouverture. Mais ils font naître des difficultés nouvelles en termes de maîtrise de la complexité, respect de l'intégrité des informations et assurance de la sécurité qu'il convient de prendre en compte.
Le modèle client-serveur permet de réutiliser des composants au sein du système d'information, mais les liens très forts qui unissent ces composants nuisent à une parfaite flexibilité.
Ces limites -et le besoin de faire du business- conduisent les acteurs du marché à proposer de nouvelles offres qui passent du modèle client-serveur classique à base d'objets (object-oriented distributed architecture) à un modèle basé sur une architecture distribuée orientée services (service oriented distributed architecture).
Derrière ce jargon technique se cache une idée simple et séduisante, faire que chaque composant du système d'information soit clairement identifiable, capable de prendre en charge une liste d'actions parfaitement définies, autonome, doté d'un dispositif de sécurité efficace, documenté, indépendant des autres services et accessible sur l'Internet (ou sur un réseau IP privé). Ces services pourront être techniques ou "business".
Le concept de "web services" dont Microsoft assure aujourd'hui la promotion se rattache à cette famille. De même qu'un moteur de recherche nous permet aujourd'hui de trouver l'information pertinente, ces "business and technical services" devront nous permettre de trouver, intégrer et exploiter l'outil dont l'entreprise a besoin, là où elle en a besoin, quand elle en a besoin. C'est un projet ambitieux.