api-gateway-patterns について
マイクロサービス向けAPIゲートウェイの設計と実装を支援するスキルです。ルーティング、セキュリティ、トラフィック制御、サービス合成を扱い、一般的なパターンや実装の資料も含みます。
主な機能
- 01ルーティング戦略のガイド
- 02認証・認可パターン
- 03レート制限、リトライ、サーキットブレーカー
- 04BFFとゲートウェイのアーキテクチャパターン
- 05サービス合成と変換
- 06実装リファレンス
活用シーン
- 01マイクロサービス向けゲートウェイの設計
- 02ゲートウェイ層でのアクセス制御の追加
- 03耐障害性を考慮したトラフィック方針の策定
- 04ゲートウェイの構成や実装の選定
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ nickcrew/ claude-cortex --skill api-gateway-patternsインストール後、Claude Code で/api-gateway-patternsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/authentication.mdbff-pattern.mdcomposition.mdimplementations.mdrouting-patterns.mdservice-discovery.mdtraffic-management.mdtransformation.md詳細
API ゲートウェイのパターン
大規模なマイクロサービスアーキテクチャ向けに、ルーティング、認証、トラフィック管理、サービス合成のパターンを用いて API ゲートウェイを実装するための専門的なガイダンスです。
このスキルを使用する場面
- マイクロサービス向けの API ゲートウェイインフラストラクチャを実装する
- Backend for Frontend(BFF)レイヤーを設計する
- ゲートウェイレベルで認証と認可を追加する
- レート制限、サーキットブレーカー、再試行ロジックを実装する
- サービスディスカバリーと動的ルーティングを設定する
- API の合成および集約レイヤーを構築する
- 横断的関心事(ロギング、モニタリング、CORS)を管理する
- ゲートウェイソリューション(Kong、Nginx、Envoy、AWS API Gateway)を評価する
コアコンセプト
ゲートウェイの責務
ルーティング:パス、ヘッダー、ホストに基づいて、リクエストを適切なバックエンドサービスに転送します セキュリティ:認証、認可、API キーの検証を一元化します トラフィック管理:レート制限、サーキットブレーカー、再試行ロジックを適用します 合成:複数のサービス呼び出しを集約して、統一されたレスポンスを返します 変換:クライアント向けの最適化やレガシーシステムへの適応のために、リクエスト/レスポンスを変更します
アーキテクチャパターン
単一ゲートウェイ:すべてのクライアントに対して 1 つのゲートウェイを使用します(シンプルですが、ボトルネックになる可能性があります) BFF パターン:クライアントの種類(モバイル、ウェブ、管理者)ごとに個別のゲートウェイを用意し、それぞれに最適化します GraphQL ゲートウェイ:サービス間でスキーマをステッチし、クライアント主導のデータ取得を可能にします サービスメッシュ:サイドカープロキシを使用する分散ゲートウェイパターンです(Istio、Linkerd)
クイックリファレンス
| タスク | リファレンスを読み込む |
|---|---|
| ルーティング戦略(パス、ヘッダー、ホストベース) | skills/api-gateway-patterns/references/routing-patterns.md |
| リクエスト/レスポンスの変換 | skills/api-gateway-patterns/references/transformation.md |
| API の合成と集約 | skills/api-gateway-patterns/references/composition.md |
| 認証と認可(JWT、OAuth、RBAC) | skills/api-gateway-patterns/references/authentication.md |
| トラフィック管理(レート制限、サーキットブレーカー) | skills/api-gateway-patterns/references/traffic-management.md |
| Backend for Frontend(BFF)パターン | skills/api-gateway-patterns/references/bff-pattern.md |
| サービスディスカバリーの統合 | skills/api-gateway-patterns/references/service-discovery.md |
| ゲートウェイの実装(Kong、Nginx、Envoy、AWS) | skills/api-gateway-patterns/references/implementations.md |
実装ワークフロー
フェーズ 1:要件分析
- クライアントの種類を特定する:モバイル、ウェブ、管理者、パートナー
- サービスの全体像を把握する:バックエンドサービスとエンドポイントをカタログ化する
- 横断的関心事を定義する:認証、ロギング、モニタリング、CORS
- 合成のニーズを特定する:集約が必要なエンドポイントはどれか?
- SLA を設定する:レイテンシ、スループット、可用性の目標
フェーズ 2:ゲートウェイの設計
- アーキテクチャを選択する:単一ゲートウェイ、BFF、GraphQL のいずれか
- 実装を選択する:Kong、Nginx、Envoy、AWS API Gateway
- ルーティングルールを設計する:パスベース、ヘッダーベース、ホストベース
- 認証を計画する:JWT、OAuth 2.0、API キー、またはハイブリッド
- トラフィックポリシーを定義する:レート制限、サーキットブレーカー、タイムアウト
フェーズ 3:実装
- インフラストラクチャを設定する:ゲートウェイインスタンスをデプロイし、ロードバランサーを設定する
- ルーティングを実装する:サービスディスカバリーとルート定義を設定する
- 認証を追加する:JWT の検証、OAuth の統合、API キーの管理
- トラフィック管理を適用する:レート制限、サーキットブレーカー、再試行ロジック
- オブザーバビリティを有効にする:分散トレーシング、メトリクス、構造化ロギング
フェーズ 4:テストと最適化
- 負荷テスト:想定負荷およびピーク負荷時のパフォーマンスを検証する
- 障害注入:サーキットブレーカーと再試行ロジックをテストする
- セキュリティテスト:認証フロー、トークン検証、RBAC ポリシーを検証する
- レイテンシの最適化:キャッシュ戦略、コネクションプーリング
- 監視と調整:実際のトラフィックに基づいてタイムアウトと制限を調整する
ベストプラクティス
- 横断的関心事を一元化する:ゲートウェイで認証、ロギング、監視を行います
- ゲートウェイを軽量に保つ:複雑なビジネスロジックを避け、サービスに委譲します
- ヘルスチェックを実装する:上流サービスの健全性を監視し、正常でないインスタンスを除外します
- サーキットブレーカーを使用する:連鎖的な障害を防ぎ、速やかに失敗させます
- レート制限を適用する:サービスを過負荷から保護し、段階的な制限を実装します
- 可観測性を有効にする:分散トレーシング、メトリクス、構造化ロギングを導入します
- API にバージョンを付ける:複数の API バージョンをサポートし、廃止を計画します
- 通信を保護する:すべての通信で TLS を使用し、サービス間通信には相互 TLS を使用します
- 戦略的にキャッシュする:レスポンスをキャッシュしますが、適切に無効化します
- レジリエンスをテストする:カオスエンジニアリング、障害注入、負荷テストを行います
よくある間違い
- ゲートウェイにビジネスロジックを置く:ゲートウェイはルーティングとセキュリティに専念させ、ビジネスルールを扱わせないでください
- 過剰な呼び出しを伴う構成:上流への呼び出しが多すぎます(BFF、GraphQL、またはキャッシュを使用します)
- 単一障害点を作る:冗長構成でデプロイし、ロードバランサーを使用します
- タイムアウトを設定しない:リクエストが停止したままになるのを防ぐため、接続タイムアウトと読み取りタイムアウトを必ず設定します
- バックプレッシャーを無視する:キューの上限を設定し、グレースフルデグラデーションを実装します
- 過剰な集約:ゲートウェイに過剰な処理(計算負荷の高い変換)をさせないでください
- 監視が不十分:ゲートウェイレベルでレイテンシ、エラー、スループットを必ず追跡します
- レート制限を設けない:保護策がなければ、いずれサービスは過負荷になります
- すべてを同期処理にする:重要度の低い操作には非同期パターンを使用します
- バージョン戦略がない:破壊的変更により、すべてのクライアントに同時に影響が及びます
リソース
- Kong:https://docs.konghq.com/gateway/latest/
- Nginx:https://nginx.org/en/docs/
- Envoy:https://www.envoyproxy.io/docs/envoy/latest/
- AWS API Gateway:https://docs.aws.amazon.com/apigateway/
- パターン:Chris Richardson 著「Microservices Patterns」
- サービスメッシュ:https://istio.io/latest/docs/
- サーキットブレーカー:Martin Fowler の CircuitBreaker パターン
- BFF パターン:Sam Newman 著「Building Microservices」
コメント
Markdown 対応