AWS ソリューションアーキテクト アソシエイト 高性能な設計 問題

ゆめさくが作った練習問題です。本試験の問題ではありません。

高性能な設計の問題を2⁠4問、小分野ごとにまとめました。選ぶと、その場で正誤と解説が出ます。

ログインなしで解けます。答えはこのブラウザの中だけに残り、どこにも送りません。

この分野の小分野

  • ストレージの性能(8問)
  • コンピューティングとデータベースの性能(8問)
  • ネットワークとデータ取り込みの性能(8問)

高性能な設計の問題

24 問

選ぶと、すぐに正誤と解説が出ます。選んだ答えは変えられません。

  1. ストレージの性能

    問 1ある研究機関が、同じリージョンの S3 バケットに置いた 1 個あたり数百 GB の観測データを、EC2 の解析サーバーへ読み込んでいます。1 本の GET でオブジェクトを丸ごと取得しているため、読み込みに時間がかかっています。要件は「既存のバケットとストレージクラスは変えない」「1 個のオブジェクトの読み込みにかかる時間を短くする」の 2 つです。最も適した方法はどれですか。

  2. 問 2ある小売企業の在庫システムでは、1 台の EC2 の上で在庫データベースが動いています。このデータベースのディスクとして、小さな単位の細かい読み書きを低い遅延でこなし、データが長く残るものを選ぶことになりました。保存の方式とサービスの組み合わせとして最も適したものはどれですか。

  3. 問 3ある動画制作会社が、EC2 で動画を変換しています。変換の途中で作る大量の中間ファイルは、ディスクに細かい読み書きを繰り返し、変換が終われば捨てます。中間ファイルは元の素材から何度でも作り直せます。要件は「ホストに物理的に付いたディスクを使い、ネットワークを経由しない読み書きにする」「インスタンスを止めたら消えてよい」です。最も適したストレージはどれですか。

  4. 問 4ある IoT 機器のメーカーが、全国のセンサーから届く計測ファイルを S3 バケットに書き込んでいます。キーはすべて incoming/ という 1 つのプレフィックスの直下に置いています。ピークには 1 秒あたり約 1 万件の PUT が集中し、一部の書き込みが抑制されて再試行が増えています。要件は「バケットは 1 つのままにする」「ファイルの中身と件数は変えない」です。最も適した対応はどれですか。

  5. 問 5ある放送局が、同じリージョンの EC2 から S3 へ、1 本あたり数十 GB の収録ファイルを送っています。1 回のリクエストで丸ごと送っているため時間がかかり、途中で通信が切れると最初から送り直しになります。要件は「帯域を並列に使って送る時間を短くする」「失敗した分だけを送り直す」です。最も適した方法はどれですか。

  6. 問 6ある設計事務所が、EFS のファイルシステムを複数の EC2 から使っています。締め切り前だけ読み書きが急に増えますが、その時期と量は予測できません。普段の使用量はピークに比べてごくわずかです。要件は「スループットの値を前もって見積もって設定しない」「急な増加に自動で応じる」です。最も適した設定はどれですか。

  7. 問 7ある病院が、院内の検査機器から NFS で画像ファイルを書き込んでいます。古いストレージ機器は廃止し、ファイルは S3 に置いて分析に使う方針です。要件は「機器の設定は NFS の書き込み先を変えるだけにする」「最近のファイルは院内のキャッシュから低遅延で読める」です。最も適した構成はどれですか。

  8. 問 8ある自動運転の研究チームが、1 つの AZ に置いた EC2 の学習クラスターで、数百万個の小さな画像を繰り返し読み込んで機械学習の学習を回しています。画像は別に保管している原本からいつでも作り直せます。要件は「S3 の API のまま、読み込みの遅延を一貫して 1 桁ミリ秒にする」「学習に使う EC2 と同じ AZ にデータを置く」です。最も適した保存先はどれですか。

  9. コンピューティングとデータベースの性能

    問 9ある通販サイトが、商品画像を縮小する Lambda 関数を使っています。メモリの使用量は設定値の半分ほどですが、CPU を多く使う処理のため 1 回の実行に時間がかかります。コールドスタートは問題になっていません。要件は「コードは変えない」「1 回の実行時間を短くする」です。最も適した対応はどれですか。

  10. 問 10ある気象研究所が、数十台の EC2 で、ノードどうしが細かいメッセージを絶えず交わす数値予報の計算を回しています。計算の速さはノード間の通信の遅延とスループットで決まります。すべてのノードを 1 つの AZ に置くことは許容されています。要件は「ノード間の通信の遅延を最も低くする」です。最も適した配置はどれですか。

  11. 問 11ある製薬会社が、条件を変えた 5,000 通りの分子シミュレーションを回します。計算はコンテナのイメージにまとめてあり、1 通りの計算は 1〜3 時間かかり、互いに独立しています。すべての計算が終わったあとに、結果をまとめる処理を 1 回だけ動かします。要件は「計算に使う台数の用意と後片付けを自動にする」「ジョブの待ち行列と実行の順番を自作の仕組みで管理しない」です。最も適した構成はどれですか。

  12. 問 12あるチケット販売サービスが、購入画面のカートの情報を保存する先を選んでいます。データは利用者 ID をキーにした読み書きだけで、結合や複雑な検索はしません。人気の公演の発売時には、いつ、どれだけ増えるか予測できない急増が起きます。要件は「利用者が何人でも 1 桁ミリ秒の応答を保つ」「読み書きの容量を前もって見積もらない」です。最も適した構成はどれですか。

  13. 問 13ある物流会社が、Aurora MySQL で配送の管理システムを動かしています。社内の担当者が日中に流す集計の問い合わせが重く、毎回条件も違います。この集計でライターの負荷が上がり、配送の登録が遅くなっています。要件は「集計の問い合わせをライターから切り離す」「集計用の接続先は 1 つで済ませる」です。最も適した構成はどれですか。

  14. 問 14あるネット通販の事業者は、受注の記録を注文 ID だけをキーにした DynamoDB のテーブルに置いています。新しく「ある顧客の注文を日付の新しい順に出す」画面を作りましたが、テーブル全体を Scan して顧客 ID で絞り込んでいるため遅く、読み取りの容量も大きく消費しています。要件は「注文 ID での取り出しも今まで通り使う」「読み取る量そのものを減らす」です。最も適した対応はどれですか。

  15. 問 15ある航空券の予約サイトが、運賃の表を RDS に置き、その前に ElastiCache を置いて読み取りを速くしています。今は遅延読み込みだけを使っているため、運賃を変えた直後に古い運賃が表示されることがあります。運賃の更新は 1 日に数回で、更新の処理が少し遅くなるのは許容されます。要件は「キャッシュの運賃が古くならない」「読み取りはキャッシュから返す」です。最も適したキャッシュの戦略はどれですか。

  16. 問 16ある証券会社が、数百 GB の取引データをすべてメモリに載せて分析するソフトウェアを EC2 で動かします。CPU の速さよりもメモリの量が処理の速さを決め、ディスクへの書き出しはほとんどありません。負荷は営業時間中ずっと高いままです。要件は「大きなデータをメモリで処理する用途に合わせた種類を選ぶ」です。最も適したインスタンスファミリーはどれですか。

  17. ネットワークとデータ取り込みの性能

    問 17ある製造業のグループ企業が、事業ごとに 25 個の VPC を持ち、本社のデータセンターとも Site-to-Site VPN でつないでいます。今は VPC ピアリングを組み合わせていますが、VPC を足すたびに接続と経路の設定が増えています。VPC は今後も増える見込みです。要件は「すべての VPC と本社を相互に通信させる」「VPC を足すときは 1 か所につなぐだけにする」です。最も適した構成はどれですか。

  18. 問 18あるメディア企業が、news、shop、member の 3 つのサブドメインで別々のアプリを公開しています。どのアプリも URL のパスは同じ形で、サブドメインごとに別のターゲットグループの EC2 へ届けたいと考えています。要件は「ロードバランサーは 1 台にまとめる」です。最も適した設定はどれですか。

  19. 問 19ある家電メーカーが、販売した機器から届く JSON の稼働ログを S3 に集め、Athena で分析しています。届いてから数分以内に分析に使えるようにし、保存は列指向の形式にしてクエリを速くしたいと考えています。要件は「サーバーを持たず、変換のコードも書かない」です。最も適した構成はどれですか。

  20. 問 20ある大学が、学内の NFS サーバーにたまる研究データを、毎晩 AWS の EFS へ写しています。今は担当者が作ったスクリプトで写していますが、転送が遅く、途中で欠けたファイルの確認もできていません。研究室のアプリの書き込み先は学内の NFS サーバーのまま変えません。要件は「自作のスクリプトをやめる」「転送のあとにデータの整合性を確かめる」です。最も適した方法はどれですか。

  21. 問 21ある動画配信会社が、視聴ログを S3 に置き、Athena で分析しています。ログは日付の区別なく 1 つのフォルダーに置かれています。ほとんどのクエリは WHERE 句で特定の日付の範囲だけを指定していますが、毎回すべてのデータが読まれて時間がかかっています。要件は「クエリが読むデータの量そのものを減らす」です。最も適した対応はどれですか。

  22. 問 22あるスマホゲームの会社が、プレイのイベントを Kinesis Data Streams に送り、不正検知、ランキング、分析などの 5 つのアプリが同じストリームから読んでいます。アプリを足すたびに、各アプリにデータが届くまでの遅れが大きくなってきました。要件は「シャードの数と送る側の仕組みは変えない」「各アプリがほかのアプリに影響されずに読む」です。最も適した対応はどれですか。

  23. 問 23ある建築ソフトの会社が、設計者がブラウザから操作する 3D の仮想ワークステーションを提供しています。利用者の多くはある大都市に集まっていますが、そこは使っているリージョンから遠く、操作の反応が遅いと苦情が出ています。画面は操作のたびに作られるので、キャッシュはできません。要件は「計算そのものを利用者の近くで実行する」です。最も適した構成はどれですか。

  24. 問 24ある保険会社が、各支店から毎日 S3 に届く大量の CSV を、Athena で速く分析できるように Parquet に変えたいと考えています。CSV の列の構成は支店ごとに少しずつ違うため、スキーマを自動で調べてカタログに登録したいと考えています。要件は「サーバーやクラスターを管理しない」です。最も適した構成はどれですか。

