Principe du Demi-flux

Objectif(s)
  1. Intégrer les Systèmes existants à la SOA
  2. Réutiliser les médiations développées pour tous les systèmes.
  3. Garantir un socle d'échange homogène dans le SI.
Cible(s) 

Le patron de conception de demi-flux prend racine dans 3 principes simples:

  1. les contrats de services sont exposés en modèle pivot
  2. les contrats de services sont figés et versionnés
  3. le bus de service expose les contrats

Par exemple, la diffusion d’un contrat de service A dans un système d’informations s’illustre de la manière suivante :

Demi-flux

Le contrat de service « A » est obligatoirement exposé avec des données fonctionnelles au format Pivot (cf. Schéma canonique), interface nommée « Ap ». Ce contrat devient la référence partagée entre tous les consommateurs. « A » n’est plus accessible directement ! Toutefois, si un autre consommateur nécessite une version différente (réduction du périmètre, problème technique, etc.) une vision dénormalisée « Ad » est ajoutée afin de faciliter l’utilisation du contrat « Ap ». Une version sécurisée « As » est identique (non représentée ci-dessus).

La route est alors le chemin parcouru entre l’appel au contrat « Ad » jusqu’au contrat « A ». Chaque demi-flux est la partie amont OU aval au format pivot. Dans l’exemple précédent, il y existe donc 2 demi-flux:

  1. Du contrat « Ad » au message au format pivot.
  2. Du contrat « Ap » jusqu’au contrat « A » au format natif.

Route et demi-flux

Au final, sans s’en rentre compte, de nombreux patrons SOA sont respectés. La liste non-exhaustive est la suivante:

LienNomDescription

Schéma canoniqueReprésentation unique d’une notion fonctionnelle pour tous les services.

Expression canoniqueUniformise les contrats de service.

Contrats concurrentsContrats de services spécifiques à une problématique, un consommateur ou une version.

Centralisation des contratsPropose un point d’accès unique à un service.

Dénormalisation de contratsAdapte les contraintes fonctionnelles aux consommateurs et producteurs.

 

Malheureusement, dans la pratique, il est nécessaire de complexifier la mise en oeuvre car :

  1. peu de services ne respectent les modèles pivots à l’initialisation d’une approche SOA
  2. le bus ne doit pas gérer les états des services
  3. des enrichissements en contenu sont nécessaires (BD, fichiers, services, etc)
  4. les versions de services sont multiples.

Ces points aboutissent à une architecture plus complexe avec une séparation des responsabilités entre l’ ESB et un moteur d’orchestration BPEL. Ce dernier intègre nativement les gestions transactionnelles, les transactions longues, les reprises ainsi que la gestion des états. Il est mis à profit pour cela.

Le schéma suivant illustre l’exposition du service B. C est utilisé lors dans une orchestration ou une composition par le moteur BPEL. Remarquez que la partie SCA ne manipule que le modèle Pivot.

Vision générale complete

En diffusant des services uniquement par le bus, celui-ci peu être utilisé de manière optimal. Il met en jeu ses fonctionnalités majeures telles que la maîtrise des surcharges, la non contention des producteurs, la gestion des SLA, la sécurisation des contenus, les transformations de contenus et les médiations protocolaires.

En synthèse, le pattern demi-flux apporte 3 avantages majeurs:

  1. La mise en oeuvre de facto de bonnes pratiques SOA
  2. Un évolution maîtrisée des contrats
  3. Un usage performant en runtime.

source.