cloud-native-patterns について
クラウドネイティブアプリケーションを設計する開発者向けのリファレンスです。Twelve-Factorの原則、回復性パターン、通信、ヘルスチェック、コンテナの実践項目を扱います。
主な機能
- 01Twelve-Factorの原則
- 02サーキットブレーカー、再試行、バルクヘッド
- 03同期・非同期通信
- 04ヘルス・レディネスチェック
- 05コンテナの実践項目
活用シーン
- 01クラウドネイティブ設計の見直し
- 02サービス呼び出しへの回復性の追加
- 03ヘルスエンドポイントとコンテナビルドの計画
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ dralgorhythm/ claude-agentic-framework --skill cloud-native-patternsインストール後、Claude Code で/cloud-native-patternsを入力して読み込まれたか確認します。
詳細
クラウドネイティブのパターン
Twelve-Factor App
- コードベース:1つのコードベースで複数のデプロイを行います
- 依存関係:明示的に宣言して分離します
- 設定:環境変数に保存します
- バックエンドサービス:アタッチされたリソースとして扱います
- ビルド、リリース、実行:各ステージを厳密に分離します
- プロセス:ステートレスなプロセスとして実行します
- ポートバインディング:ポートを通じてサービスを公開します
- 並行性:プロセスモデルを通じてスケールアウトします
- 廃棄可能性:起動を速くし、正常にシャットダウンします
- 開発環境と本番環境の一致:環境を類似させます
- ログ:イベントストリームとして扱います
- 管理プロセス:単発のプロセスとして実行します
レジリエンスパターン
サーキットブレーカー
迅速に失敗させることで、障害の連鎖を防ぎます。
class CircuitBreaker {
private failures = 0;
private lastFailure?: Date;
async call<T>(fn: () => Promise<T>): Promise<T> {
if (this.isOpen()) {
throw new Error('Circuit is open');
}
try {
const result = await fn();
this.reset();
return result;
} catch (error) {
this.recordFailure();
throw error;
}
}
}
バックオフ付きリトライ
async function withRetry<T>(
fn: () => Promise<T>,
maxRetries = 3
): Promise<T> {
for (let i = 0; i < maxRetries; i++) {
try {
return await fn();
} catch (error) {
if (i === maxRetries - 1) throw error;
await sleep(Math.pow(2, i) * 1000); // Exponential backoff
}
}
}
バルクヘッド
障害を分離し、システム全体への影響を防ぎます。
サービス間通信
同期通信
- REST/HTTP
- gRPC
非同期通信
- メッセージキュー(RabbitMQ、SQS)
- イベントストリーミング(Kafka)
ヘルスチェック
app.get('/health', (req, res) => {
res.json({ status: 'healthy' });
});
app.get('/ready', async (req, res) => {
const dbHealthy = await checkDatabase();
const cacheHealthy = await checkCache();
if (dbHealthy && cacheHealthy) {
res.json({ status: 'ready' });
} else {
res.status(503).json({ status: 'not ready' });
}
});
コンテナのベストプラクティス
- 1つのコンテナにつき1つのプロセス
- マルチステージビルドを使用します
- 非 root ユーザーとして実行します
- ヘルスチェックを使用します
- イメージを小さく保ちます
コメント
Markdown 対応