24 問中 0 問に答えました

解説の一覧

解いたあとに読み返せるよう、全問の解説を並べています。問いを開くと解説が出ます。

ストレージの性能

問1ある研究機関が、同じリージョンの S3 バケットに置いた 1 個あたり数百 GB の観測データを、EC2 の解析サーバーへ読み込んでいます。1 本の GET でオブジェクトを丸ごと取得しているため、読み込みに時間がかかっています。要件は「既存のバケットとストレージクラスは変えない」「1 個のオブジェクトの読み込みにかかる時間を短くする」の 2 つです。最も適した方法はどれですか。

正解は Range ヘッダーで同じオブジェクトの別々のバイト範囲を指定し、並行して取得する方法です。S3 は GET に Range ヘッダーを付けると指定した範囲だけを返します。同じオブジェクトの別々の範囲を複数の接続で同時に取ると、1 本で丸ごと取るより合計のスループットを高められ、バケットもストレージクラスも変えずに済みます。Transfer Acceleration は、クライアントとバケットの間の長い距離による遅れを縮める機能なので、同じリージョンの EC2 からの読み込みには効かず要件に合いません。S3 Express One Zone へ移すのは、既存のバケットを変えないという要件に合いません。Intelligent-⁠Tiering はアクセスの頻度に応じて保管の費用を下げる仕組みで、ストレージクラスを変えることにもなるので要件に合いません。出典 https://docs.aws.amazon.com/AmazonS3/latest/userguide/optimizing-⁠performance-⁠guidelines.html

