自己管理型 Kubernetes ワークロードを最小労力で移行する
ドイツのオンラインチケット販売会社が、自社データセンターで稼働しているウェブサイトを AWS へ移行しようとしています。サイトはマイクロサービスで構成され、自前で構築した自己管理型 Kubernetes クラスター上のコンテナとして動作しており、Deployment や Service を定義したマニフェスト一式は社内の Git リポジトリで管理されています。コンテナイメージはオンプレミス環境に併設したオープンソースのイメージレジストリに格納され、サイトのデータはすべて PostgreSQL データベースに保存されています。ソリューションアーキテクトは AWS 上で採用するアーキテクチャを決定しなければなりません。移行にかかる労力を最小限に抑えてこれらの要件を満たすソリューションはどれですか。
解説を読む(正解: B)
移行労力を最小化する設計では、既存資産をどれだけそのまま再利用できるかが判断基準になります。Amazon EKS はアップストリーム互換の Kubernetes コントロールプレーンを AWS がマネージドで提供するサービスであり、既存の Deployment や Service のマニフェストを書き換えることなく kubectl でそのまま適用できます。マネージド型ノードグループを使えばワーカーノードのプロビジョニング、AMI 更新、ドレインといった作業も AWS 側の自動化に委ねられ、コンテナイメージを Amazon ECR に複製すればレジストリの自前運用も不要になります。PostgreSQL は互換性のある Amazon Aurora PostgreSQL に載せ替えることで、アプリケーションを変更せずに運用管理を委譲できます。この組み合わせが、マニフェストという既存資産を最大限活かしつつ運用負荷も下げる最小労力の解であり、B が正解です。A の AWS App Runner はコンテナイメージまたはソースコードから単一のウェブサービスを実行するサービスで、Kubernetes マニフェストを解釈する機能を持たず、イメージソースも基本的に ECR やソースリポジトリに限られるため、オンプレミスの独自レジストリを直接つなぐ構成自体が成立しません。C の Amazon ECS は堅実なコンテナオーケストレーターですが、Kubernetes のマニフェストは利用できず、Deployment ごとにタスク定義と ECS サービスへ書き起こす変換作業がマイクロサービスの数だけ発生するため、労力が大きく増えます。D は Kubernetes コントロールプレーン、イメージレジストリ、データベースのすべてを引き続き自前で運用することになり、オンプレミスの運用責任をそのまま持ち込むだけで、労力削減にも可用性向上にもつながりません。
NAT ゲートウェイのデータ処理料金の削減
製造業の IoT 分析基盤では、プライベートサブネットで稼働する 600 個の Amazon ECS on AWS Fargate タスクが、毎月およそ 400 TB のセンサーデータを Amazon S3 へ書き込み、加工結果を Amazon DynamoDB に保存しています。各タスクは起動時に Amazon ECR からコンテナイメージを取得し、標準出力を Amazon CloudWatch Logs へ送信しています。請求内訳を確認したところ、NAT ゲートウェイのデータ処理料金が月額コストの最大項目になっていました。アーキテクチャを大きく変更せずにこの費用を削減する対策を 2 つ選択してください。
複数選択問題です (正解 2 つ)。選んでから判定してください。
解説を読む(正解: A、B)
NAT ゲートウェイの料金は時間あたりの固定料金と、通過したデータ量に比例するデータ処理料金の 2 つで構成されます。プライベートサブネットから S3、DynamoDB、ECR、CloudWatch Logs といった AWS のパブリックエンドポイントへ出ていく通信もすべて NAT ゲートウェイを通るため、大量データを扱うワークロードではデータ処理料金が支配的になります。S3 と DynamoDB はゲートウェイ型 VPC エンドポイントに対応しており、エンドポイント自体の利用料もデータ処理料金も発生しません。ルートテーブルに宛先プレフィックスリスト向けの経路が追加され、両サービス宛てのトラフィックは NAT ゲートウェイを迂回するため、毎月 400 TB 分のデータ処理料金がそのまま消えます。したがって A が最も効果の大きい対策です。B の ECR と CloudWatch Logs は AWS PrivateLink のインターフェイスエンドポイントに対応しており、エンドポイントの時間料金とデータ処理料金は発生するものの、単価は NAT ゲートウェイのデータ処理料金より低く、イメージのプルとログ送信の帯域を NAT から外せます (ECR のイメージレイヤーは S3 から取得されるため、A の S3 ゲートウェイエンドポイントと併用することが前提です)。C はデータ転送の問題を一部緩和しますが、600 個のタスクをインターネットに直接面する場所へ移すことになり、セキュリティ境界を大きく変えるため「アーキテクチャを大きく変更しない」という条件と最小権限の考え方に反します。D はデータ処理料金が通過データ量に比例する以上、台数を増やしても総額は変わらず、時間料金の分だけむしろ増加します。AZ 間のデータ転送料金の削減にはなりますが、主因の解決にはなりません。E の CloudFront は S3 からの配信 (ダウンロード) を高速化し配信コストを下げるためのサービスであり、VPC 内から S3 へアップロードする経路が NAT ゲートウェイを通ること自体を回避するものではありません。
Lambda のタイムアウト上限を超える処理のリファクタリング
ある医用画像 SaaS 事業者は、Amazon S3 バケットにアップロードされた画像をダウンロードして変換し、変換後の画像を別の S3 バケットへ保存したうえで、Amazon DynamoDB テーブル上の画像メタデータを更新するアプリケーションを運用しています。このアプリケーションは Python で書かれ、AWS Lambda 関数として実行されており、新しい画像が S3 にアップロードされたときに呼び出されます。長らく問題なく稼働していましたが、取り扱う画像の解像度が大幅に上がったことで、Lambda 関数がタイムアウトエラーで失敗することが頻発するようになりました。関数のタイムアウトはすでに設定可能な最大値になっています。ソリューションアーキテクトは、呼び出しの失敗を防ぐためにアーキテクチャをリファクタリングする必要がありますが、同社は基盤となるインフラストラクチャの管理を望んでいません。これらの要件を満たす手順の組み合わせはどれですか。2 つ選択してください。
複数選択問題です (正解 2 つ)。選んでから判定してください。
解説を読む(正解: A、B)
AWS Lambda には 1 回の呼び出しあたり最大 15 分という実行時間の上限があり、これは設定で緩和できません。1 枚あたりの処理時間がこの上限を超えるようになった以上、実行時間に制限のないコンピューティング基盤へ処理を移すことが唯一の恒久的な解決策です。同時に「インフラストラクチャを管理したくない」という条件があるため、サーバーレスのコンテナ実行環境である AWS Fargate が適合します。したがって、まずアプリケーションコードをコンテナイメージとしてビルドし Amazon ECR に発行し (選択肢 A)、次に Fargate 互換のタスク定義を作成して、S3 のアップロードイベントで起動される軽量な Lambda 関数から ECS タスクを実行する (選択肢 B) という組み合わせが正解になります。イベント受信は短時間で終わるため Lambda のままで問題なく、重い変換処理だけが時間制限のない Fargate タスクへ移ります。選択肢 C は誤りで、Step Functions の Parallel ステートは複数の分岐を並行実行するだけであり、1 枚の画像処理そのものが 15 分を超える事実は変わりません。プロビジョニング済み同時実行数もコールドスタート対策であってタイムアウトには無関係です。選択肢 D は誤りで、EC2 互換タイプのタスク定義では ECS コンテナインスタンスとして EC2 を自社で用意・パッチ適用・スケーリングする必要があり、インフラを管理したくないという要件に反します。選択肢 E も誤りです。ストレージを EFS に、メタデータを RDS に置き換えても Lambda の 15 分という実行時間上限は変わらず、タイムアウトの根本原因を解消できないうえ、DynamoDB から RDS への移行という不要な変更まで発生します。