セルベースアーキテクチャ
システムを独立したセルに分割し、障害の爆発半径を最小化するデプロイメントパターン
アーキテクチャ耐障害性
セルベースアーキテクチャとは
セルベースアーキテクチャは、システムを独立したセルに分割し、障害の爆発半径 (Blast Radius) を最小化するパターンである。AWS が大規模サービスの運用で培った設計思想。
セルの構造
ルーター (Route 53 / CloudFront)
├── セル A (テナント 1-100)
│ ├── API Gateway
│ ├── Lambda
│ └── DynamoDB
├── セル B (テナント 101-200)
│ ├── API Gateway
│ ├── Lambda
│ └── DynamoDB
└── セル C (テナント 201-300)
セル vs 単一デプロイ
| 観点 | 単一デプロイ | セルベース |
|---|---|---|
| 障害の影響 | 全ユーザー | セル内のユーザーのみ |
| デプロイリスク | 全体に影響 | 1 セルずつ段階的に |
| スケーリング | 全体をスケール | セル単位でスケール |
| コスト | 低い | やや高い (リソースの重複) |
セルへのルーティング
// テナント ID からセルを決定
function routeToCell(tenantId: number): string {
if (tenantId <= 100) return 'cell-a.api.example.com';
if (tenantId <= 200) return 'cell-b.api.example.com';
return 'cell-c.api.example.com';
}
セルベースのデプロイ
| 手順 | 説明 |
|---|---|
| 1. セル A にデプロイ | 最小のセルで検証 |
| 2. 監視 | エラー率、レイテンシを確認 |
| 3. セル B にデプロイ | 問題なければ次のセル |
| 4. 全セルにデプロイ | 段階的に展開 |
実務での活用方法は関連書籍にも詳しい。