問2ある小売企業の在庫システムでは、1 台の EC2 の上で在庫データベースが動いています。このデータベースのディスクとして、小さな単位の細かい読み書きを低い遅延でこなし、データが長く残るものを選ぶことになりました。保存の方式とサービスの組み合わせとして最も適したものはどれですか。

正解はブロック方式の永続ストレージの EBS です。AWS のストレージの選び方の手引きでは、ブロック方式はデータを同じ大きさのブロックに分けて速く読み書きできるように置く技術とされ、1 台の EC2 に付けて低遅延で使う耐久性のあるストレージとして、データベースなどの用途に EBS が挙げられています。EFS はファイル方式で、複数の EC2 から同時に読み書きする共有に向いたストレージなので、1 台のデータベースのディスクという用途に合いません。S3 はオブジェクト単位で API から読み書きする方式で、ブロック単位で細かく書き換えるディスクの代わりにならないので合いません。FSx for Windows File Server もファイル方式で、SMB で共有するファイルサーバーのためのものなので、ブロック単位で読み書きするディスクという用途に合いません。出典 https://docs.aws.amazon.com/decision-⁠guides/latest/storage-⁠on-⁠aws-⁠how-⁠to-⁠choose/choosing-⁠aws-⁠storage-⁠service.html

問3ある動画制作会社が、EC2 で動画を変換しています。変換の途中で作る大量の中間ファイルは、ディスクに細かい読み書きを繰り返し、変換が終われば捨てます。中間ファイルは元の素材から何度でも作り直せます。要件は「ホストに物理的に付いたディスクを使い、ネットワークを経由しない読み書きにする」「インスタンスを止めたら消えてよい」です。最も適したストレージはどれですか。

正解はインスタンスに付いたインスタンスストアのボリュームです。インスタンスストアは、ホストのコンピューターに物理的に付いたディスクで提供される一時的なブロックストレージで、バッファやキャッシュ、作業用の一時データのように頻繁に変わる情報に向いています。インスタンスを停止、休止、終了するとデータは残りませんが、作り直せる中間ファイルなら問題になりません。gp3 の EBS はネットワークでつながるボリュームなので、ネットワークを経由しないという要件に合いません。EFS はネットワーク越しの共有ファイルシステムで、同じ理由で合いません。S3 はネットワーク越しに API で読み書きするオブジェクトストレージで、ディスクの細かい読み書きの代わりにならないので合いません。出典 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/InstanceStorage.html

問4ある IoT 機器のメーカーが、全国のセンサーから届く計測ファイルを S3 バケットに書き込んでいます。キーはすべて incoming/ という 1 つのプレフィックスの直下に置いています。ピークには 1 秒あたり約 1 万件の PUT が集中し、一部の書き込みが抑制されて再試行が増えています。要件は「バケットは 1 つのままにする」「ファイルの中身と件数は変えない」です。最も適した対応はどれですか。

正解はキーの先頭を分けて、書き込みを複数のプレフィックスへ分散する方法です。S3 は 1 つのプレフィックスあたり少なくとも毎秒 3,5⁠0⁠0 件の PUT、COPY、POST、DELETE と 5,5⁠0⁠0 件の GET、HEAD をさばけ、プレフィックスの数に上限はありません。キーの先頭をセンサーの区分などで分けて複数のプレフィックスへ散らせば、バケットを 1 つのまま、並列にさばける量が増えます。Transfer Acceleration は距離による遅れを縮める機能で、プレフィックスあたりの処理の量は増えないので合いません。バージョニングは古い版を残す機能で、リクエストをさばく量は変わらないので合いません。Standard-⁠IA は低頻度のアクセス向けの保管の区分で、プレフィックスあたりの処理の量は変わらないので合いません。出典 https://docs.aws.amazon.com/AmazonS3/latest/userguide/optimizing-⁠performance.html

問5ある放送局が、同じリージョンの EC2 から S3 へ、1 本あたり数十 GB の収録ファイルを送っています。1 回のリクエストで丸ごと送っているため時間がかかり、途中で通信が切れると最初から送り直しになります。要件は「帯域を並列に使って送る時間を短くする」「失敗した分だけを送り直す」です。最も適した方法はどれですか。

正解はマルチパートアップロードで部分に分け、並列に送る方法です。マルチパートアップロードは 1 つのオブジェクトを部分に分けて送る仕組みで、部分は独立に、順不同で送れます。部分を並列に送ればスループットが上がり、ある部分の送信に失敗しても、その部分だけを送り直せば済みます。Transfer Acceleration は遠い場所からの転送の遅れを縮める機能で、同じリージョンからの送信では効き目が小さく、失敗した分だけを送り直す仕組みも持たないので合いません。バージョニングは上書き前の版を残す機能で、送信の速さにも送り直しにも関係しないので合いません。Glacier Flexible Retrieval は保管の費用を下げる区分で、送る時間は短くならないので合いません。出典 https://docs.aws.amazon.com/AmazonS3/latest/userguide/mpuoverview.html

問6ある設計事務所が、EFS のファイルシステムを複数の EC2 から使っています。締め切り前だけ読み書きが急に増えますが、その時期と量は予測できません。普段の使用量はピークに比べてごくわずかです。要件は「スループットの値を前もって見積もって設定しない」「急な増加に自動で応じる」です。最も適した設定はどれですか。

正解はスループットモードを Elastic にすることです。EFS の文書は、急増する負荷や予測できない負荷で性能の要件を見積もりにくいとき、または平均とピークの比が 5% 以下のときに、Elastic スループットを使うよう勧めています。Elastic は負荷に応じて自動でスループットが増減するので、値を前もって決める必要がありません。Provisioned は性能の要件が分かっているときに値を決めて使うモードなので、見積もらないという要件に合いません。Max I/O は前の世代のモードで、操作ごとの遅延が大きく、Elastic スループットとは組み合わせられないので合いません。One Zone はデータを 1 つの AZ に置く区分で、スループットの増え方は変わらないので合いません。出典 https://docs.aws.amazon.com/efs/latest/ug/performance.html

問7ある病院が、院内の検査機器から NFS で画像ファイルを書き込んでいます。古いストレージ機器は廃止し、ファイルは S3 に置いて分析に使う方針です。要件は「機器の設定は NFS の書き込み先を変えるだけにする」「最近のファイルは院内のキャッシュから低遅延で読める」です。最も適した構成はどれですか。

正解は院内に S3 File Gateway を置き、NFS で共有する構成です。S3 File Gateway は、NFS や SMB の標準のファイルのプロトコルで S3 にオブジェクトとして読み書きできるようにする仕組みで、ローカルのキャッシュによって低遅延でデータを読めます。機器は NFS の書き込み先を替えるだけで済み、ファイルは S3 に置かれるので分析に使えます。EFS をマウントする構成は、データが S3 ではなく EFS に置かれるので、S3 に置く方針に合いません。DataSync で写す構成は、今のストレージ機器を残すことになり、廃止する方針に合いません。Volume Gateway は iSCSI のブロックのボリュームとして見せる仕組みで、NFS で書き込む機器の設定を変えるだけでは使えないので合いません。出典 https://docs.aws.amazon.com/filegateway/latest/files3/what-⁠is-⁠file-⁠s3.html

問8ある自動運転の研究チームが、1 つの AZ に置いた EC2 の学習クラスターで、数百万個の小さな画像を繰り返し読み込んで機械学習の学習を回しています。画像は別に保管している原本からいつでも作り直せます。要件は「S3 の API のまま、読み込みの遅延を一貫して 1 桁ミリ秒にする」「学習に使う EC2 と同じ AZ にデータを置く」です。最も適した保存先はどれですか。

正解は同じ AZ に作った S3 Express One Zone のディレクトリバケットです。S3 Express One Zone は、遅延に敏感な用途に向けて一貫した 1 桁ミリ秒のデータアクセスを出すように作られた高性能のストレージクラスで、AZ を選んでディレクトリバケットを作り、計算資源と同じ場所に置けます。データは 1 つの AZ の中だけで冗長に保存されますが、作り直せる学習データなら許容できます。CloudFront は利用者に近いエッジから配信してキャッシュする仕組みで、データは汎用バケットのまま AZ を選んで置けないので、EC2 と同じ AZ に置く要件に合いません。Standard-⁠IA は低頻度のアクセス向けの区分で、繰り返し読む学習データに向かないので合いません。One Zone-⁠IA も低頻度のアクセスの費用を下げるための区分で、一貫した 1 桁ミリ秒の遅延を目的にしていないので合いません。出典 https://docs.aws.amazon.com/AmazonS3/latest/userguide/directory-⁠bucket-⁠high-⁠performance.html

コンピューティングとデータベースの性能

問9ある通販サイトが、商品画像を縮小する Lambda 関数を使っています。メモリの使用量は設定値の半分ほどですが、CPU を多く使う処理のため 1 回の実行に時間がかかります。コールドスタートは問題になっていません。要件は「コードは変えない」「1 回の実行時間を短くする」です。最も適した対応はどれですか。

正解は関数のメモリの設定値を増やすことです。Lambda は設定したメモリの量に比例して CPU の能力を割り当てるので、メモリを増やすと CPU も増え、CPU を多く使う処理の実行時間が短くなります。メモリは 1⁠2⁠8 MB から 1⁠0,2⁠4⁠0 MB の間で設定でき、コードを変えずに済みます。タイムアウトを長くしても、途中で打ち切られにくくなるだけで実行は速くならないので合いません。予約済みの同時実行数は同時に動く数の確保と上限の設定で、1 回の実行の速さは変わらないので合いません。プロビジョニングされた同時実行は初期化済みの実行環境を用意してコールドスタートを減らす設定で、問題になっていない起動の遅れへの対策なので合いません。出典 https://docs.aws.amazon.com/lambda/latest/dg/configuration-⁠memory.html

問10ある気象研究所が、数十台の EC2 で、ノードどうしが細かいメッセージを絶えず交わす数値予報の計算を回しています。計算の速さはノード間の通信の遅延とスループットで決まります。すべてのノードを 1 つの AZ に置くことは許容されています。要件は「ノード間の通信の遅延を最も低くする」です。最も適した配置はどれですか。

正解はクラスタープレイスメントグループで 1 つの AZ に寄せることです。クラスタープレイスメントグループは 1 つの AZ の中のインスタンスの論理的なまとまりで、低いネットワーク遅延や高いネットワークスループットが要る用途、通信の大半がグループの中のインスタンスどうしで起きる用途に勧められています。スプレッドはインスタンスを別々のハードウェアに分けて同時の故障を避ける配置で、遅延を下げる目的ではないので合いません。パーティションは区画ごとにラックを分けて、大規模な分散処理で故障の影響を区切る配置なので、同じく合いません。複数の AZ に分ける構成は可用性は上がりますが、AZ をまたぐ通信が増え、遅延を最も低くする要件に合いません。出典 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-⁠strategies.html

問11ある製薬会社が、条件を変えた 5,0⁠0⁠0 通りの分子シミュレーションを回します。計算はコンテナのイメージにまとめてあり、1 通りの計算は 1〜3 時間かかり、互いに独立しています。すべての計算が終わったあとに、結果をまとめる処理を 1 回だけ動かします。要件は「計算に使う台数の用意と後片付けを自動にする」「ジョブの待ち行列と実行の順番を自作の仕組みで管理しない」です。最も適した構成はどれですか。

正解は AWS Batch の配列ジョブで回し、まとめのジョブを依存ジョブにすることです。AWS Batch は、ジョブの量と規模に応じて計算資源を自動で用意し、ジョブの配分も受け持つフルマネージドのサービスです。配列ジョブは同じジョブ定義を共有する 2〜1⁠0,0⁠0⁠0 個の子ジョブを並列に動かす仕組みで、大量の独立した計算を回すのに最も効率のよい方法とされています。まとめのジョブを配列ジョブに依存させれば、全部が終わってから 1 回だけ動きます。Lambda は 1 回の実行が最大 9⁠0⁠0 秒 (1⁠5 分) なので、1〜3 時間の計算に合いません。EMR の Spark は分散したデータ処理の仕組みで、コンテナの計算を Spark に書き直す必要があり、クラスターの管理も残るので合いません。自作のジョブ管理は、待ち行列と実行の順番を自作で管理しない要件に合いません。出典 https://docs.aws.amazon.com/batch/latest/userguide/array_jobs.html

問12あるチケット販売サービスが、購入画面のカートの情報を保存する先を選んでいます。データは利用者 ID をキーにした読み書きだけで、結合や複雑な検索はしません。人気の公演の発売時には、いつ、どれだけ増えるか予測できない急増が起きます。要件は「利用者が何人でも 1 桁ミリ秒の応答を保つ」「読み書きの容量を前もって見積もらない」です。最も適した構成はどれですか。

正解は DynamoDB のオンデマンドモードでテーブルを作ることです。DynamoDB はキーと値の読み書きに向いたサーバーレスの NoSQL のデータベースで、規模に関係なく一貫した 1 桁ミリ秒の性能を出せます。オンデマンドモードは容量の見積もりをせずに、負荷の増減に自動で応じます。RDS for MySQL で大きいインスタンスを選ぶ構成は、急増に合わせて前もってサイズを見積もる必要があり、要件に合いません。Aurora のリードレプリカは読み取りを分けるだけで、カートの書き込みの急増には効かず、台数の見積もりも要るので合いません。プロビジョニングモードで容量を固定する構成は、読み書きの容量を前もって決める必要があり、要件に合いません。出典 https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/on-⁠demand-⁠capacity-⁠mode.html

問13ある物流会社が、Aurora MySQL で配送の管理システムを動かしています。社内の担当者が日中に流す集計の問い合わせが重く、毎回条件も違います。この集計でライターの負荷が上がり、配送の登録が遅くなっています。要件は「集計の問い合わせをライターから切り離す」「集計用の接続先は 1 つで済ませる」です。最も適した構成はどれですか。

正解は Aurora レプリカを足し、集計の接続先をリーダーエンドポイントにすることです。リーダーエンドポイントは問い合わせ用の接続先で、Aurora がすべての Aurora レプリカの間で接続を自動で振り分けます。集計はレプリカで動くのでライターの負荷から切り離され、接続先も 1 つで済みます。ライターを大きくする構成は、集計がライターで動いたままなので、切り離す要件に合いません。RDS Proxy は接続をプールして使い回す仕組みで、問い合わせはライターで動いたままなので合いません。ElastiCache は同じ結果を繰り返し読む場合に効きますが、毎回条件の違う集計ではキャッシュが当たらないので合いません。出典 https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.Overview.Endpoints.html

問14あるネット通販の事業者は、受注の記録を注文 ID だけをキーにした DynamoDB のテーブルに置いています。新しく「ある顧客の注文を日付の新しい順に出す」画面を作りましたが、テーブル全体を Scan して顧客 ID で絞り込んでいるため遅く、読み取りの容量も大きく消費しています。要件は「注文 ID での取り出しも今まで通り使う」「読み取る量そのものを減らす」です。最も適した対応はどれですか。

正解は顧客 ID と注文日をキーにした GSI を作り、Query することです。グローバルセカンダリインデックス (GSI) を作ると、テーブルのキーとは別の属性をキーにして Query でき、結果はソートキーの順に並びます。顧客 ID をパーティションキー、注文日をソートキーにすれば、その顧客の注文だけを新しい順に読めて、読み取る量が減ります。元のテーブルは注文 ID のまま使えます。並列の Scan は速くはなりますが、テーブル全体を読む量は減らないので合いません。DAX で Scan の結果をキャッシュしても、キャッシュに無いときはテーブル全体を読むので、読み取る量そのものを減らす要件に合いません。元のテーブルを消す構成は、注文 ID での取り出しを続ける要件に合いません。出典 https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html

問15ある航空券の予約サイトが、運賃の表を RDS に置き、その前に ElastiCache を置いて読み取りを速くしています。今は遅延読み込みだけを使っているため、運賃を変えた直後に古い運賃が表示されることがあります。運賃の更新は 1 日に数回で、更新の処理が少し遅くなるのは許容されます。要件は「キャッシュの運賃が古くならない」「読み取りはキャッシュから返す」です。最も適したキャッシュの戦略はどれですか。

正解は DB に書くたびにキャッシュも更新するライトスルーにすることです。ライトスルーは、データベースに書き込むたびにキャッシュのデータも追加や更新する戦略で、キャッシュのデータが古くなりません。書き込みはキャッシュとデータベースの 2 回になって少し遅くなりますが、更新が 1 日に数回で遅れも許容されるので問題になりません。遅延読み込みは、キャッシュに無いときだけデータベースから読み込むため、データベースを変えてもキャッシュは更新されません。有効期限を長くすると、古い運賃が残る時間がかえって延びるので合いません。ノードを増やしても更新の仕組みは変わらないので合いません。リードレプリカから読む構成は、キャッシュから返すという要件に合いません。出典 https://docs.aws.amazon.com/AmazonElastiCache/latest/dg/Strategies.html

問16ある証券会社が、数百 GB の取引データをすべてメモリに載せて分析するソフトウェアを EC2 で動かします。CPU の速さよりもメモリの量が処理の速さを決め、ディスクへの書き出しはほとんどありません。負荷は営業時間中ずっと高いままです。要件は「大きなデータをメモリで処理する用途に合わせた種類を選ぶ」です。最も適したインスタンスファミリーはどれですか。

正解はメモリ最適化の R ファミリーです。EC2 のインスタンスの種類の文書では、メモリ最適化のインスタンスは、メモリの中で大きなデータを処理する負荷で速い性能を出すように作られていると説明されています。R ファミリーはこの区分に入り、数百 GB のデータをメモリに載せる分析に合います。コンピューティング最適化の C は、CPU を多く使う計算に向いた区分で、メモリの量が決め手のこの用途には合いません。ストレージ最適化の I は、ローカルのストレージへの大量の読み書きに向いた区分で、ディスクへの書き出しがほとんど無いこの用途には合いません。バースト可能な T は、普段は CPU 使用率が低く時々だけ上がる負荷に向き、営業時間中ずっと高い負荷で大きなデータを扱う用途には合いません。出典 https://docs.aws.amazon.com/ec2/latest/instancetypes/mo.html

ネットワークとデータ取り込みの性能

問17ある製造業のグループ企業が、事業ごとに 2⁠5 個の VPC を持ち、本社のデータセンターとも Site-⁠to-⁠Site VPN でつないでいます。今は VPC ピアリングを組み合わせていますが、VPC を足すたびに接続と経路の設定が増えています。VPC は今後も増える見込みです。要件は「すべての VPC と本社を相互に通信させる」「VPC を足すときは 1 か所につなぐだけにする」です。最も適した構成はどれですか。

正解は Transit Gateway を置き、各 VPC と VPN をつなぐ構成です。Transit Gateway は VPC とオンプレミスのネットワークを相互につなぐ中継の拠点で、各 VPC と本社への VPN を 1 か所に集められます。VPC を足すときも Transit Gateway につなぐだけで済みます。すべての組をピアリングでつなぐ構成は、VPC が増えるほど接続の数が急に増えるので、1 か所につなぐ要件に合いません。VPC ごとに VPN を張る構成は、VPC を足すたびに本社側の VPN の設定も増え、VPC どうしの通信も別に用意が要るので合いません。PrivateLink は特定のサービスを別の VPC へ公開する仕組みで、ネットワーク全体を相互につなぐ用途ではないので合いません。出典 https://docs.aws.amazon.com/vpc/latest/tgw/what-⁠is-⁠transit-⁠gateway.html

問18あるメディア企業が、news、shop、member の 3 つのサブドメインで別々のアプリを公開しています。どのアプリも URL のパスは同じ形で、サブドメインごとに別のターゲットグループの EC2 へ届けたいと考えています。要件は「ロードバランサーは 1 台にまとめる」です。最も適した設定はどれですか。

正解は ALB のリスナーにホストの条件のルールを書くことです。ALB のホストの条件は、リクエストのホストヘッダーにあるホスト名で振り分けるもので、ホストベースのルーティングと呼ばれます。1 台のロードバランサーで、複数のサブドメインや異なるドメインを扱えます。サブドメインごとに ALB を置く構成は、1 台にまとめる要件に合いません。パスの条件は URL のパスで振り分けるもので、3 つのアプリのパスが同じ形なので区別できず合いません。NLB はポートとプロトコルで振り分けるロードバランサーで、ホスト名を見て振り分けられず、同じポートに届く 3 つのサブドメインを分けられないので合いません。出典 https://docs.aws.amazon.com/elasticloadbalancing/latest/application/rule-⁠condition-⁠types.html

問19ある家電メーカーが、販売した機器から届く JSON の稼働ログを S3 に集め、Athena で分析しています。届いてから数分以内に分析に使えるようにし、保存は列指向の形式にしてクエリを速くしたいと考えています。要件は「サーバーを持たず、変換のコードも書かない」です。最も適した構成はどれですか。

正解は Data Firehose のレコード形式の変換で Parquet にして S3 へ送る構成です。Amazon Data Firehose は、入ってきた JSON を Apache Parquet や Apache ORC に変換してから S3 に保存できます。Parquet と ORC は列指向の形式で、JSON のような行指向の形式より場所を取らず、クエリが速くなります。変換は Firehose の設定で行うので、サーバーも変換のコードも要りません。EC2 の自作の変換プログラムは、サーバーを持たずコードも書かない要件に合いません。SQS と Lambda で JSON のまま書き込む構成は、列指向にならず、Lambda のコードも要るので合いません。月に 1 回 EMR で変える構成は、数分以内に分析に使える要件に合いません。出典 https://docs.aws.amazon.com/firehose/latest/dev/record-⁠format-⁠conversion.html

問20ある大学が、学内の NFS サーバーにたまる研究データを、毎晩 AWS の EFS へ写しています。今は担当者が作ったスクリプトで写していますが、転送が遅く、途中で欠けたファイルの確認もできていません。研究室のアプリの書き込み先は学内の NFS サーバーのまま変えません。要件は「自作のスクリプトをやめる」「転送のあとにデータの整合性を確かめる」です。最も適した方法はどれですか。

正解は DataSync のタスクを作り、スケジュールで毎晩動かす方法です。DataSync は、NFS などのオンプレミスのストレージと、EFS や S3 などの AWS のストレージの間で、ネットワーク越しにデータを移す仕組みです。暗号化とデータの整合性の確かめを自動で行い、転送の管理と高速な転送のための基盤も DataSync が受け持つので、自作のスクリプトが要りません。rsync のスクリプトを cron で動かす方法は、自作のスクリプトをやめる要件に合いません。S3 File Gateway は S3 にファイルを置く仕組みで、写す先が EFS であることに合いません。EFS を直接マウントして書き込み先を変える構成は、アプリの書き込み先を変えないという前提に合いません。出典 https://docs.aws.amazon.com/datasync/latest/userguide/what-⁠is-⁠datasync.html

問21ある動画配信会社が、視聴ログを S3 に置き、Athena で分析しています。ログは日付の区別なく 1 つのフォルダーに置かれています。ほとんどのクエリは WHERE 句で特定の日付の範囲だけを指定していますが、毎回すべてのデータが読まれて時間がかかっています。要件は「クエリが読むデータの量そのものを減らす」です。最も適した対応はどれですか。

正解は year=、month=、day= の形の日付のパーティションに分けて置くことです。データをパーティションに分けると、WHERE 句でパーティションを指定したクエリはそのパーティションのデータだけを読むので、読むデータの量が減り、クエリが速くなります。Athena は year=2⁠0⁠2⁠1/month=0⁠1/day=2⁠6/ のような Hive の形のパスを扱え、時間で分けるのはよく使われるやり方です。1 つの大きなファイルにまとめても、日付で絞り込めず毎回すべてを読むので合いません。ワークグループはクエリの実行を利用者や用途ごとに分けて管理する仕組みで、1 本のクエリが読む量は減らないので合いません。Express One Zone へ移しても、クエリが読むデータの量そのものは変わらないので合いません。出典 https://docs.aws.amazon.com/athena/latest/ug/partitions.html

問22あるスマホゲームの会社が、プレイのイベントを Kinesis Data Streams に送り、不正検知、ランキング、分析などの 5 つのアプリが同じストリームから読んでいます。アプリを足すたびに、各アプリにデータが届くまでの遅れが大きくなってきました。要件は「シャードの数と送る側の仕組みは変えない」「各アプリがほかのアプリに影響されずに読む」です。最も適した対応はどれですか。

正解は 5 つのアプリを拡張ファンアウトのコンシューマーにすることです。拡張ファンアウトを使うコンシューマーは、シャードあたり毎秒最大 2 MB のスループットを専用で受け取り、ほかのコンシューマーと取り合いません。共有のコンシューマーは、シャードあたり合計 2 MB の読み取りを全員で分け合うため、数が増えるほど遅れが伸びます。拡張ファンアウトでは、届くまでの遅れはコンシューマーが 1 つでも 5 つでも通常は平均 7⁠0 ミリ秒ほどです。シャードを増やす対応は、シャードの数を変えない要件に合いません。Data Firehose は決まった送り先へ届ける仕組みで、5 つの独自のアプリが同じストリームを読む代わりにならないので合いません。SNS と SQS で配る構成は、送る側の仕組みを変えるので合いません。出典 https://docs.aws.amazon.com/streams/latest/dev/enhanced-⁠consumers.html

問23ある建築ソフトの会社が、設計者がブラウザから操作する 3D の仮想ワークステーションを提供しています。利用者の多くはある大都市に集まっていますが、そこは使っているリージョンから遠く、操作の反応が遅いと苦情が出ています。画面は操作のたびに作られるので、キャッシュはできません。要件は「計算そのものを利用者の近くで実行する」です。最も適した構成はどれですか。

正解はその大都市の近くの Local Zone に EC2 を置くことです。Local Zones は、計算、ストレージ、データベースなどの一部の AWS の資源を、人口や産業の集まる場所の近くに置く仕組みで、利用者に低い遅延でアプリを使ってもらえます。リアルタイムのゲームやライブ配信、仮想ワークステーションのような遅延に敏感な用途が挙げられています。CloudFront でのキャッシュは、操作のたびに作られる画面には効かないので合いません。Global Accelerator は AWS のネットワークを通ってリージョンへ届ける仕組みで、計算はリージョンで行われたままなので合いません。インスタンスを大きくしても、利用者との距離による遅れは縮まらないので合いません。出典 https://docs.aws.amazon.com/local-⁠zones/latest/ug/what-⁠is-⁠aws-⁠local-⁠zones.html

問24ある保険会社が、各支店から毎日 S3 に届く大量の CSV を、Athena で速く分析できるように Parquet に変えたいと考えています。CSV の列の構成は支店ごとに少しずつ違うため、スキーマを自動で調べてカタログに登録したいと考えています。要件は「サーバーやクラスターを管理しない」です。最も適した構成はどれですか。

正解は Glue のクローラーでカタログに登録し、ETL ジョブで変換する構成です。AWS Glue はサーバーレスのデータ統合のサービスで、管理する基盤がありません。クローラーがスキーマを自動で推定して Data Catalog に登録し、ETL ジョブは Apache Spark を使うサーバーレスの実行環境で変換を行います。カタログに登録した表は Athena からすぐに問い合わせられます。EMR のクラスターを常に動かす構成は、クラスターを管理しない要件に合いません。DataSync で写す構成は、データを移すだけで Parquet に変えないので合いません。EC2 のスクリプトを cron で動かす構成は、サーバーを管理しない要件に合いません。出典 https://docs.aws.amazon.com/glue/latest/dg/what-⁠is-⁠glue.html

ほかの分野

  • セキュアな設計

    IAM とアカウントの管理、ネットワークとワークロードの防御、データの保護と暗号化

    30問解く
  • 弾力性のある設計

    疎結合とスケール、高可用性と災害対策

    26問解く
  • コスト最適化の設計

    ストレージとネットワークのコスト、コンピューティングとデータベースのコスト

    20問解く

AWS ソリューションアーキテクト アソシエイトの頁に、4分野の入口と試験の案内があります。

続きはゆめさくで

試験の知識を仕事につなげる一歩を、ここにまとめています。