Le théorème CAP : entre disponibilité, cohérence et fiabilité il faut choisir. Billet

Les architectures distribuées et les traitements de flux se répandent. De multiples machines se partagent le travail d'agréger et de traiter un flot toujours plus important d'informations. Cela a des contraintes sur le modèle d'affaire des entreprises. On ne peut plus compter sur l'intégrité parfaite de la chaîne d'information à un instant T. Il faut alors fixer des priorités et revoir la façon d'analyser les données.

Pour répondre aux exigences des outils et usages d'aujourd'hui on a développé des architectures "distribuées" et des traitements "de flux". De multiples machines se partagent le travail. Cette architecture implique que l'on ne peut plus compter sur l'intégrité parfaite de la chaîne d'information à un instant T. L'enjeu n'est plus de réaliser le traitement le plus rapidement possible et de la façon la plus complète mais de stocker l'information au fil de l'eau, au fur et à mesure qu'elle arrive, puis de reconstituer la logique de traitement sans pouvoir se reposer sur un véritable référentiel de temps. Les informations sont "distribuées" au sein de multiples espaces de stockage.
De par la conception technique de ces systèmes d'information il devient nécessaire d'arbitrer les priorités entre la cohérence (Constitency), la disponibilité (Availability) et la tolérance aux pannes, la fiabilité (Partition tolerance).

Définitions

P - La tolérance aux pannes

C'est la capacité d'un système à gérer sans encombres un retour à la normale après un incident.
Duplication et sauvegarde des données, multiplication des centres physiques de stockage sont autant d'éléments qui garantissent, dans la plupart des cas, une tolérance aux possibles pannes.

A - La disponibilité

C'est la capacité d'un système à être toujours disponible.
C'est un élément important pour un service de vente à distance ou de communication, tel qu'un réseau social. C'est moins crucial pour un système où les opérations peuvent être stockées puis traitées sur une période ultérieure déterminée, tel qu'un système bancaire ou un système de caisses enregistreuses.

C - La cohérence des données

C'est la capacité d'un système à effectuer ses tâches au bon moment.
Cela permet de faire un calcul au moment où l'on en a besoin, de fournir une réponse correcte plus ou moins rapidement.

Quels sont les enjeux ?

Selon les besoins du business qui repose sur le système d'information, chacune de ces priorités aura une importance plus ou moins vitale.
Dans l'idéal ces 3 éléments doivent être réunis pour garantir un fonctionnement optimal. Mais on sait de façon certaine que ce n'est pas possible. Seules les combinaisons A + C, P+A ou P+C sont possibles. Il convient donc de les choisir en connaissance de cause.

A + C

C'est une combinaison qui est peu envisageable. Il est difficile d'imaginer un système sans le paramètre P où une panne ne permettrait pas facilement une remise en service ou mettrait en péril les données elles-mêmes.
C'est donc presque un non-choix que d'ignorer cette combinaison pour privilégier, quoi qu'il en soit, la tolérance aux pannes. Dans la plupart des cas c'est un pré-requis.

P + C

Si le modèle d'affaire ne nécessite absolument pas une disponibilité permanente, c'est la combinaison à retenir.
Pour un service bancaire il est important de délivrer un solde de compte et un détail d'opérations exact, quitte à ce que le service ne soit pas disponible pendant quelques heures. Cela ne pénalise pas le client sur l'objet-même du service qu'il attend.

P + A

Si le business repose sur une disponibilité du service en continu, c'est la combinaison qui doit être retenue.
Ainsi Amazon, Twitter ou Facebook ne peuvent s'envisager sans une disponibilité permanente. Il y a toujours un utilisateur dans le monde qui utilise le service. On sait alors que la cohérence (C) devra être sacrifiée.

Cela a alors des impacts sur la façon de gérer le business, notamment en imaginant des astuces marketing pour compenser les possibles désagréments pour les clients. Amazon peut, par exemple, se trouver dans le cas où, alors qu'un acheteur a valide la commande du dernier exemplaire disponible d'un livre, celui-ci se trouve épuisé car un autre client a valider son paiement sur le même article. On proposera donc une réduction sur un autre achat en compensation à l'acheteur désabusé.

De la même façon, Twitter mettra en place des stratégies de diffusion différenciée, au sein de sous-parties d'une communauté de followers, plutôt que de s'astreindre à montrer un statut aux millions de followers d'une célébrité en même temps. Ce peut être par pays mais aussi, plus finement, par centres d'intérêts annexes. D'où l'importance des algorithmes de profilage.

Comment réduire la dépendance à ces contraintes ?

L'immutabilité des données

Même si l'on est contraint de sacrifier la cohérence (modèle PA) mais où elle reste cependant importante on adoptera une stratégie de gestion des données dite "CR" (Create and Read) et non "CRUD" (Create, Read, Update and Delete).
On allège ainsi les traitements d'arrière-plan en ne manipulant pas les données. On part du principe que les informations se succèdent et ne sont vraies que pour l'instant où elles ont été générées. Chaque donnée contient donc la réalité de l'instant T (un panier d'achat sera créé autant de fois qu'on y ajoute, retranche ou modifie le contenu) et on ne retient donc que les dernières.

La gestion en flux

Le souci de disponibilité, enjeux primordial de la plupart des produits, est lié au fait que les données arrivent sans discontinuer. Dans l'absolu rien n'est jamais fixe, tout est en permanente évolution. Le flux est tel que le temps du traitement ne peut plus être celui de l'événement.
Comme le voyageur du train qui ne perçoit qu'une portion du paysage défilant au travers de la fenêtre, les techniques de développement reposent désormais de plus en plus sur le concept de "windowing". Le résultat change en fonction de la quantité et de la plage de temps des événements analysés. Cela introduit une nécessaire variable de prédiction, d'anticipation dont il faut être prêt à se satisfaire.

© Médiablue 2017. Tous droits réservés.

Imprimer - PDF