Semaine 12 Flashcards

1
Q

Quel est le lien entre “Fault Handling” et “Compensation”?

A

Fautes, exceptions et pannes : une réalité du logiciel et du matériel
- Une application composite en a sa part

Dans certains cas, on pourrait se remettre d’une exception par exemple en réessayant les mêmes instructions qui ont rencontré une exception
- En se remettant “recovering” d’une exception, nous avons besoin généralement de rebrousser chemin et inverser des actions déjà faites en association à l’exception :
– C’est ce qu’on appelle une “compensation”
– BPEL offre des moyens de spécification et exécution des compensation

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Donne des exemples de fautes.

A

Communication sur un réseau pas fiable

Reliées au processus
- Erreur de logique comme variable d’entrée à valeur inattendue
- BPEL runtime : ex. variable non initialisée

Reliés à la SOA comme les privilèges d’accès à un service, la conformité avec le contrat du WSDL et/ou le schéma XSD

D’exécution d’un service externe

Reliés au domaine d’application et/ou les règles fonctionnelles de l’entreprise

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Donne des exemples de fautes standards de BPEL.

A

correlationViolation : fautes reliées aux messages non conformes aux spécifications

uninitializedPartnerRole : pour référence à un partner link qui n’a pas de rôle initialisé

uninitializedVariable : variable non initialisée

selectionFailure : pour une opération de sélection, comme bpel:getVariableProperty qui rencontre un problème

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Que peut-on dire des données associées aux fautes?

A

Certaines sont sans messages (données) associés comme les fautes standards de BPEL

D’autres avec messages associés :
- Ex. les fautes de runtime => des messages de type RuntimeFaultMessage en triplet de chaînes de caractères (code, summary, detail)
- Une activité “catch” qui gère de telles fautes possède une faultVariable qui sera initialisée par les données de la faute quand ce catch est activé

Un “all-purpose” catchAll s’active si la faut n’est pas interceptée par aucun catch spécifique
- Certaines implémentations permettent de trouver le nom de la faute interceptée par le catchAll

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Qu’est-ce que l’élément FaultHandler?

A

Associé à un scope de l’énoncé BPEL

Comprend une ou plusieurs activités “catch” qui gère des fautes du scope associé à l’élément FaultHandler

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Qu’est-ce que le signalement de faute?

A

faultHandler prend en charge les fautes :
- Fautes générées par le BPEL runtime
- Explicitement générées en utilisant l’activité “throw”
– Une activité “throw” comprend un “faultName”
– Certaines activités “throw” comprennent des données reliés à la faute à travers un attribut optionnel “faultVariable”
<throw xmlns:fltns=”http://packtpub.com/bpel/faults”
faultName=”fltns:faultName” <”!–mandatory attribute–>
faultVariable=”variableName” <”!–optionnal attribute–> />

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Qu’est-ce que la structure des faultHandlers?

A

<”faultHandlers>
<”catch … ><”!– First fault handler –>
<”!– Perform an activity –>
<”/catch>
<”catch … ><”!– Second fault handler –>
<”!– Perform an activity –>
<”/catch>
<”catchAll>
<”!– Perform an activity –>
<”/catchAll>
<”/faultHandlers>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Donne un exemple de catch pour un type de faute “selectionFailure”?

A

<”faultHandlers>
<”catch faultName=”bpws:selectionFailure”>
<”sequence>
<”empty name=”HandleSelectionFailure_gracefully”/>
<”terminate name=”Terminate_process_isNOTgraceful”/>
<”/sequence>
<”/catch>
<”/faultHandlers>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Que peut-on dire des scopes de faultHandlers?

A

Le faultHandler global :
- Défini pour l’ensemble du processus BPEL et est élément fils de “processus”
– Pour gérer les fautes qui se produisent dans les processus BPEL pour toutes les séquences, portées et activités

Le faultHandler local (inline) :
- Inclus dans une activité “scope” ou “invoque” pour traiter les fautes générées dans ces dernières

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Qu’est-ce que les “catch” et “catchAll” d’un “faultHandler”?

A

