AWS ソリューションアーキテクト アソシエイト コスト最適化の設計 問題

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

コスト最適化の設計の問題を2⁠0問、小分野ごとにまとめました。選ぶと、その場で正誤と解説が出ます。

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

この分野の小分野

  • ストレージとネットワークのコスト(10問)
  • コンピューティングとデータベースのコスト(10問)

コスト最適化の設計の問題

20 問

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

  1. ストレージとネットワークのコスト

    問 1ある研究機関が、数百 TB のゲノムのデータセットを S3 バケットに置き、共同研究先の各組織へ配っています。共同研究先はすべて自分の AWS アカウントを持ち、署名付きのリクエストを送れます。ダウンロードが増えて、研究機関が払うリクエストとデータ転送の料金が膨らんでいます。要件は「取得にかかる料金を取得する側の組織に負担してもらうこと」と「新しいサーバーを立てないこと」です。最も適切な構成はどれですか。

  2. 問 2ある設備保守の企業が、数万台のセンサーの計測値を 1 件ごとに数 KB の JSON のオブジェクトとして S3 に書いており、オブジェクトの数は数十億件になります。書いてから 90 日を過ぎた計測値はほとんど読まれませんが、5 年間の保管が必要で、取り出すときは半日以上待てます。保管にかかる費用を、オブジェクトごとに付く管理用の容量まで含めて最も低くしたいと考えています。最も適切な方法はどれですか。

  3. 問 3ある病院が、既存のバックアップソフトウェアで物理のテープライブラリへバックアップを取り、テープを外部の倉庫へ運んで保管しています。テープ媒体の購入と運搬の費用を減らしたいと考えています。要件は「バックアップソフトウェアとテープを前提にした運用の手順は変えないこと」と「長期の保管を低い費用で行うこと」です。最も適切な構成はどれですか。

  4. 問 4ある建設会社が、終わった案件の EC2 の EBS ボリュームについて、月ごとに EBS スナップショットを取り、監査のため 3 年間保管しています。保管したスナップショットから復元するのは年に 1 回あるかどうかで、復元に 1 日以上かかっても構いません。保管の形は EBS スナップショットのまま変えず、3 年間の保管の義務も守ったうえで、スナップショットの保管費用を下げたいと考えています。最も適切な方法はどれですか。

  5. 問 5ある出版社が、1 つの S3 バケットに部署ごとのプレフィックスを分けて原稿や素材を置いています。S3 Standard から S3 Standard-IA へ移すライフサイクルのルールを部署ごとに書く方針は決まっていますが、各部署のデータが置いてから何日で読まれなくなるかが分かりません。ルールの日数を、推測ではなく実際のアクセスの傾向から決めたいと考えています。最も適切な方法はどれですか。

  6. 問 6開発用の VPC を本番と同じ形で組んだ会社があり、3 つの AZ のプライベートサブネットそれぞれに NAT ゲートウェイを 1 台ずつ置いています。開発用の EC2 が外へ出る通信は、パッケージの取得くらいで量はわずかです。開発環境では、AZ の障害のあいだ外へ出られなくなっても構いません。EC2 はプライベートサブネットに置いたまま、運用の手間を増やさずに NAT の時間あたりの料金を下げたいと考えています。最も適切な構成はどれですか。

  7. 問 7ある小売企業が、同じリージョンと同じアカウントに、業務アプリの VPC と分析用の VPC の 2 つだけを持っています。CIDR は重なっていません。業務アプリの VPC から分析用の VPC へ、毎日数 TB のデータを送っており、送る側と受ける側の EC2 は同じ AZ に置いています。今後 VPC を増やす予定はありません。VPC どうしの通信にかかるネットワークの料金を最も低くしたいと考えています。最も適切な構成はどれですか。

  8. 問 8ある不動産会社が、社員 5 名の小さな営業所から、VPC の中の社内システムへときどきアクセスさせたいと考えています。通信の量は少なく、遅延が多少ばらついても業務に支障はありません。通信は暗号化する必要があり、数日のうちに使い始めたいという要件です。月々の固定の費用を最も低く抑えたいと考えています。最も適切な接続はどれですか。

  9. 問 9ある物流会社の財務チームが、AWS の利用料を、サービスや使用タイプや操作ごとの細かい明細の行として毎日 S3 バケットに受け取り、Athena で自社の基準に合わせて集計したいと考えています。グラフで眺めるだけの画面ではなく、明細のデータそのものが必要です。この要件に合うものはどれですか。

  10. 問 10ある決済代行の会社が、API Gateway の REST API と Lambda と DynamoDB で作った API を、複数の取引先企業に提供しています。ある取引先のバッチが短時間に大量のリクエストを送るようになり、Lambda と DynamoDB の料金が膨らんでいます。要件は「取引先ごとに 1 秒あたりのリクエスト数と月あたりのリクエスト数の上限を設けること」と「ほかの取引先には影響を出さないこと」と「バックエンドのコードは変えないこと」です。最も適切な方法はどれですか。

  11. コンピューティングとデータベースのコスト

    問 11ある製薬会社が、EC2 で分析アプリを動かしています。アプリは起動のたびに大きなデータをメモリに読み込むため、使える状態になるまで 40 分ほどかかります。使うのは平日の数時間だけで、それ以外は何もしていません。使わない時間のインスタンスの料金を払わずに、使うときはメモリの内容を保ったまま数分で作業を再開したいという要件です。インスタンスはオンデマンドで、ルートボリュームは EBS、メモリの量も休止の前提条件の範囲に収まっています。最も適切な方法はどれですか。

  12. 問 12ある旅行会社が、検索結果をメモリに大量に持つ社内アプリを、メモリの量を確保するためにコンピューティング最適化の大きなインスタンスで動かしています。監視の結果、CPU の使用率は常に 10 パーセント前後ですが、メモリはほぼ使い切っています。必要なメモリの量は保ったまま、インスタンスの費用を下げたいと考えています。最も適切な見直しはどれですか。

  13. 問 13ある人材サービスの会社が、社内向けの小さなマイクロサービスを 8 つ動かしており、サービスごとに専用の Application Load Balancer を 1 台ずつ置いています。どのサービスも通信の量は少なく、同じドメインの HTTPS で、URL のパスだけが違います。外部への公開はロードバランサー経由だけに限るという方針です。各サービスの中身は変えずに、ロードバランサーの時間あたりの料金を下げたいと考えています。最も適切な構成はどれですか。

  14. 問 14ある保険会社が、本番と同じ設定を写して、開発とステージングの Amazon RDS for MySQL も Multi-AZ の DB インスタンスの配置で動かしています。開発とステージングでは、AZ の障害で数十分止まっても、バックアップから戻せれば構いません。データベースのエンジンとインスタンスクラスは本番と同じままにしたうえで、開発とステージングの DB の費用を下げたいと考えています。最も適切な方法はどれですか。

  15. 問 15あるソフトウェア会社が、開発者ごとに 20 個の試験用の Aurora PostgreSQL のデータベースを持っています。どれも 1 日に数時間ほど不定期に使われるだけで、夜間や会議の間など長く誰もつないでいない時間があります。要件は「誰もつないでいない間は DB のインスタンスの容量の料金をかけないこと」と「手で止めたり起動したりしないこと」です。使い始めの最初の接続が数秒ほど待たされるのは構いません。最も適切な構成はどれですか。

  16. 問 16ある電力会社では、検針の結果を受け付けるテーブルがオンデマンドのキャパシティモードで動いています。1 年分の記録を見ると、トラフィックは日中に高く夜に低い決まった波を毎日くり返し、ゆるやかに伸びているだけで、先の量も十分に見積もれます。アプリの改修はせずに、このテーブルの費用を下げたいと考えています。DynamoDB の使い方として最も適切な方法はどれですか。

  17. 問 17あるゲーム会社が、ログインのセッションの情報を DynamoDB のテーブルに置いています。セッションは 24 時間で無効になり、その後は要りません。今は夜間に EC2 のバッチでテーブルを走査して期限切れの項目を消しており、読み書きの容量とバッチ用のサーバーの両方に費用がかかっています。期限切れの項目が消えるまで数日かかっても構わず、アプリは期限切れの項目を読んでも無視できます。削除にかかる費用をなくしたいと考えています。最も適切な方法はどれですか。

  18. 問 18あるマーケティング会社が、広告の配信ログを gzip で圧縮した CSV として S3 に貯め、Athena で毎日集計しています。ログには数十の列がありますが、日々のクエリが読むのはそのうち数列だけです。Athena はプロビジョンドの容量を使わず、クエリごとの料金で使っています。集計の結果を変えずに、Athena の料金を下げたいと考えています。最も適切な方法はどれですか。

  19. 問 19ある通販会社が、EC2 の上で Oracle Database を動かしており、データベースのライセンスの費用が大きな負担になっています。要件は「Oracle のライセンスが要らない、AWS が管理するリレーショナルデータベースへ移すこと」と「移行のあいだもデータを同期し続け、切り替えの停止を短くすること」です。アプリの SQL の手直しは許されています。最も適切な方法はどれですか。

  20. 問 20ある地方銀行が、コンテナにまとめた集計の処理を 1 日に 1 回動かしています。1 回の処理にはおよそ 2 時間かかります。今は常時起動の EC2 の上で cron から動かしており、処理のない 22 時間もインスタンスの料金を払っています。要件は「処理が動いている間だけ計算の料金を払うこと」と「サーバーの管理をしないこと」です。最も適切な構成はどれですか。

