AWS AppConfig
アプリケーションの設定変更を段階的ロールアウトとバリデーション付きで安全にデプロイし、問題発生時に自動ロールバックするサービス
概要
AWS AppConfig は、AWS Systems Manager の機能として提供される設定管理サービスです。アプリケーションの設定変更をコードデプロイとは独立して安全に配信でき、段階的なロールアウト、自動ロールバック、バリデーションによる事前検証を組み合わせることで、設定ミスによる障害リスクを大幅に低減します。Lambda、ECS、EKS、EC2 上のアプリケーションに対して、フィーチャーフラグ、運用パラメータ、許可リストなどの設定をリアルタイムに反映でき、再デプロイなしでアプリケーションの振る舞いを制御できます。
設定プロファイルとデプロイ戦略
AppConfig では、アプリケーション、環境、設定プロファイルの 3 階層でリソースを整理します。アプリケーションは論理的なグループ (マイクロサービス単位など) を表し、環境は本番・ステージング・開発といったデプロイ先を区別します。設定プロファイルは実際の設定データの格納先を定義し、S3 バケット、SSM ドキュメント、SSM パラメータストアのいずれかをソースに指定できます。デプロイ戦略は設定変更の展開速度を制御する仕組みで、線形 (Linear)、指数 (Exponential)、即時 (AllAtOnce) の 3 パターンが用意されています。本番環境では線形デプロイが推奨され、例えば 20 分間で 10% ずつ段階的にロールアウトする設定にすれば、異常検知時に影響範囲を最小限に抑えられます。デプロイ中に CloudWatch アラームが発火すると自動ロールバックが実行され、直前の正常な設定に即座に戻ります。この仕組みにより、設定変更のリスクをコードデプロイと同等の安全性で管理できます。
バリデーターによる設定値の安全検証
AppConfig のバリデーターは、設定値がデプロイされる前にその内容を検証し、不正な値がアプリケーションに到達するのを防ぎます。バリデーターには構文バリデーターと Lambda バリデーターの 2 種類があります。構文バリデーターは JSON Schema を指定して設定値の型、範囲、必須フィールドを宣言的に検証します。例えば、タイムアウト値が 1〜300 の整数であること、接続先 URL が https で始まることなどをスキーマで定義できます。Lambda バリデーターはカスタムロジックによる高度な検証を実現し、設定値の整合性チェック、外部システムとの疎通確認、ビジネスルールの検証などを実装できます。バリデーションに失敗するとデプロイは開始されず、設定作成者にエラーが返されます。複数のバリデーターを組み合わせることも可能で、構文チェックと業務ロジックチェックを段階的に適用するパターンが実務では効果的です。設定変更のヒューマンエラーを自動的に排除できるため、運用の信頼性が飛躍的に向上します。
フィーチャーフラグとランタイム統合
AppConfig のフィーチャーフラグ機能は、コードデプロイなしで機能の有効化・無効化を切り替える仕組みです。フィーチャーフラグ用の設定プロファイルを作成すると、各フラグに対してブール値、文字列、数値などの属性を定義でき、ユーザーセグメントやパーセンテージベースのターゲティングも設定できます。ランタイムでの設定取得には AppConfig Agent を使用します。Agent は Lambda レイヤー、ECS サイドカー、またはローカルの HTTP エンドポイントとして動作し、設定値をローカルにキャッシュして高速に返却します。ポーリング間隔はデフォルト 45 秒で、設定変更がデプロイされると次回ポーリング時に自動反映されます。Agent を使うことで、アプリケーションコードは単純な HTTP GET で設定を取得でき、SDK の依存を最小限に抑えられます。Lambda 環境では AppConfig Lambda Extension が推奨され、関数の初期化フェーズで設定を取得してメモリにキャッシュするため、コールドスタートへの影響も軽微です。