Les activités “catch” et “catchAll” éléments fils de faultHandler qui peut être local ou global :
- Pour un faultHandler, si aucune activité “catch” ne correspond à une faute, alors => “catchAll” gère la faute

La correspondance (matching) entre faultName et faultVariable des “catch” d’une part, et leurs valeurs dans une faute (thrown fault activity) d’autre part :
- La base de sélection de l’activité “catch” qui gérera la faute

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Quel est le mécanisme de sélection du “catch”?

A

Mécanisme de sélection du “catch” :
- Pour une faute qui n’a pas de données associées, pour une activité ayant un faultName :
1- L’élément qui est configuré avec la même valeur d’attribut faultName et qui ne spécifie par l’attribut faultVariable est sélectionné
2- S’il n’y a pas de tel “catch”, la faute est transmise à l’activité “catchAll”

  • Sélection d’un “catch” lorsque la faute est associée à des données :
    1- Spécifiant une valeur de faultName correspondant et un attribut faultVariable dont le type correspond au type des données de défaut sera sélectionné, si présent
    2- Autrement, une activité sans faultName spécifié et avec un attribut de faultVariable correspondant sera sélectionné, si présent
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Qu’est-ce que la performance?

A

Performance :
- Temps de réponse d’un service
- Scalabilité : capacité de l’architecture à monter en charge lors de pics de charge
– En terme de fréquence de messages
– Et/ou volume de données à gérer

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Qu’est-ce que l’élasticité?

A

L’élasticité est la capacité de :
- Augmenter le volume de ressources disponibles d’une façon quasi instantanée lors des pics de charge
- Diminuer ces ressources quand elles ne sont pas utilisées

Objectifs principaux de l’élasticité : la scalabilité et l’optimisation des coûts

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Qu’est-ce que la scalabilité?

A

Scalabilité via :
- Clonage d’un service
- Répartition des données entre plusieurs services
- Répartition des fonctions sur plusieurs services

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Quels sont les 3 axes de la scalabilité d’une SOA?

A

Axe des X : Duplication “horizontale”
Montée en puissance via le clonage d’un service

Axe des Y : Duplication par les données
Montée en puissance via la partition des données (“sharding”)

Axe des Z : Décomposition “verticale”
Montée en puissance via le découplage d’une fonction (typologie des fonctions)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Qu’est-ce que le clonage?

A

Plusieurs clones d’un service se chargent du flux de requêtes, avec répartition :
- Répartition selon la géographie => statique
- Dynamique
– Aléatoire
– À tour de rôle
– En fonction de la charge de chaque service

17
Q

Quels sont les outils de répartition pour les services web?

A

Matériel dédié : très efficaces mais coûteux et complexe à configurer

Le serveur DNS : mais il faut que le DNS s’assure de la “santé” des services (arrêter de router vers services non disponibles). Ex. Amazon Route 53

Logiciels classiques du Web : ex. Nginx, Apache => répartir des requêtes http et https
- Il existe aussi des équipements préconfigurés avec les logiciels mentionnés, prêt à installer

Outil de gestion d’API. Ex. WSO2 APIM

Services cloud, comme ELB (Elastic Load Balancer) d’Amazon

Implémenter soi-même un service de répartition :
- Certains frameworks de microservices proposent des outils de répartition. Ex. Vertigo associé à l’outil VERT.X
- L’outil ZeroMQ permet de mettre en place un répartiteur

18
Q

Quels sont les contraintes et les risques du clonage avec répartition?

A

Cohérence des données :
- Une synchronisation qui n’est pas nécessairement à temps entre les états des clones

Le temps moyen entre deux requêtes consécutives doit être significativement inférieur au temps de synchronisation des états des clones

19
Q

Qu’est-ce que la scalabilité par les données?

A

Scalabilité par les données ou “scalabilité horizontale” :
- Plusieurs serveurs de base de données pour plusieurs parties de la base de données
– Éclatement des données entre plusieurs serveurs sur une certaine base comme :
— Géographique
— Alphabétique
— En fonction d’une clé
- Solution meilleure que la simple distribution avec réplicas, car ceci diminue le risque d’incohérence des données