20 問中 0 問に答えました

解説の一覧

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

ストレージとネットワークのコスト

問1ある研究機関が、数百 TB のゲノムのデータセットを S3 バケットに置き、共同研究先の各組織へ配っています。共同研究先はすべて自分の AWS アカウントを持ち、署名付きのリクエストを送れます。ダウンロードが増えて、研究機関が払うリクエストとデータ転送の料金が膨らんでいます。要件は「取得にかかる料金を取得する側の組織に負担してもらうこと」と「新しいサーバーを立てないこと」です。最も適切な構成はどれですか。

正解は Requester Pays を有効にし、認証付きのリクエストで取得してもらう構成です。S3 では通常、保管とデータ転送の料金はバケットの所有者が払いますが、Requester Pays を有効にしたバケットでは、リクエストとダウンロードの料金を取得する側のアカウントが払います。匿名のアクセスはできなくなり、すべてのリクエストに認証が要りますが、共同研究先はアカウントを持つので問題ありません。CloudFront 経由にしても、配信の料金を払うのはディストリビューションを持つ研究機関なので要件に合いません。S3 Glacier Deep Archive は保管の料金を下げますが、復元とデータ転送の料金は所有者側に残るので要件に合いません。S3 Transfer Acceleration は転送を速くする機能で、その料金はバケットの所有者にかかるので要件に合いません。出典 https://docs.aws.amazon.com/AmazonS3/latest/userguide/RequesterPaysBuckets.html

