spring-cloud-gateway について
Spring Cloud Gatewayをエッジアダプターとして構成する開発スキルです。依存バージョンの互換性、ルート、セキュリティ、耐障害性、テストを扱います。
主な機能
- 01Spring CloudとBootの互換性
- 02明示的なルート条件と安定したID
- 03ヘッダーの除去と相関情報の付与
- 04タイムアウト、再試行、サーキットブレーカーの指針
- 05ルートと統合テスト
活用シーン
- 01サービス向けゲートウェイルートの定義
- 02信頼できないリクエストヘッダーの除去
- 03障害時やタイムアウト時の動作テスト
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ rrezartprebreza/ spring-boot-skills --skill spring-cloud-gatewayインストール後、Claude Code で/spring-cloud-gatewayを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlexamples/bad-routes.ymlgood-routes.yml詳細
Spring Cloud Gateway
ゲートウェイはエッジアダプターとして維持します。ドメインのワークフローをフィルターに移さないでください。
互換性を最優先
- Boot の正確なマイナーバージョンに対応する Spring Cloud リリーストレインを選択します。
- Spring Cloud BOM をインポートし、個々の Spring Cloud 依存関係のバージョン指定は省略します。
- プロジェクトで意図的に MVC バリアントを使用している場合を除き、リアクティブゲートウェイを優先します。
ルートのルール
- 安定したルート ID と明示的な述語を使用します。
- 信頼できない転送用、ID 用、内部用のヘッダーはエッジで削除します。
- クライアントから渡された値を削除してから、相関ヘッダーを追加します。
- パスの書き換えとホストの変更は、ルート設定で明確にします。
- 接続タイムアウトとレスポンスタイムアウトは全体に設定し、ルートごとの上書きは必要最小限にします。
セキュリティとレジリエンス
- エッジで認証し、下流のサービスでも認可を行います。
- トークンは、意図したオーディエンスにのみ中継します。
- レート制限には、未検証のヘッダーではなく、信頼できる ID または API キーを使用します。
- リトライするのは、レスポンスの確定前に限り、冪等性のある操作だけにします。
- 障害が発生している依存関係にはサーキットブレーカーを使用し、無制限のリトライで継続的な障害を隠さないでください。
テストと運用
- 述語、フィルター、ヘッダーの削除、ステータスのマッピング、タイムアウトをテストします。
- 統合テストには WireMock またはコンテナ化した上流サービスを使用します。
- タグの種類を制限して、ルート ID、結果、レイテンシー、上流のメトリクスを出力します。
例
examples/good-routes.ymlとexamples/bad-routes.ymlを参照してください。
注意点
- エージェントがパブリックリクエストの
X-User-Idを信頼しています。認証後に ID を導出してください。 - エージェントが POST リクエストをデフォルトでリトライしています。冪等性が証明された操作だけをリトライしてください。
- エージェントがビジネスオーケストレーションをゲートウェイフィルターに追加しています。ドメインロジックは下流に置いてください。
- エージェントがレスポンスタイムアウトを設定していません。上流の応答停止により、ゲートウェイのリソースが枯渇するおそれがあります。
- エージェントが互換性のない Spring Cloud と Boot のバージョンを組み合わせています。公式の互換性マトリクスを使用してください。
コメント
Markdown 対応