Conception et mise en oeuvre d’une plate-forme pour la sûreté de fonctionnement des services Web

Conception et mise en oeuvre d’une plate-forme pour la sûreté de fonctionnement des services Web

Notions de Sûreté de Fonctionnement 

Avant d’aborder l’analyse des architectures orientées services, nous allons rappeler rapidement la terminologie que nous utilisons dans la suite du document pour décrire les notions fondamentales de sûreté de fonctionnement. Cette terminologie et ces concepts sont empruntés à [6, 7]. La sûreté de fonctionnement d’un système est la propriété qui permet à ses utilisateurs de placer une confiance justifiée dans la qualité du service qu’il leur délivre. La finalité des recherches dans ce domaine est de pouvoir spécifier, concevoir, réaliser et exploiter des systèmes où la faute est naturelle, prévue et tolérable. Une défaillance du système survient lorsque le service délivré dévie de l’accomplissement de la fonction du système, c’est-à-dire de ce à quoi le système est destiné. Une erreur est la partie de l’état du système qui est susceptible d’entraîner une défaillance, c’est-à-dire qu’une défaillance se produit lorsque l’erreur atteint l’interface du service fourni, et le modifie. Une faute est la cause adjugée ou supposée d’une erreur. On voit donc qu’il existe une chaîne causale entre faute, erreur et défaillance, représentée dans la Figure 1-1. Figure 1-1: Chaîne causale entre faute, erreur et défaillance Notons que dans les systèmes auxquels nous nous intéressons, qui sont formés par l’interaction de plusieurs sous-systèmes, les notions de faute, d’erreur et de défaillance sont récursives : la défaillance d’un sous-système devient une faute pour le système global (c.f la Figure 1-2). Figure 1-2: Récursivité de la chaîne causale faute => erreur => défaillance 

La tolérance aux fautes 

Pour que le système soit digne de confiance, et que cette faute ne se propage pas jusqu’au service délivré aux utilisateurs, on peut combiner un ensemble de méthodes qui peuvent être classées comme suit: – la prévention des fautes, qui permet de limiter l’introduction de fautes pendant la phase de développement; – la tolérance aux fautes, qui a pour objectif d’éviter la défaillance du système en utilisant des techniques de détection ou de recouvrement d’erreur; – l’élimination des fautes, qui réduit la présence (nombre, sévérité) des fautes. Pendant la phase de développement, elle consiste à vérifier, diagnostiquer et corriger les fautes. Lors de l’utilisation, il s’agit de maintenance corrective ou préventive. – la prévision des fautes, qui estime la présence et les conséquences de fautes par des tests prenant en compte leurs activités et leurs occurrences; Parmi ces méthodes, la tolérance aux fautes peut être mise en œuvre par le traitement des erreurs et des fautes. Le traitement d’erreur est destiné à éliminer les erreurs, si possible avant qu’une défaillance ne survienne. Le traitement de faute est destiné à éviter qu’une, ou des fautes ne soient activées à nouveau. Le traitement d’erreur fait appel à trois primitives: – détection d’erreur, qui permet d’identifier un état erroné comme tel; – diagnostic d’erreur, qui permet d’estimer les dommages créés par l’erreur qui a été détectée et par les erreurs éventuellement propagées avant la détection; – recouvrement d’erreur, qui permet de substituer un état exempt d’erreur à l’état erroné. L’un des apports de nos travaux est de proposer des mécanismes permettant de détecter, de signaler ou de recouvrer une erreur d’un composant particulier, le Service Web, afin d’éviter qu’elle ne se propage au reste du système.

La caractérisation 

Un système ne défaille pas toujours de la même manière, ce qui conduit à la notion de mode de défaillance, que l’on peut caractériser suivant trois points de vue : le domaine de la défaillance, la perception des défaillances par les utilisateurs du système, et les conséquences des défaillances sur l’environnement du système. Concernant le domaine de défaillance, on distingue: – les défaillances en valeur, quand la valeur du service délivrée ne permet plus l’accomplissement de la fonction du système; 19 – les défaillances temporelles, quand les conditions temporelles de délivrance du service ne répondent pas aux besoins des utilisateurs. Les modes de défaillance par arrêt sont relatifs à la fois aux valeurs et aux conditions temporelles: l’activité du système n’est plus perceptible aux utilisateurs. On distingue une absence d’activité par figement (quand l’état des sorties reste constant), et par silence (dans un système réparti, le noeud concerné n’envoie plus de message).