問2ある設備保守の企業が、数万台のセンサーの計測値を 1 件ごとに数 KB の JSON のオブジェクトとして S3 に書いており、オブジェクトの数は数十億件になります。書いてから 9⁠0 日を過ぎた計測値はほとんど読まれませんが、5 年間の保管が必要で、取り出すときは半日以上待てます。保管にかかる費用を、オブジェクトごとに付く管理用の容量まで含めて最も低くしたいと考えています。最も適切な方法はどれですか。

正解は計測値を日ごとに大きなファイルへまとめてからアーカイブへ移す方法です。S3 Glacier Flexible Retrieval と S3 Glacier Deep Archive へ移したオブジェクトには、1 件ごとに名前と索引のための管理用の容量が足され、その分も課金されます。また移すときは 1 件ごとに移行のリクエストの料金がかかるため、文書は小さいオブジェクトを少数の大きなオブジェクトにまとめることを勧めています。小さいまま S3 Glacier Deep Archive へ移す方法は、数十億件分の管理用の容量と移行のリクエストの料金がかさむうえ、1⁠2⁠8 KB 未満のオブジェクトは既定では移行されないので要件に合いません。S3 Standard-⁠IA は 1⁠2⁠8 KB 未満のオブジェクトも 1⁠2⁠8 KB として課金するので要件に合いません。S3 Intelligent-⁠Tiering は 1⁠2⁠8 KB 未満のオブジェクトを監視せず高頻度の階層に置いたままにするので要件に合いません。出典 https://docs.aws.amazon.com/AmazonS3/latest/userguide/lifecycle-⁠transition-⁠general-⁠considerations.html

問3ある病院が、既存のバックアップソフトウェアで物理のテープライブラリへバックアップを取り、テープを外部の倉庫へ運んで保管しています。テープ媒体の購入と運搬の費用を減らしたいと考えています。要件は「バックアップソフトウェアとテープを前提にした運用の手順は変えないこと」と「長期の保管を低い費用で行うこと」です。最も適切な構成はどれですか。

正解は Tape Gateway を置き、仮想テープを S3 Glacier Deep Archive にアーカイブする構成です。Tape Gateway はクラウドを裏に持つ仮想のテープの仕組みを提供し、既存のバックアップソフトウェアからはテープライブラリとして見えるので、テープを前提にした手順を変えずに使えます。アーカイブしたテープは S3 Glacier Flexible Retrieval か S3 Glacier Deep Archive に置かれ、長期の保管を低い費用で行えます。S3 File Gateway はファイル共有として見えるので、バックアップの宛先をテープから替える必要があり要件に合いません。DataSync で Amazon EFS へ複製する方法は、テープの手順が残るうえ、長期のアーカイブとしては保管の費用が高いので要件に合いません。Snowball Edge を毎月取り寄せる方法は、物理の運搬が残り、S3 Standard は長期の保管には高いので要件に合いません。出典 https://docs.aws.amazon.com/storagegateway/latest/tgw/WhatIsStorageGateway.html

問4ある建設会社が、終わった案件の EC2 の EBS ボリュームについて、月ごとに EBS スナップショットを取り、監査のため 3 年間保管しています。保管したスナップショットから復元するのは年に 1 回あるかどうかで、復元に 1 日以上かかっても構いません。保管の形は EBS スナップショットのまま変えず、3 年間の保管の義務も守ったうえで、スナップショットの保管費用を下げたいと考えています。最も適切な方法はどれですか。

正解は月ごとのスナップショットを EBS Snapshots Archive の階層へ移す方法です。EBS Snapshots Archive は、9⁠0 日以上保管し、めったに使わないスナップショットの保管費用を大きく下げるための階層です。移すと増分のスナップショットは完全なスナップショットに変わりますが、使うときは標準の階層へ戻してから通常のスナップショットと同じように扱えます。復元に時間がかかっても構わないという条件にも合います。古いものから削除する方法は、3 年間の保管の義務を守れないので要件に合いません。高速スナップショット復元は復元を速くする機能で、費用は下がらず増えるので要件に合いません。sc1 のボリュームとして残す方法は、保管の形がスナップショットでなくなるうえ、ボリュームの容量の全体に課金が続くので要件に合いません。出典 https://docs.aws.amazon.com/ebs/latest/userguide/snapshot-⁠archive.html

問5ある出版社が、1 つの S3 バケットに部署ごとのプレフィックスを分けて原稿や素材を置いています。S3 Standard から S3 Standard-⁠IA へ移すライフサイクルのルールを部署ごとに書く方針は決まっていますが、各部署のデータが置いてから何日で読まれなくなるかが分かりません。ルールの日数を、推測ではなく実際のアクセスの傾向から決めたいと考えています。最も適切な方法はどれですか。

正解は部署のプレフィックスごとに S3 Storage Class Analysis のフィルターを作る方法です。Storage Class Analysis は、バケットのデータへのアクセスの傾向を観察し、S3 Standard から S3 Standard-⁠IA へいつ移すとよいかを判断する材料を出します。フィルターはプレフィックスやタグで分けて作れ、フィルターごとに別の分析が得られるので、部署ごとにルールの日数を決められます。Cost Explorer は費用の推移を見るもので、オブジェクトがいつ読まれなくなるかは分からないので要件に合いません。一律で S3 Glacier Instant Retrieval へ移す方法は、傾向を調べる前に移してしまい、部署ごとのルールの日数を決める材料にならないので要件に合いません。AWS Budgets は費用が予算を超えたときに知らせるもので、アクセスの傾向は分からないので要件に合いません。出典 https://docs.aws.amazon.com/AmazonS3/latest/userguide/analytics-⁠storage-⁠class.html

問6開発用の VPC を本番と同じ形で組んだ会社があり、3 つの AZ のプライベートサブネットそれぞれに NAT ゲートウェイを 1 台ずつ置いています。開発用の EC2 が外へ出る通信は、パッケージの取得くらいで量はわずかです。開発環境では、AZ の障害のあいだ外へ出られなくなっても構いません。EC2 はプライベートサブネットに置いたまま、運用の手間を増やさずに NAT の時間あたりの料金を下げたいと考えています。最も適切な構成はどれですか。

正解は NAT ゲートウェイを 1 つの AZ にだけ残し、全 AZ のルートを向ける構成です。NAT ゲートウェイは、使える状態にある時間ごとと、処理したデータの量に課金されます。3 台を 1 台にすれば時間あたりの料金は 3 分の 1 になります。ほかの AZ からの通信は AZ をまたぐデータ転送の料金がかかりますが、通信の量がわずかなので影響は小さく、AZ の障害で外へ出られなくなることも開発環境では許されています。NAT インスタンスに替える方法は、EC2 のパッチ当てや可用性の面倒を自分で見ることになり、運用の手間が増えるので要件に合いません。パブリックサブネットへ移す方法は、EC2 をプライベートサブネットに置くという条件に反するので要件に合いません。S3 のゲートウェイエンドポイントは S3 宛ての通信だけに効き、NAT ゲートウェイの台数は減らないので要件に合いません。出典 https://docs.aws.amazon.com/vpc/latest/userguide/nat-⁠gateway-⁠pricing.html

問7ある小売企業が、同じリージョンと同じアカウントに、業務アプリの VPC と分析用の VPC の 2 つだけを持っています。CIDR は重なっていません。業務アプリの VPC から分析用の VPC へ、毎日数 TB のデータを送っており、送る側と受ける側の EC2 は同じ AZ に置いています。今後 VPC を増やす予定はありません。VPC どうしの通信にかかるネットワークの料金を最も低くしたいと考えています。最も適切な構成はどれですか。

正解は 2 つの VPC のあいだに VPC ピアリング接続を作る構成です。VPC ピアリング接続は作るだけでは料金がかからず、同じ AZ の中に収まるデータ転送は無料です。AZ やリージョンをまたぐ転送には料金がかかりますが、この会社は送る側と受ける側を同じ AZ に置いています。VPC が 2 つだけで増やす予定もないので、多数の VPC をつなぐ仕組みは要りません。Transit Gateway は、アタッチメントごとの時間の料金に加え、送ったデータの量に応じた処理の料金がかかるので、毎日数 TB の通信では要件に合いません。Site-⁠to-⁠Site VPN は接続ごとの時間の料金がかかり、VPC どうしを直接つなぐ用途でもないので要件に合いません。インターネット経由にすると、パブリック IP を使った通信のデータ転送の料金がかかり、外へさらす経路も増えるので要件に合いません。出典 https://docs.aws.amazon.com/vpc/latest/peering/vpc-⁠peering-⁠pricing.html

問8ある不動産会社が、社員 5 名の小さな営業所から、VPC の中の社内システムへときどきアクセスさせたいと考えています。通信の量は少なく、遅延が多少ばらついても業務に支障はありません。通信は暗号化する必要があり、数日のうちに使い始めたいという要件です。月々の固定の費用を最も低く抑えたいと考えています。最も適切な接続はどれですか。

正解は Site-⁠to-⁠Site VPN を作り、営業所のルーターと IPsec のトンネルでつなぐ構成です。Site-⁠to-⁠Site VPN は、VPC とオンプレミスのネットワークのあいだを、インターネット越しの IPsec で暗号化してつなぎます。1 つの接続には 2 本のトンネルが含まれ、専用の回線を引く工事が要らないので、すぐに使い始められ、量の少ない通信には固定の費用も抑えられます。Direct Connect の専用接続は、回線の手配に時間がかかり、使う量が少なくても接続の時間ごとの料金がかかるので要件に合いません。2 本引く方法は、さらに費用が増えるので要件に合いません。HTTP で直接使う方法は、通信が暗号化されず、社内システムを外へさらすことにもなるので要件に合いません。出典 https://docs.aws.amazon.com/vpn/latest/s2svpn/VPC_VPN.html

問9ある物流会社の財務チームが、AWS の利用料を、サービスや使用タイプや操作ごとの細かい明細の行として毎日 S3 バケットに受け取り、Athena で自社の基準に合わせて集計したいと考えています。グラフで眺めるだけの画面ではなく、明細のデータそのものが必要です。この要件に合うものはどれですか。

正解は AWS Cost and Usage Report を作り、明細のファイルを S3 へ届けさせる方法です。Cost and Usage Report は、AWS の製品と使用タイプと操作の組み合わせごとに明細の行を持つ報告を作り、指定した S3 バケットへ少なくとも 1 日 1 回更新して届けます。Athena や Redshift で集計しやすい形で出す設定もできるので、自社の基準で集計したいという要件に合います。AWS Budgets は予算を超えたときなどに知らせるもので、明細のデータは届かないので要件に合いません。AWS Cost Explorer は費用の推移をグラフで見るための画面で、明細の行を S3 に受け取る用途ではないので要件に合いません。AWS Compute Optimizer はリソースのサイズを見直す推奨を出すもので、請求の明細は扱わないので要件に合いません。出典 https://docs.aws.amazon.com/cur/latest/userguide/what-⁠is-⁠cur.html

問10ある決済代行の会社が、API Gateway の REST API と Lambda と DynamoDB で作った API を、複数の取引先企業に提供しています。ある取引先のバッチが短時間に大量のリクエストを送るようになり、Lambda と DynamoDB の料金が膨らんでいます。要件は「取引先ごとに 1 秒あたりのリクエスト数と月あたりのリクエスト数の上限を設けること」と「ほかの取引先には影響を出さないこと」と「バックエンドのコードは変えないこと」です。最も適切な方法はどれですか。

正解は使用量プランを作り、取引先ごとの API キーにスロットリングとクォータを設ける方法です。API Gateway の使用量プランは、API キーで呼び出し元を見分け、キーごとにリクエストの速さの上限と一定期間の回数の上限を設けられます。上限を超えた分は API Gateway で止まるので、Lambda と DynamoDB までリクエストが届かず、料金の膨らみを抑えられます。バックエンドのコードも変えずに済みます。Lambda の予約済み同時実行数を絞る方法は、取引先を区別せずに全体を絞るので、ほかの取引先にも影響が出て要件に合いません。DynamoDB をオンデマンドに替える方法は、急なリクエストをそのまま受けるので、料金はむしろ増えて要件に合いません。CloudFront で応答をキャッシュする方法は、取引先ごとの上限を設けられず、決済の応答を長く使い回すこともできないので要件に合いません。出典 https://docs.aws.amazon.com/apigateway/latest/developerguide/api-⁠gateway-⁠api-⁠usage-⁠plans.html

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

問11ある製薬会社が、EC2 で分析アプリを動かしています。アプリは起動のたびに大きなデータをメモリに読み込むため、使える状態になるまで 4⁠0 分ほどかかります。使うのは平日の数時間だけで、それ以外は何もしていません。使わない時間のインスタンスの料金を払わずに、使うときはメモリの内容を保ったまま数分で作業を再開したいという要件です。インスタンスはオンデマンドで、ルートボリュームは EBS、メモリの量も休止の前提条件の範囲に収まっています。最も適切な方法はどれですか。

正解は休止 (hibernate) させ、使うときに起動してメモリの内容から再開する方法です。休止すると、インスタンスのメモリの内容が EBS のルートボリュームに保存され、起動するときにメモリの内容が読み戻されます。休止して停止している間はインスタンスの使用料はかからず、かかるのはメモリの内容の分も含めた EBS の保管の料金だけです。起動に時間のかかるアプリを温めたまま止めておく用途に向いています。停止させる方法は、料金は止まりますが、起動のたびに 4⁠0 分の読み込みが要るので、数分で再開する要件に合いません。常時起動のまま Reserved Instance を買う方法は、使わない時間のインスタンスの料金を払い続けるので要件に合いません。Spot Instance は中断されるとメモリの内容が失われ、読み込み直しが要るので要件に合いません。出典 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Hibernate.html

問12ある旅行会社が、検索結果をメモリに大量に持つ社内アプリを、メモリの量を確保するためにコンピューティング最適化の大きなインスタンスで動かしています。監視の結果、CPU の使用率は常に 1⁠0 パーセント前後ですが、メモリはほぼ使い切っています。必要なメモリの量は保ったまま、インスタンスの費用を下げたいと考えています。最も適切な見直しはどれですか。

正解はメモリ最適化 (R 系) の、必要なメモリを満たすより小さいサイズに替える方法です。メモリ最適化のインスタンスは、大きなデータをメモリの上で処理する用途に向けて作られ、vCPU の数に対してメモリの量が多い構成です。このアプリは CPU をほとんど使わずメモリだけを使い切っているので、vCPU を減らしてメモリを保てるメモリ最適化の小さいサイズにすれば、使わない CPU に払う分を減らせます。コンピューティング最適化をさらに大きくする方法は、使わない CPU が増えて費用が上がるので要件に合いません。ストレージ最適化は高速なローカルストレージに向けたもので、この使い方の不釣り合いを直さないので要件に合いません。コンピューティング最適化のまま世代を替える方法は、CPU とメモリの比は変わらず、大きいサイズのままになるので要件に合いません。出典 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/memory-⁠optimized-⁠instances.html

問13ある人材サービスの会社が、社内向けの小さなマイクロサービスを 8 つ動かしており、サービスごとに専用の Application Load Balancer を 1 台ずつ置いています。どのサービスも通信の量は少なく、同じドメインの HTTPS で、URL のパスだけが違います。外部への公開はロードバランサー経由だけに限るという方針です。各サービスの中身は変えずに、ロードバランサーの時間あたりの料金を下げたいと考えています。最も適切な構成はどれですか。

正解は Application Load Balancer を 1 台にまとめ、パスのルールで各ターゲットへ振り分ける構成です。Application Load Balancer は動いている時間ごとに課金され、さらに使った処理の量に応じた料金がかかります。8 台を 1 台にまとめれば、時間あたりの料金は 8 台分から 1 台分になります。リスナーのルールでは URL のパスのパターンを条件にでき、パスごとに別のターゲットグループへ振り分けられるので、各サービスの中身は変えずに済みます。Network Load Balancer に替えても、サービスごとに置けば台数分の時間の料金は残り、パスで振り分けることもできないので要件に合いません。Gateway Load Balancer は仮想のアプライアンスへ通信を流すためのもので、この用途にも料金の削減にも合いません。Elastic IP で直接公開する方法は、ロードバランサー経由だけで公開するという方針に反するので要件に合いません。出典 https://aws.amazon.com/elasticloadbalancing/pricing/

問14ある保険会社が、本番と同じ設定を写して、開発とステージングの Amazon RDS for MySQL も Multi-⁠AZ の DB インスタンスの配置で動かしています。開発とステージングでは、AZ の障害で数十分止まっても、バックアップから戻せれば構いません。データベースのエンジンとインスタンスクラスは本番と同じままにしたうえで、開発とステージングの DB の費用を下げたいと考えています。最も適切な方法はどれですか。

正解は開発とステージングの DB を Single-⁠AZ の配置に変える方法です。Multi-⁠AZ の DB インスタンスの配置では、RDS が別の AZ に同期のスタンバイを自動で用意して保ちます。スタンバイは読み取りに使えず、障害に備えるためだけに動いているので、AZ の障害で止まってもよい環境では払う理由が薄い部分です。Single-⁠AZ にすればスタンバイの分がなくなり、エンジンとインスタンスクラスはそのままで費用を下げられます。リードレプリカを足す方法は、インスタンスが増えて費用が上がるので要件に合いません。Multi-⁠AZ の DB クラスターは読み取りもできるスタンバイを 2 台持つ構成で、費用は下がらないので要件に合いません。Aurora のグローバルデータベースはリージョンをまたぐ構成で、エンジンも替わり、費用も増えるので要件に合いません。出典 https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.MultiAZSingleStandby.html

問15あるソフトウェア会社が、開発者ごとに 2⁠0 個の試験用の Aurora PostgreSQL のデータベースを持っています。どれも 1 日に数時間ほど不定期に使われるだけで、夜間や会議の間など長く誰もつないでいない時間があります。要件は「誰もつないでいない間は DB のインスタンスの容量の料金をかけないこと」と「手で止めたり起動したりしないこと」です。使い始めの最初の接続が数秒ほど待たされるのは構いません。最も適切な構成はどれですか。

正解は Aurora Serverless v2 にし、最小容量を 0 ACU にして自動で一時停止させる構成です。DB クラスターの最小容量を 0 ACU にすると、指定した時間のあいだ利用者の接続がなければ容量を 0 まで下げて自動で一時停止し、接続の要求が来ると自動で再開します。一時停止している間はインスタンスの容量の料金がかからないので、使われない時間が長い試験用の DB に向いています。再開には少し時間がかかりますが、最初の接続が待たされてよいという条件に合います。最も小さいプロビジョンドのインスタンスは、使っていない時間も起動している限り料金がかかるので要件に合いません。Reserved Instance は常に動かす前提の割引で、使わない時間の料金をなくせないので要件に合いません。Multi-⁠AZ の配置はスタンバイの分が増え、使わない時間も料金がかかるので要件に合いません。出典 https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/aurora-⁠serverless-⁠v2-⁠auto-⁠pause.html

問16ある電力会社では、検針の結果を受け付けるテーブルがオンデマンドのキャパシティモードで動いています。1 年分の記録を見ると、トラフィックは日中に高く夜に低い決まった波を毎日くり返し、ゆるやかに伸びているだけで、先の量も十分に見積もれます。アプリの改修はせずに、このテーブルの費用を下げたいと考えています。DynamoDB の使い方として最も適切な方法はどれですか。

正解はプロビジョンドのキャパシティモードに替え、Auto Scaling で日々の波に合わせる方法です。プロビジョンドのモードは、1 秒あたりの読み書きの量を先に決めて、その容量に時間ごとに課金されます。文書は、量が安定していて伸び方が予測でき、必要な容量を確かに見積もれる場合に向くとしています。Auto Scaling を使えば、実際の量に合わせて容量が自動で上下するので、夜間の使わない容量に払い続けることも避けられます。グローバルテーブルで別のリージョンへ複製する方法は、複製の分の費用が増えるので要件に合いません。DAX は読み取りをキャッシュする仕組みで、書き込みは減らず、DAX のクラスターの費用も増えるので要件に合いません。Aurora へ移す方法は、アプリを SQL に合わせて作り直す必要があり、改修をしない条件に反するので要件に合いません。出典 https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/capacity-⁠mode.html

問17あるゲーム会社が、ログインのセッションの情報を DynamoDB のテーブルに置いています。セッションは 2⁠4 時間で無効になり、その後は要りません。今は夜間に EC2 のバッチでテーブルを走査して期限切れの項目を消しており、読み書きの容量とバッチ用のサーバーの両方に費用がかかっています。期限切れの項目が消えるまで数日かかっても構わず、アプリは期限切れの項目を読んでも無視できます。削除にかかる費用をなくしたいと考えています。最も適切な方法はどれですか。

正解は項目に有効期限の属性を持たせ、DynamoDB の TTL で期限切れを自動で削除させる方法です。TTL は項目ごとに有効期限の時刻を持たせる仕組みで、期限を過ぎた項目は、たいてい数日のうちに DynamoDB が自動で削除します。この削除は書き込みの容量を使わないので、削除のための費用がかかりません。バッチ用のサーバーも要らなくなります。Lambda に移す方法は、サーバーは要らなくなりますが、走査と削除で読み書きの容量を使い続けるので要件に合いません。S3 へ書き出してから消す方法は、書き出しの費用が増え、削除の容量も使うので要件に合いません。ElastiCache へ移す方法は、アプリの改修とキャッシュのノードの費用が要るうえ、夜間のバッチも残るので要件に合いません。出典 https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/TTL.html

問18あるマーケティング会社が、広告の配信ログを gzip で圧縮した CSV として S3 に貯め、Athena で毎日集計しています。ログには数十の列がありますが、日々のクエリが読むのはそのうち数列だけです。Athena はプロビジョンドの容量を使わず、クエリごとの料金で使っています。集計の結果を変えずに、Athena の料金を下げたいと考えています。最も適切な方法はどれですか。

正解は CTAS のクエリでログを Parquet の列指向の形式に変換し、変換後を問い合わせる方法です。Athena のクエリの料金は、クエリが読み取ったデータの量で決まります。CSV は 1 行ずつ全部の列を読むので、数列しか使わなくてもファイル全体を読みます。Parquet のような列指向の形式なら、クエリに要る列だけを読めるので、読み取る量が減って料金が下がります。変換は Athena の CTAS で行え、結果も変わりません。S3 Standard-⁠IA に替える方法は、読み取る量は変わらず、取り出しの料金も加わるので要件に合いません。EC2 で集計する方法は、サーバーの費用と手間が増え、Athena の料金を下げる話にもならないので要件に合いません。1 つの大きなファイルにまとめる方法は、CSV のままでは読む列を絞れず、読み取る量が変わらないので要件に合いません。出典 https://aws.amazon.com/athena/pricing/

問19ある通販会社が、EC2 の上で Oracle Database を動かしており、データベースのライセンスの費用が大きな負担になっています。要件は「Oracle のライセンスが要らない、AWS が管理するリレーショナルデータベースへ移すこと」と「移行のあいだもデータを同期し続け、切り替えの停止を短くすること」です。アプリの SQL の手直しは許されています。最も適切な方法はどれですか。

正解は AWS SCT でスキーマを Aurora PostgreSQL 向けに変換し、AWS DMS でデータを移す方法です。AWS SCT は、あるデータベースのエンジンのスキーマを別のエンジン向けに変換する道具で、Oracle から Aurora PostgreSQL への変換にも対応しています。自動で変換できない部分は、手で直すための案内を出します。データは AWS DMS で移し、移行のあいだも変更を同期し続けられるので、切り替えの停止を短くできます。Aurora PostgreSQL には Oracle のライセンスが要りません。RDS for Oracle は管理は楽になりますが、Oracle のライセンスの費用は料金に含まれて残るので要件に合いません。EC2 のまま Reserved Instance を買う方法は、ライセンスの費用が残り、管理された DB にもならないので要件に合いません。Athena は分析用のクエリのサービスで、通販の業務の読み書きを担うリレーショナルデータベースの代わりにならないので要件に合いません。出典 https://docs.aws.amazon.com/SchemaConversionTool/latest/userguide/CHAP_Welcome.html

問20ある地方銀行が、コンテナにまとめた集計の処理を 1 日に 1 回動かしています。1 回の処理にはおよそ 2 時間かかります。今は常時起動の EC2 の上で cron から動かしており、処理のない 2⁠2 時間もインスタンスの料金を払っています。要件は「処理が動いている間だけ計算の料金を払うこと」と「サーバーの管理をしないこと」です。最も適切な構成はどれですか。

正解は EventBridge Scheduler で Fargate のタスクを毎日起動し、終われば止まるようにする構成です。EventBridge Scheduler は、cron や rate の式で決めた時刻に Amazon ECS のタスクを起動できます。Fargate で動かせば、サーバーを管理せずに、タスクが動いている間の計算の資源だけに料金を払うことになります。コンテナにまとめた処理をそのまま動かせる点も合います。Lambda は 1 回の呼び出しの実行時間の上限が通常 1⁠5 分で、2 時間の処理は動かせないので要件に合いません。Reserved Instance は単価を下げますが、処理のない 2⁠2 時間も料金を払い続け、サーバーの管理も残るので要件に合いません。Auto Scaling グループで最小 1 台にする方法は、常に 1 台が動き続けるので、動いている間だけ払う要件に合いません。出典 https://docs.aws.amazon.com/AmazonECS/latest/developerguide/tasks-⁠scheduled-⁠eventbridge-⁠scheduler.html

ほかの分野

  • セキュアな設計

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

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

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

    26問解く
  • 高性能な設計

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

    24問解く

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

続きはゆめさくで

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