Cell-Based Architecture

Architecture 🔴 Senior

Définition

Découpage d'un système en cellules indépendantes et identiques, chacune servant un sous-ensemble de clients avec sa propre pile complète (calcul, base, files). Un routeur de cellules, le plus mince possible, dirige chaque requête vers la bonne cellule ; un plan de contrôle provisionne les cellules. Une panne, un bogue ou un déploiement raté ne touche qu'une fraction des clients. AWS documente le pattern dans son guide Well-Architected « Reducing the Scope of Impact with Cell-Based Architecture ».

Analogie

Les compartiments étanches d'un navire : une voie d'eau inonde un compartiment, pas la coque entière.

Exemple de code

// Routeur de cellules : couche mince, déterministe, sans logique métier
const CELLS = ['cell-a', 'cell-b', 'cell-c'];

function cellFor(tenantId: string): string {
  // hachage stable → un tenant vit toujours dans la même cellule
  const h = [...tenantId].reduce((a, c) => (a * 31 + c.charCodeAt(0)) >>> 0, 7);
  return CELLS[h % CELLS.length];
}

app.use((req, res, next) => {
  const cell = cellFor(req.headers['x-tenant-id'] as string);
  proxy.web(req, res, { target: `https://${cell}.internal` });
});
// Déployer la version N+1 sur cell-a d'abord = canary par cellule.

Cas d'usage

Plateforme multi-tenant à forte exigence de disponibilité, où l'on veut borner le « rayon d'explosion » d'un incident ou d'un déploiement.

Anti-pattern

Partager une base de données ou une file entre toutes les cellules : la ressource commune redevient le point de défaillance unique.
#architecture#resilience#senior

Fiche mise à jour le 2026-09-27

← → au clavier pour passer d'une fiche à l'autre