Les Architectures Orientées Services (AOS)

 L’architecture orientée services est le terme utilisé pour désigner un modèle d’architecture pour l’exécution d’applications logicielles réparties. Les deux derniers modèles (CORBA et DCOM) relèvent de l’architecture par composants logiciels répartis plutôt que de l’architecture orientée services, et le terme « service » est généralement absent de leur terminologie (sauf, par exemple, dans CORBA où l’on parle de services CORBA à propos de fonctions offertes par la plate-forme middleware aux composants applicatifs). De plus, un des avantages des AOS réside dans le fait que les applications réparties n’ont plus besoin d’un système de middleware réparti commun pour communiquer, mais seulement des protocoles et des technologies de communications intéropérables sur Internet. Ces protocoles et technologies seront d’ailleurs présentés par la suite. Construire une architecture orientée services signifie donc d’abord concevoir une architecture en réseau de relations de services, entre applications réparties. La description d’une relation de services est formalisée par un contrat de services. Ce contrat décrit les engagements réciproques du prestataire et du client du service. L’émergence des technologies de Services Web est censée apporter un niveau d’interopérabilité très élevé avec un degré de couplage très faible et donc d’établir les fondations des architectures orientées services à haut niveau de configuration dynamique. Une architecture d’applications réparties faiblement couplées (ou avec un degré de couplage très faible) est constituée d’un ensemble décentralisé d’applications réparties autonomes (Services Web), lesquelles interagissent sur la base de protocoles de communications, et sont mises en oeuvre à l’aide de technologies ouvertes et non intrusives. Parmi les exemples visibles d’AOS, on peut citer la SNCF1 qui a mis en place ce type d’architecture pour son système de réservation (recherche d’horaire, demande de tarif, réservation, …) qui répond ainsi aussi bien aux terminaux des guichets des agences et gares qu’aux sollicitations du site web de commande en ligne. Cette partie a pour but d’éclaircir et de définir la notion de « service », de présenter les concepts de base des AOS, et enfin d’analyser les perspectives et problématiques d’un tel type d’architecture. 

Qu’est-ce qu’un service ? 

