セルベースアーキテクチャ
システムを独立したセルに分割し、障害の爆発半径を最小化するデプロイメントパターン
アーキテクチャ耐障害性
セルベースアーキテクチャとは
セルベースアーキテクチャは、システムを独立したセルに分割し、障害の爆発半径 (Blast Radius) を最小化するパターンである。AWS が大規模サービスの運用で培った設計思想。
セルの構造
各セルは独立したインフラスタック (API Gateway、Lambda、DynamoDB など) を持ち、特定のテナント群を担当する。ルーターがテナント ID に基づいてリクエストを適切なセルに振り分ける。1 つのセルに障害が発生しても、他のセルのテナントには影響しない。
ルーター (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. 全セルにデプロイ | 段階的に展開 |
実務での活用方法は関連書籍にも詳しい。
この記事は役に立ちましたか?
関連用語
関連する記事
障害対応の夜に思い出す、あの本の 1 ページ
本番障害の緊迫した場面で、過去に読んだ技術書の知識が助けてくれた経験はありませんか。「いつか役立つ」知識が「今この瞬間」に変わる読書の価値を考えます。
深夜 3 時のデプロイ前に読み返したい 1 ページ
本番デプロイの直前、最終確認のチェックリストとして技術書の特定のページが役立つことがあります。緊張の場面で頼りになる「お守りの 1 ページ」の見つけ方と活用法。
バグを生むのは知識不足ではなく想像力不足である
バグの多くは、コードを書いた時点で「こういうケースもありうる」と想像できなかったことが原因です。想像力を鍛える読書法と、エッジケースへの感度を高める方法を解説します。