Théorème CAP

Définition, exemples et bonnes pratiques

À retenir

  • On ne peut choisir que 2 éléments sur les 3 en cas de coupure réseau.
  • La tolérance au partitionnement (P) est quasi obligatoire pour les systèmes modernes.
  • C'est le socle qui explique les différences entre les types de bases de données NoSQL.

Le théorème CAP est une règle fondamentale qui explique qu'un système informatique fonctionnant sur plusieurs machines ne peut pas garantir simultanément trois caractéristiques essentielles : la cohérence (tout le monde voit la même donnée au même moment), la disponibilité (le système répond toujours) et la résistance aux pannes réseau. Imaginez une équipe travaillant sur un document partagé : si la connexion coupe, soit ils s'arrêtent pour rester synchronisés (perte de disponibilité), soit ils continuent chacun de leur côté au risque d'avoir des versions différentes (perte de cohérence).

Étymologie

Le terme est un acronyme anglais formé par les trois piliers du concept : Consistency (Cohérence), Availability (Disponibilité) et Partition Tolerance (Tolérance au partitionnement). Il a été théorisé par l'informaticien Eric Brewer à la fin des années 1990 et formalisé au début des années 2000.

Exemples d'usage

  • Systèmes CP (Cohérence + Partition) : Les bases de données comme MongoDB privilégient l'exactitude. Si une panne survient, le système peut refuser de répondre pour éviter de fournir des données périmées.
  • Systèmes AP (Disponibilité + Partition) : Des technologies comme Cassandra ou DynamoDB préfèrent rester accessibles même en cas de problème, quitte à ce que certains utilisateurs voient des données légèrement anciennes pendant quelques instants.

Cas d'usage

Ce concept intervient dès que l'on conçoit des architectures Web à grande échelle, des bases de données distribuées (NoSQL) ou des services cloud. Il aide les ingénieurs à choisir la technologie de stockage la plus adaptée selon si l'on gère des transactions bancaires (priorité à la cohérence) ou un flux de réseaux sociaux (priorité à la disponibilité).

Bonnes pratiques

Il ne faut pas chercher à obtenir les trois piliers à tout prix, car c'est techniquement impossible dans un environnement distribué. La bonne pratique consiste à accepter que le partitionnement réseau (le 'P') est inévitable sur Internet. Le choix réel se résume donc souvent à arbitrer entre la cohérence (C) et la disponibilité (A) selon les besoins critiques des utilisateurs.

Synonymes

théorème de Brewer

Antonymes

système centralisé (où le problème de partition ne se pose pas)

Conseil

Si vous débutez, retenez que le théorème CAP est une aide à la décision. Quand vous choisissez une base de données pour un projet, demandez-vous : 'Est-il plus grave que mon site soit indisponible pendant 10 secondes, ou qu'il affiche une information datant d'il y a 2 secondes ?' La réponse vous indiquera si vous avez besoin d'un système orienté cohérence ou disponibilité.

Questions fréquentes

Peut-on vraiment avoir les trois (CAP) si le réseau est parfait ?

En théorie, oui. Si le réseau ne tombe jamais en panne, la question du 'P' ne se pose pas. Mais dans le monde réel et sur Internet, une panne réseau finit toujours par arriver.

Un système peut-il changer de mode dynamiquement ?

Certains systèmes modernes permettent d'ajuster le curseur entre cohérence et disponibilité selon les requêtes, mais la limite théorique globale demeure.

Pourquoi le 'P' est-il si important ?

Parce que si vous n'êtes pas tolérant aux partitions, votre système entier s'effondre dès qu'un seul câble réseau est débranché entre deux serveurs.