AWS AppConfig で実装するフィーチャーフラグ - 安全な設定デプロイとロールバック
コードデプロイとは独立した設定変更を、Linear・Exponential 戦略で段階的にロールアウトする。CloudWatch アラーム連動の自動ロールバックで安全性を確保します。
AppConfig の概要
AppConfig はアプリケーションの設定を安全にデプロイするサービスです。フィーチャーフラグ、チューニングパラメータ、許可リストなどの設定を、コードデプロイとは独立して変更できます。設定変更は段階的にロールアウトされ、問題が検出されると自動ロールバックします。Lambda、ECS、EC2 上のアプリケーションから SDK またはエクステンション経由で設定を取得します。
デプロイ戦略と自動ロールバック
デプロイ戦略はロールアウトの速度を制御します。Linear (線形) は一定間隔で均等にデプロイし、Exponential (指数) は最初は少数のホストに適用して徐々に拡大します。CloudWatch アラームをモニターに設定すると、デプロイ中にアラームが発火した場合に自動ロールバックが実行されます。例えばエラー率のアラームを設定し、新しい設定でエラーが増加した場合に即座に前の設定に戻します。バリデーターは JSON Schema による構文チェックと Lambda 関数による論理チェックの 2 種類があり、不正な設定値のデプロイを事前に防止します。
フィーチャーフラグの設計パターン
フィーチャーフラグは JSON 形式で定義し、各フラグに有効/無効の状態と属性 (対象ユーザー、ロールアウト率) を設定します。段階的ロールアウトでは、最初に社内ユーザーの 5% に新機能を公開し、エラー率を監視しながら 25%、 50%、 100% と拡大します。 CloudWatch アラームをバリデーターとして設定すると、エラー率が閾値を超えた場合にデプロイが自動ロールバックされます。 Lambda エクステンションでフラグの値をキャッシュし、 API コールのレイテンシを削減します。環境ごと (dev/staging/prod) に異なるフラグ値を設定し、本番環境のみで段階的ロールアウトを適用する運用が一般的です。 AppConfig の基礎から応用まで、書籍 (Amazon)で体系的に学べます。
AppConfig の料金
AppConfig の料金は設定の取得リクエスト数で課金されます。100 万リクエストあたり約 2 ドルで、フィーチャーフラグの評価頻度に応じてコストが変動します。Lambda エクステンションでキャッシュを有効にすると、ポーリング間隔 (デフォルト 45 秒) ごとに 1 回のリクエストに集約され、Lambda の呼び出し回数が多くてもリクエスト数を抑えられます。デプロイ自体に追加料金は発生しません。フリーフォーム設定プロファイルとフィーチャーフラグプロファイルで料金に差はなく、用途に応じて使い分けます。
まとめ
AppConfig はフィーチャーフラグと設定値を、コードデプロイとは独立して安全にデプロイするサービスです。Linear や Exponential のデプロイ戦略で段階的にロールアウトし、CloudWatch アラーム連動の自動ロールバックで設定変更によるインシデントリスクを最小化します。Lambda エクステンションでキャッシュを活用した低レイテンシの設定取得も実現します。