Qu’est ce qu’un service ?
Un service, bien que réel, est un objet difficile à définir et à représenter dans la mesure où le même terme peut désigner différents concepts selon le domaine considéré. Par définition et hors de tout contexte on peut cependant admettre que d’une manière ou d’une autre, un service apporte une fonctionnalité répondant à un besoin d’une personne réelle, même si celle-ci n’en a pas directement conscience. Ainsi, un service « offrira » généralement une fonction pratique à son bénéficiaire, celui-ci ne pouvant obtenir le même résultat par ses propres moyens, sinon de manière aussi simple et efficace (de son point de vue). « Un service vaut ce qu’il coûte. » Victor Hugo. La valeur ajoutée intrinsèque des services révèle un potentiel économique exceptionnel : ils répondent à autant de besoins qu’ils n’en créent de nouveaux et permettent de commercialiser des produits non matériels. L’Institut national de la statistique et des études économiques (insee) définit le service de la manière suivante [3] : « Une activité de service se caractérise essentiellement par la mise à disposition d’une capacité technique ou intellectuelle. ». Bien que relatif au secteur économique tertiaire dont il est la base, le service, de par sa qualité de production immatérielle, convient parfaitement au domaine des Technologies de l’Information et de la Communication (tic). Ainsi, bien que de nombreux exemples de services puissent trouver résonance dans la vie de tous les jours, nous nous focaliserons sur les formes propres aux tic, domaine exclusif de l’ensemble de ces travaux de thèse. 11 Qu’est ce qu’un service De nombreux exemples de services adoptant différentes formes coexistent dans les Technologies de l’Information et de la Communication, afin d’en dégager des propriétés communes (cf. 1.3) nous nous sommes intéressés à ces cas d’utilisation selon deux axes : au niveau applicatif (cf. 1.1) et dans les télécommunications (cf. 1.2).
Les services applicatifs
Par abus de langage, nous qualifierons d’« applicatif » l’ensemble des services informatiques, qu’ils soient délivrés localement par un système d’exploitation ou à distance via un réseau d’accès. Nous détaillons dans cette section ces deux cas qui abordent différemment la notion de service et précisons les concepts introduits par chacun d’eux.
Services locaux
Lorsque l’on s’intéresse à l’ensemble des systèmes informatiques et plus particulièrement à la raison d’être de ce que l’on appelle plus communément « ordinateurs », on constate rapidement que leur objet premier est de nous rendre des services. L’informatique étant par définition le traitement automatisé de l’information, les systèmes informatiques fournissent à leurs utilisateurs des fonctionnalités pratiques ou agréables, « techniques et intellectuelles » (par exemple un éditeur de texte, une base de données, un lecteur multimédia, etc). Les caractéristiques supérieures « innées » d’un système informatique sur l’Homme en termes de vitesse de calcul et de capacité mémoire en font le serviteur par excellence pour rendre des services et alléger l’utilisateur de tâches complexes, fastidieuses ou simplement irréalisables. Ainsi, en ce sens, toute contribution d’un système informatique à l’Homme pourrait dans l’absolu être qualifiée de service. Cependant, le terme « service » est peu employé en tant que tel dans un environnement applicatif local, on parle plus volontiers d’application, de logiciel, de programme, de tâche, de processus, . . . Je ne prétends nullement que cette riche terminologie soit incongrue ou que ces mots soient synonymes, je tiens juste à souligner que l’utilisateur face à son ordinateur pense peu en terme de « service », 12 confronté physiquement à sa réalisation il le nomme plus naturellement par leur représentation concrète. Cette particularité est d’autant plus intéressante qu’elle s’applique exclusivement aux systèmes locaux. Nous le verrons par la suite, l’utilisateur qui jouit d’une fonctionnalité sans avoir conscience de son implémentation comme c’est le cas pour les services distants ou de télécommunications est plus enclin à la nommer « service ». Le terme exact « service » est toutefois employé dans le monde applicatif pour désigner un type précis de fonctionnalité. Introduit par le système d’exploitation Windows de Microsoft, un « service Windows » [4] est un programme qui possède les caractéristiques suivantes [5] : – un cycle de vie calqué sur celui du système hôte (et donc indépendant de l’utilisateur), – pas ou peu d’interactions avec l’utilisateur (le service est souvent rendu directement au système et contrôlé par celui-ci), – un mode d’exécution privilégié (généralement plus de droits que l’utilisateur lambda), – une exécution « discrète » (l’utilisateur n’a souvent pas conscience du service rendu bien qu’il en jouisse directement ou indirectement). Cette vision de « service » est unique à MS Windows, les autres principaux systèmes d’exploitation tels que unix (et compatibles, i.e. Linux et bsd) ou encore mac os x d’Apple préfèrent l’utilisation du terme « démon » (daemon [6]) pour désigner ce type de programme. Les fonctionnalités offertes par les services Windows sont diverses tel que la gestion des réseaux, l’indexation des données ou encore la synchronisation de l’heure, cf. [7] pour plus d’information sur les composants de base. On peut également noter que Apple Inc. introduit dans mac os x des « services systèmes ». Ces services ne constituent pas un nouveau programme mais plutôt l’interface d’une application existante par laquelle celle-ci expose les fonctions basiques qu’elle peut réaliser pour un tiers (typiquement une autre application). Ainsi les services « rendus » par les applications sont échangés via une architecture spé13 cifique qui permet le transfert de données entre programmes tel que présenté dans la Figure 1.1. Figure 1.1 – Architecture de services systèmes dans mac os x. Les services disponibles correspondant aux types de données de l’application en cours sont automatiquement listés dans un menu dédié. La Figure 1.2 présente l’exemple d’un tel menu (appelé ici « Services ») qui permet à un éditeur de texte (TextEdit) d’accéder au service fourni par un navigateur Web. L’information échangée est alors une adresse Internet (www.rabbits.com) résultant vraisemblablement au chargement du site Internet correspondant dans le navigateur Web offrant le service. Les services systèmes de mac os x et les services Windows présentés précédemment sont les deux seuls exemples d’introduction de la notion de service dans le domaine applicatif. De plus ces approches sont relativement différentes entre elles et ne considèrent l’utilisateur qu’indirectement : la première étant dédiée au système d’exploitation tandis que la seconde aux applications. Cependant, et nous 14 y reviendrons plus loin dans cette section, la majorité des fonctionnalités fournies par un environnement informatique, typiquement via des applications gérées par un système d’exploitation, sont ni plus ni moins des services pour l’utilisateur.
Services distants
Les services distants sont caractérisés par une architecture asymétrique « clientserveur » dissociant physiquement la consommation et l’implémentation de la fonctionnalité offerte. Le serveur comme son nom l’indique, implémente les mécanismes nécessaires à la fourniture du service au client, lequel à son tour le présente de manière « consommable » à l’utilisateur. Le service résulte ainsi de l’exécution d’au moins deux processus distincts, l’un du côté utilisateur et l’autre généralement plus complexe chez le fournisseur qui réalise les principaux traitements. Les exemples de tels services sont multiples, les plus communs étant peut-être sur le Web, rendus possible par la collaboration entre le navigateur de l’utilisateur et les serveurs Web des fournisseurs de sites sur le réseau Internet (cf. Figure 1.3). Figure 1.3 – Modèle client/serveur, exemple d’Internet. À la différence d’un environnement applicatif local (cf. 1.1.1), la fourniture d’un service distant requiert la collaboration de plusieurs applications, et ce via un protocole de communication prédéfini. Cette communication permet le déclenchement et le contrôle du service, menant généralement à un transfert de données. Ces données brutes sont alors traitées et interprétées par le client puis présentées à l’utilisateur de manière à rendre la fonctionnalité désirée. 15 Notion de session. Le flux d’informations échangé entre clients et serveurs est appelé session de communication [8] (cf. Figure 1.4). Dans un environnement distant, les services n’existent qu’au travers de ces sessions qui contrôlent et transportent les informations essentielles à la fonctionnalité offerte. De manière générale, on peut distinguer deux types de sessions présentes simultanément entre le client et le serveur lors de la fourniture d’un service. – Les sessions de contrôle qui permettent aux entités de gérer le service, par exemple le protocole http (Hypertext Transport Protocol [9]) utilisé par le navigateur pour demander le contenu d’une page Web au serveur correspondant. – Les sessions de données qui transportent les informations propres au service tel que le contenu d’une page Web : code html, images et divers objets, transférés du serveur vers le navigateur. Figure 1.4 – Sessions d’une architecture client-serveur. Une relation classique entre un client et un serveur implique nécessairement ces deux sessions simultanément, le format de chacune étant formellement défini afin d’assurer l’interopérabilité, soit de manière ouverte via un standard (par exemple les spécifications du w3c et de l’ietf pour http [10]), soit de manière fermée via un protocole propriétaire (par exemple Adobe Flash rtmp [11]). À noter que physiquement, une session de communication peut multiplexer les informations de contrôle et les données comme c’est le cas avec http ou les gérer séparément comme pour le protocole sip (Session Initiation Protocol [12]). Le contrôle du service de communication étant assuré par sip lui-même et les données multimédias acheminées via le protocole rtp (Real-time Transport Protocol [13]).