La notion de service fait remonter d’un cran le niveau d’abstraction auquel les développeurs d’architectures à composants ont été habitués. Traditionnellement, le composant est représenté par une boîte constituée de plusieurs facettes et/ou réceptacles (des entrées et 1 Voir : http://www.prnewswire.co.uk/cgi/news/release?id=110004 20 des sorties). Lorsqu’on parle de service, celui-ci est caractérisé par un point. Une interface, le contrat de service (le document WSDL) précise les messages d’entrée que peut recevoir ce point d’entrée pour réaliser la prestation. Une architecture orientée services peut donc être représentée par une interconnexion de multiples points d’accès (voir Figure 2). En résumé, la notion de service est le produit d’une démarche d’abstraction par rapport au logiciel qui l’implémente, au processus qui l’exécute et au port qui le localise. Cependant, le service reste un objet très concret et technique. La réalisation d’un service passe par des messages échangés, des transitions d’état et des actions que l’application cliente suppose assurés de la part de l’application prestataire du service. Les caractéristiques fonctionnelles, opérationnelles et d’interface d’un service sont consignées dans un contrat. Un Service Web n’est donc rien d’autre que la réalisation supposée de la prestation définie dans le contrat de service.

Le contrat de service 

Le contrat de service du modèle des AOS s’inspire directement du modèle des contrats professionnels de service. Il s’agit d’un document qui développe l’ensemble des points permettant de décrire et donc de définir la relation de service. Dans le monde des relations professionnelles, un contrat de service est un document comportant plusieurs parties et dont les éléments terminaux sont généralement appelés articles et clauses. Le contrat de service contient des articles et des clauses consacrés à des sujets tels que: l’identification des parties contractantes, la description de la prestation objet du contrat, les modalités d’exécution, les modalités d’interaction entre les parties (il est aussi courant que le contrat de service décrive les actions à entreprendre en cas de défaillance d’un des contractants ou d’impossibilité de réalisation de la prestation). Dans le monde des AOS, les éléments du contrat de service sont organisés en six thèmes majeurs (voir Figure 1-3): l’identification des parties, la description des fonctions du service, la description de l’interface du service, la description de la qualité de service, la description du cycle de vie du service et du contrat, la description des termes de l’échange. 

 

Table des matières

Introduction Générale
1 Contexte et Problématique
1.1 Notions de Sûreté de Fonctionnement
1.1.1 La tolérance aux fautes
1.1.2 La caractérisation
1.2 Les Architectures Orientées Services (AOS)
1.2.1 Qu’est-ce qu’un service ?
1.2.2 Le contrat de service
1.2.3 L’agrégation et la dissémination de service
1.2.4 Des architectures dynamiques
1.2.5 Des architectures « boîtes noires »
1.3 Les Services Web
1.3.1 Les protocoles de base des Services Web
1.3.1.1 XML
1.3.1.2 WSDL
1.3.1.3 Les Schémas XML
1.3.1.4 SOAP
1.3.1.5 UDDI
1.3.2 Installation d’un Service Web
1.3.3 Services Web : Récapitulatif
1.4 Problématique.
1.4.1 Dimensionnement du problème
1.4.2 Le conflit d’intérêt clients-prestataires
1.4.3 La sûreté de fonctionnement des Services Web
1.4.3.1 La caractérisation des Services Web
1.4.3.2 Les mécanismes de sûreté de fonctionnement des Services Web
1.5 Récapitulatif
2 IWSD : Une plate-forme pour la sûreté de fonctionnement des Services Web
2.1 Introduction
2.2 Présentation de la plate-forme
2.3 La notion de connecteur
2.3.1 Objectifs et Spécifications
2.3.2 Développement d’un connecteur
2.3.3 Les mécanismes de recouvrement
2.3.3.1 Réplication et équivalence de services
2.3.3.2 Le type des opérations
2.3.3.3 Les stratégies de recouvrement
2.3.3.4 Les modèles d’exécution du connecteur
2.4 Le support d’exécution
2.4.1 Le serveur d’exécution
2.4.1.1 Dimensionnement et Administration
2.4.1.2 Les composants fonctionnels du Serveur d’exécution
2.4.1.3 Un serveur tolérant aux fautes
2.4.2 Le moniteur de surveillance
2.5 Le serveur de gestion
2.6 Mise en place d’un connecteur dans une application
2.7 Récapitulatif
3 DeWeL : Un langage dédié pour la sûreté de fonctionnement des Services Web
3.1 Introduction
3.2 Définition et conception d’un DSL
3.3 Les principales contraintes de DeWeL
3.4 Le langage DeWeL
3.4.1 Définition d’un connecteur DeWeL
3.4.2 Les types DeWeL
3.4.3 Les variables
3.4.3.1 Caractéristiques des variables
3.4.3.2 Manipulations des variables
3.4.3.3 Portées des variables
3.4.3.4 Les variables à mémoire
3.4.4 Les fonctions internes
3.4.5 Les instructions
3.4.6 Les instructions optionnelles
3.4.7 Le paramétrage des connecteurs
3.5 Le Processus de Génération de code et compilation
3.5.1 Génération du canevas
3.5.2 Analyse et création de la TypeStructure
3.5.2.1 Génération des types simples
3.5.2.2 Génération des types complexes
3.5.3 Compilation d’un programme DeWeL et Génération de code
3.5.3.1 Génération de la fonction « start_connector »
3.5.3.2 Génération du modèle d’exécution
3.5.3.3 Génération des pré-et-post traitements
3.5.4 Génération de la librairie dynamique
3.6 Récapitulatif
4 Le Connecteur en action
4.1 Les Mécanismes
4.1.1 Assertions
4.1.2 Exception
4.1.2.1 La Génération d’une exception
4.1.2.2 La Capture d’une exception
4.1.3 Les stratégies de recouvrement
4.1.3.1 La fonction : BasicReplication
4.1.3.2 La fonction : StatefulReplication
4.1.3.3 La fonction : LogBasedReplication
4.1.3.4 La fonction : ActiveReplication
4.1.3.5 La fonction : VotingReplication
4.2 L’interface du Connecteur
4.2.1 Processus de génération du contrat WSDL
4.2.2 Exemples
4.3 Récapitulatif
5 Résultats Expérimentaux et Analyses
5.1 Cibles et contexte expérimental
5.2 Banc de tests
5.3 Evaluation du langage
5.3.1 Expressivité
5.3.2 Concision
5.3.3 Analyse et Prospective
5.4 Evaluation des performances de IWSD
5.4.1 Comparaison avec des intercepteurs classiques
5.4.2 Performance des connecteurs de surveillance
5.4.3 Performance des connecteurs de tolérance aux fautes
5.5 Monitoring des Services Web
5.6 Impact des mécanismes de recouvrement sur la disponibilité des Services Web
5.7 Utilisation des mécanismes de recouvrement sur des services équivalents
5.8 Cas d’étude sur une application orientée services
5.8.1 Objectif et Scénario
5.8.2 Injection de fautes
5.8.3 Mise en place des connecteurs de surveillance
5.8.4 Mise en place des connecteurs de surveillance et de tolérance aux fautes
5.9 Récapitulatif
6 Conclusion et Perspectives
Annexes
A.1 Le Langage DeWeL
A.2 Comparaison entre DeWeL et le langage C
A.3 Algorithme de génération d’interface abstraite
A.4 Service Web Abstrait du moteur de recherches : Google et MSN
A.5 Service Web avec fonctions de gestion d’état
Références

projet fin d'etudeTélécharger le document complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *