SAP-C02 · LESSON 2

新しいソリューションのための設計29% · 6項目

新しいソリューションのデプロイ戦略、事業の継続性、セキュリティ、信頼性、性能、コストの設計を学びます。

2.1ビジネス要件を満たすデプロイ戦略を設計する

2.1 ビジネス要件を満たすデプロイ戦略を設計する。

概念

デプロイ戦略には、インプレース・ローリング・ブルー/グリーン・カナリア・線形があります。ダウンタイムをなくし素早く切り戻すにはブルー/グリーン(Route 53・ALB の重み付け・CodeDeploy)、影響を限定して検証するにはカナリアを使います。複数のアカウント・リージョンに同じ基盤を展開するには CloudFormation StackSets、アプリのパイプラインは CodePipeline を使います。

仕組み・手順

  1. ダウンタイムの許容と切り戻しの速さの要件を確認する
  2. 要件に合うデプロイの方式を選ぶ
  3. インフラは IaC で定義し、StackSets で組織の全アカウントに展開する
  4. CodeDeploy・Lambda のエイリアス・ECS のブルー/グリーンで段階的に切り替える
  5. CloudWatch のアラームで異常を検知したら自動でロールバックする

業務での例

決済の API の新版を、Lambda のエイリアスで 10% のカナリアにして 10 分間エラー率を監視し、問題がなければ全面的に切り替える。

紛らわしい点・試験の注意

ミニクイズ

Q1. ECS のサービスを CodeDeploy でブルー/グリーンデプロイしている。新しい版でエラーが増えたら、人手を介さずに旧版へ戻したい。最も適切な方法はどれか。

  1. ブルー/グリーンをやめて一括デプロイに切り替え、エラーが出たら修正版をすぐにリリースし直す
  2. エラーが出てもリトライで吸収されるよう、クライアント側の再試行の回数を大きく増やしておく
  3. デプロイ後に担当者がログを1時間ごとに確認し、エラーが多ければ旧版のタスク定義で再デプロイする
  4. デプロイグループに CloudWatch のアラームを関連付け、アラーム時の自動ロールバックを有効にする
答えと解説を見る

正解:D デプロイグループに CloudWatch のアラームを関連付け、アラーム時の自動ロールバックを有効にする

CodeDeploy はデプロイ中や待機時間中にアラームが発生すると、自動でロールバックして通信を元のタスクセットに戻せる。

Q2. ブルー/グリーンで新しい版に通信を切り替えた直後、エラー率のアラームが鳴った。旧環境はまだ残っている。最初に行うべきこととして最も適切なものはどれか。

  1. 通信を旧環境(ブルー)に戻して影響を止めてから、新しい版の原因を調べる
  2. 旧環境を削除して費用を下げてから、新しい版の修正に取りかかって再リリースする
  3. エラーの出ている新しい版のログをすべて集めて分析が終わるまで、切り替えたままにしておく
  4. 新しい環境のインスタンスを増やして、エラーが減るかどうかをしばらく様子を見る
答えと解説を見る

正解:A 通信を旧環境(ブルー)に戻して影響を止めてから、新しい版の原因を調べる

ブルー/グリーンの利点は即座に切り戻せること。まず利用者への影響を止め、その後で原因を調べる。旧環境は安定するまで残しておく。

参考リンク

2.2事業の継続性を確保するソリューションを設計する

2.2 事業の継続性を確保するソリューションを設計する。

概念

事業の継続性は、バックアップ(AWS Backup のクロスリージョン・クロスアカウントのコピー、ボールトロック)と、マルチリージョンの構成で確保します。Aurora グローバルデータベースは 1 秒未満の RPO と 1 分程度の RTO を目標にでき、DynamoDB グローバルテーブルはマルチリージョンのアクティブ/アクティブの書き込みが可能です。

仕組み・手順

  1. 重要なデータのバックアップを別のアカウント・リージョンにコピーする
  2. ランサムウェア対策に AWS Backup のボールトロックで削除を防ぐ
  3. 短い RPO が必要な DB は Aurora グローバルデータベースにする
  4. マルチリージョンの書き込みが必要なら DynamoDB グローバルテーブル
  5. 切り替えの手順を自動化し、訓練する

業務での例

EC サイトの注文 DB を Aurora グローバルデータベースにし、主リージョンの障害時はセカンダリを昇格させて 1 分ほどで書き込みを再開する。

紛らわしい点・試験の注意

ミニクイズ

Q1. 運用チームが EC2 上の自前の MySQL のパッチ適用とバックアップに毎月多くの時間を使っている。新システムでは運用負荷を減らしたい。最も適切な選択はどれか。

  1. MySQL を Windows Server 上に移し、Windows Update の自動更新にデータベースのパッチも任せる
  2. パッチの適用をやめて、問題が見つかったときだけ OS とデータベースをまとめて更新する運用にする
  3. EC2 の台数を増やして MySQL を複数台にし、パッチの適用を1台ずつ順番に手作業で進めるようにする
  4. Amazon Aurora MySQL などのマネージドなデータベースを使い、パッチやバックアップを AWS に任せる
答えと解説を見る

正解:D Amazon Aurora MySQL などのマネージドなデータベースを使い、パッチやバックアップを AWS に任せる

インフラの準備やパッチ適用の負荷を減らすには、マネージドサービスを採用する。Aurora や RDS ではメンテナンスウィンドウでのパッチ適用と自動バックアップを使える。

Q2. 複数のアカウントにある EBS・RDS・DynamoDB のバックアップを自動化し、費用を抑えつつ別のリージョンでも復元でき、ランサムウェアによる削除も防ぎたい。最も適切な構成はどれか。

  1. バックアップは取らず、データベースのマルチ AZ 配置と EBS の暗号化だけで、ランサムウェアによる削除にも対応できるようにする
  2. AWS Backup のプランで別リージョンへのコピーとコールドストレージへの移行を設定し、Vault Lock を有効にする
  3. すべてのバックアップを本番と同じアカウント・同じリージョンに保存し、復元の速さを最優先にする
  4. 各サービスのコンソールで担当者が毎日手動でスナップショットを取り、名前に日付を付けて管理する
答えと解説を見る

正解:B AWS Backup のプランで別リージョンへのコピーとコールドストレージへの移行を設定し、Vault Lock を有効にする

AWS Backup はバックアップの取得・保持・コピーを一元管理し、ライフサイクルで費用を下げられる。Vault Lock は保存したバックアップの削除や保持期間の短縮を防ぐ。

参考リンク

2.3要件に基づいてセキュリティコントロールを決定する

2.3 要件に基づいてセキュリティコントロールを決定する。

概念

新しいシステムのセキュリティは、要件(規制・データの機密性・公開の範囲)から管理策を選びます。境界の防御は WAF・Shield Advanced(DDoS 対応チームと費用の保護)・AWS Network Firewall(VPC の通信のステートフルな検査・ドメインのフィルター)、データは KMS・CloudHSM(専有の HSM が必要な場合)、パッチは Systems Manager Patch Manager、認証は Cognito(利用者)や IAM Identity Center(社員)で行います。

仕組み・手順

  1. 規制とデータの分類から必要な管理策を洗い出す
  2. 公開の境界に WAF と Shield、VPC の出入りの通信に Network Firewall を置く
  3. FIPS 140 レベル 3 の専有の鍵が必要なら CloudHSM、それ以外は KMS
  4. Patch Manager でパッチの基準と適用の時間帯を決める
  5. 利用者の認証は Cognito、MFA を必須にする

業務での例

社内のサーバーから外部への通信を、許可したドメインだけにするため、Network Firewall のドメインリストで制限し、それ以外を拒否する。

紛らわしい点・試験の注意

ミニクイズ

Q1. 世界中から利用される大規模な Web アプリで、攻撃の多くをエッジで防ぎ、オリジンの ALB に直接アクセスされないようにしたい。最も適切な構成はどれか。

  1. ALB をインターネットに直接公開し、ALB の DNS 名を推測されにくいように長くして攻撃を避けることにする
  2. CloudFront に WAF を関連付け、ALB のセキュリティグループは CloudFront のマネージドプレフィックスリストからだけ許可する
  3. すべての利用者に、アクセス元の IP アドレスを事前に申請させ、ALB で許可リストを手作業で管理していく
  4. CloudFront を使わずに、ALB の背後の EC2 の台数を常にピークの数倍に確保しておき、攻撃による大量のリクエストの負荷もすべて受け止める
答えと解説を見る

正解:B CloudFront に WAF を関連付け、ALB のセキュリティグループは CloudFront のマネージドプレフィックスリストからだけ許可する

CloudFront と WAF でエッジで攻撃を防ぎ、オリジンへの直接アクセスはセキュリティグループで CloudFront のプレフィックスリストに限定する(カスタムヘッダーの検証を組み合わせることもある)。

Q2. 大規模な Web サイトの攻撃対策を設計している。特定の IP アドレスから、5 分間に数千回のログインの試行が繰り返されている。最も適したものはどれか。

  1. AWS WAF のマネージドルールグループ
  2. AWS WAF のレートベースのルール
  3. AWS Shield Advanced
  4. CloudFront の地域制限
答えと解説を見る

正解:B AWS WAF のレートベースのルール

レートベースのルールは送信元 IP などごとのリクエスト数を数え、しきい値を超えた送信元を一定時間ブロックする。

参考リンク

2.4信頼性の要件を満たす戦略を策定する

2.4 信頼性の要件を満たす戦略を策定する。

概念

信頼性の設計では、障害の影響範囲を小さくする(セルベースのアーキテクチャ・シャッフルシャーディング)、依存関係を疎結合にする(SQS・EventBridge)、再試行(指数バックオフとジッター)とタイムアウト・サーキットブレーカー、クォータ(Service Quotas)の監視と引き上げを組み合わせます。

仕組み・手順

  1. 単一障害点を洗い出し、複数 AZ に冗長化する
  2. 依存先が遅くなっても全体が止まらないよう、タイムアウトと非同期化を入れる
  3. 再試行は指数バックオフとジッターで行い、冪等にする
  4. Service Quotas の上限に近づいたらアラームで通知し、事前に引き上げる
  5. ヘルスチェックで異常なリソースを自動で外す

業務での例

外部の決済 API が遅くなったとき、タイムアウトとサーキットブレーカーで注文の受付を保ち、決済は SQS に溜めて後から処理する。

紛らわしい点・試験の注意

ミニクイズ

Q1. 災害対策(DR)の訓練についての説明として誤っているものはどれか。

  1. 訓練で見つかった手順の不備や、クォータ・権限の不足を改善に反映する
  2. 本番に影響しない方法(復旧用の環境を分離したネットワークで起動するなど)を選んで、訓練を行う
  3. 訓練は本番に影響する恐れがあるため、一度も実施せず手順書の整備だけにとどめるのがよい
  4. 定期的に訓練を行い、実際の RTO・RPO が目標を満たしているかを測定する
答えと解説を見る

正解:C 訓練は本番に影響する恐れがあるため、一度も実施せず手順書の整備だけにとどめるのがよい

試していない DR の手順は、災害時に動かないことが多い。本番に影響しない方法で定期的に訓練し、目標を満たすかを確かめる。

Q2. 新しいサービスを全社に公開する前に、急な利用の増加で上限に当たって止まることを防ぎたい。最も適切な対策はどれか。

  1. サービスクォータは利用量に応じて自動で無制限に増えるため、特に何も準備する必要はない
  2. 必要なサービスクォータを見積もって事前に引き上げを申請し、使用率を CloudWatch のアラームで監視する
  3. 公開後に上限のエラーが出たら、その都度 AWS サポートに連絡して引き上げてもらう運用にしておく
  4. 上限に当たらないよう、利用者を少数の部署に限定したまま全社への公開をいつまでも先送りにする
答えと解説を見る

正解:B 必要なサービスクォータを見積もって事前に引き上げを申請し、使用率を CloudWatch のアラームで監視する

サービスクォータには上限があり、多くは申請で引き上げられる。事前に見積もって引き上げ、Service Quotas と CloudWatch で使用率を監視する。

参考リンク

2.5パフォーマンス目標を満たすソリューションを設計する

2.5 パフォーマンス目標を満たすソリューションを設計する。

概念

性能の目標(レイテンシ・スループット)は、キャッシュ(CloudFront・ElastiCache・DAX・API Gateway のキャッシュ)、データベースの選択(目的別の DB)、計算資源の選択(インスタンスの種類・GPU・Graviton)、非同期化、グローバルな配置(エッジ・複数リージョン)で満たします。負荷テストで目標を確認します。

仕組み・手順

  1. 性能の目標を数値(p99 のレイテンシなど)で決める
  2. アクセスのパターンに合う目的別の DB を選ぶ
  3. 繰り返し読まれるデータをキャッシュする
  4. 重い処理は非同期にして、応答を速くする
  5. 負荷テストで目標を満たすか確認する

業務での例

世界の利用者に p99 200 ミリ秒以内で応答するため、静的なコンテンツは CloudFront、API の読み取りは DynamoDB グローバルテーブルと DAX で各リージョンから返す。

紛らわしい点・試験の注意

ミニクイズ

Q1. Aurora のフェイルオーバーの訓練で、DB の切り替えは 30 秒で終わったのに、アプリの接続エラーが数分続いた。アプリは DNS の結果を長く保持していた。次に行うべきこととして最も適切なものはどれか。

  1. アプリの接続先を、リーダーエンドポイントに切り替える
  2. クラスターエンドポイントを使い DNS のキャッシュを短くする(または RDS Proxy を使う)
  3. アプリの接続先を、プライマリのインスタンスのエンドポイントに固定する
  4. Aurora のフェイルオーバーの優先度(ティア)を見直す
答えと解説を見る

正解:B クラスターエンドポイントを使い DNS のキャッシュを短くする(または RDS Proxy を使う)

フェイルオーバー時はクラスターエンドポイントの DNS が新しいプライマリを指す。アプリ側の DNS キャッシュが長いと古い接続先を使い続けるため、TTL を短くするか RDS Proxy で接続を管理する。 【他の選択肢】リーダーエンドポイントは読み取り用で書き込みに使えない。インスタンスのエンドポイントに固定すると、フェイルオーバーの後に古いインスタンスを指す。ティアは切り替え先の順位で、アプリの DNS キャッシュの問題を直さない。

Q2. このポータルの構成として、要件に最も合うものはどれか。

  1. 2つのリージョンで同じ規模の環境を常に動かし、両方のデータベースに毎回同時に書き込むようにする
  2. オンプレミスと同じ構成で EC2 に Web・AP・DB を自前で構築し、OS とミドルウェアも自分たちで運用する
  3. CloudFront・ALB・ECS on Fargate・Aurora Serverless v2 を、複数の AZ で構成する
  4. 1台の大きな EC2 に Web サーバーとデータベースをまとめ、毎晩 EBS のスナップショットを取得する
答えと解説を見る

正解:C CloudFront・ALB・ECS on Fargate・Aurora Serverless v2 を、複数の AZ で構成する

マネージドでサーバーレス寄りの構成にすると、2 名でも運用でき、負荷に合わせて費用が増減する。複数の AZ で可用性を確保する。1台構成は単一障害点、マルチリージョンの常時稼働は初年度の費用に合わない。

参考リンク

2.6コスト最適化の戦略を決定する

2.6 ソリューションの目標と目的を達成するためのコスト最適化戦略を決定する。

概念

新しいシステムでは、マネージド・サーバーレスのサービスの採用で運用費を下げ、購入オプション(Savings Plans・スポット)、ストレージのクラス、データ転送の少ない構成、適切なサイズの選択を設計の段階で組み込みます。コストの見積もりを要件ごとに比べ、トレードオフを説明できるようにします。

仕組み・手順

  1. 要件に必要な最小限の構成を決める
  2. マネージド・サーバーレスで運用の手間とアイドルの費用を減らす
  3. 安定する部分には Savings Plans、中断可能な処理にはスポットを使う
  4. データ転送の経路(NAT・リージョン間)を見直す
  5. タグと予算を最初から設定する

業務での例

月に数回しか使われない社内の申請システムを、EC2 の常時稼働から API Gateway・Lambda・DynamoDB のサーバーレスに設計して、費用を 9 割減らす。

紛らわしい点・試験の注意

ミニクイズ

Q1. 稼働から 3 か月がたち、Fargate の利用量が安定してきた。初年度の費用をさらに下げる方法として最も適切なものはどれか。

  1. 稼働の初日にさかのぼって、ピーク時の量で3年分の Savings Plans を買い直す
  2. 割引は使わずに、タスクに割り当てる CPU とメモリを最小の値に固定しておく
  3. Fargate をやめて、すべてのタスクをスポットの EC2 で動かすように作り直す
  4. 利用実績から常に使う量を見極め、その分だけ Compute Savings Plans を購入する
答えと解説を見る

正解:D 利用実績から常に使う量を見極め、その分だけ Compute Savings Plans を購入する

実績を見て、常に使うベースラインの分だけ約束すると、無駄なく割引を受けられる。Compute Savings Plans は Fargate にも適用される。

Q2. 大規模な Web サイトの攻撃対策を設計している。大規模な DDoS 攻撃に備え、24 時間体制の専門チームの支援と、攻撃で増えた利用料の補償を受けたい。最も適したものはどれか。

  1. AWS WAF のマネージドルールグループ
  2. AWS WAF のレートベースのルール
  3. AWS Shield Advanced
  4. CloudFront の地域制限
答えと解説を見る

正解:C AWS Shield Advanced

Shield Advanced は高度な DDoS 対策に加え、Shield Response Team の支援、攻撃による利用料の増加に対する保護などを提供する有料のサービス。

参考リンク

レッスンは当サイトがAWS 認定の公式ページと公式試験ガイドをもとに独自に作成したもので、試験の内容を保証するものではありません。製品の仕様は変わることがあるため、参考リンク先の最新情報を確認してください。

ご利用上の注意(非公式・独自問題・合格保証なし)