AWS SAA(Solutions Architect - Associate)対策

シナリオ読解法

このレッスンを終えると、シナリオ文を3ステップで分解し、要件語から構成へ翻訳して、惜しい選択肢を消せるようになります。このコースで一番大事な回です。

題材

ある企業が、社内向けのレポート配信システムを EC2 の単一インスタンスで運用しています。毎月末にアクセスが平常時の10倍に跳ね上がり、応答が返らないことがあります。障害でインスタンスが1台落ちてもサービスを継続させたいと考えています。アプリケーションはステートレスで、運用の手間を最小にしたいという条件があります。この要件を満たす構成はどれですか。

長く見えますが、答えに効いている言葉は4つしかありません。どこを拾うかを手順にします。

手順は3ステップ

ステップ1 何を作るのか

まず主語と対象を1行にします。ここでは「社内向けレポート配信の Web システム」です。この段階では技術を考えません。データベースの話なのか、ネットワークの話なのか、配信の話なのかという当たりを付けるだけです。ここを飛ばすと、目に入った単語に引きずられて分野違いの選択肢を選びます。

ステップ2 制約は何か

次に動かせない条件を拾います。この文では「月末に10倍」「1台落ちても継続」「ステートレス」の3つです。制約は複数あるのが普通で、制約を1つでも満たさない選択肢は、他がどれだけ優れていても落ちます。ここが SAA の採点の考え方です。

ステップ3 何を最優先するのか

最後に優先順位を決める言葉を探します。この文では「運用の手間を最小に」です。これがあると、同じ要件を満たす複数の案のうち、自前で組む案が落ちて、マネージドの案が残ります。

3ステップを通すと、この問題は「ALB と Auto Scaling で複数アベイラビリティゾーンに分散する」が残ります。ステートレスと書いてあるのでスケールアウトが成立し、複数AZで1台落ちても継続でき、Auto Scaling は運用の手間が小さいからです。

制約の言い回しが答えを変える

同じシナリオでも、最後の一文が変わると答えが変わります。ここが SAA の本体です。

最後の一文残る答え落ちる答え
最も低コストでスケジュールに合わせて縮退する構成、スポット、S3 への退避常時大きいインスタンスを並べる案
運用の手間を最小にFargate、Aurora Serverless、Lambda などのマネージドEC2 上に自前で仕組みを組む案
アプリを改修せずに手前に置く ALB、CloudFront、ElastiCache、EFS への差し替えコード側でキャッシュや分散を実装する案
ダウンタイムなしでブルーグリーン、リードレプリカの昇格、DNS の重み付け切替停止して移行する案、スナップショットからの復元
既存の運用を変えずに移行Lift and Shift 寄りの構成、FSx や EFS でのファイル共有維持サーバーレスへの全面書き換え
数分のダウンは許容パイロットライト、ウォームスタンバイマルチサイトのアクティブ/アクティブ

「アプリを改修せずに」の例で確かめます。読み取り負荷が高い RDS があるとき、アプリ側でキャッシュ層を実装して負荷を下げる案は、実務では正解になり得ます。しかし「改修せずに」と書かれた瞬間に落ちます。代わりにリードレプリカを足して参照先を向ける、あるいは前段に読み取り用の仕組みを置く案が残ります。技術的な良し悪しではなく、書かれた制約に照らして選びます

要件語から構成への対応表

ここが以降の全章で参照する土台です。まずは目を通し、章が進むたびに戻ってきてください。

要件語翻訳先の構成
単一障害点を排除したい複数アベイラビリティゾーンへの分散、ALB と Auto Scaling
データベースを落とさずに保ちたいRDS のマルチAZ配置による自動フェイルオーバー
読み取りが重い、参照が遅いリードレプリカを追加して参照を逃がす
ミリ秒未満の応答が要るElastiCache、DynamoDB なら DAX
インターネットを経由せずに接続したいVPC エンドポイント
世界中から静的コンテンツを速く見たいCloudFront
プライベートサブネットから外へ出たいNAT ゲートウェイ
拠点との接続に安定した帯域が要るDirect Connect
短期間で安価に拠点とつなぎたいサイト間 VPN
復旧は数時間でよく、最も安くバックアップとリストア
数分のダウンは許容し、費用を抑えたいパイロットライト
復旧を数十分に縮めたいウォームスタンバイ
ほぼ無停止で切り替えたいマルチサイトのアクティブ/アクティブ
アクセス頻度が読めないS3 Intelligent-Tiering
30日後はほとんど読まないライフサイクルで Standard-IA へ移動
数年保管し、取り出しは年に数回Glacier Flexible Retrieval や Deep Archive
削除も改ざんも許さないバージョニングと Object Lock
複数の EC2 から同じファイルを同時に読み書きEFS
Windows のファイル共有をそのままFSx for Windows File Server
固定 IP と超低レイテンシ、TCP や UDPNLB
URL のパスで振り分け、HTTPS を終端ALB
急なスパイクを取りこぼさず処理したいSQS で受けて Auto Scaling で処理
順序を守り、重複を排除したいSQS の FIFO キュー
1つの出来事を複数の宛先へ配りたいSNS のファンアウト、EventBridge
中断されても構わないバッチスポットインスタンス
1年以上安定して動き続けるSavings Plans や リザーブドインスタンス
認証情報をコードに置きたくないEC2 や Lambda に IAM ロールを割り当て
資格情報を定期的に自動で入れ替えたいSecrets Manager の自動ローテーション
回線が細い拠点からペタバイト級を移したいSnow ファミリー
リクエスト単位で遅い箇所を突き止めたいX-Ray

消去法の手順

選択肢が4つとも動きそうに見えたときは、次の順で消します。

  1. 制約に反するものを消す。 「改修せずに」に対してコード変更が要るもの、「ダウンタイムなし」に対して停止が要るものは、その1点だけで落ちます
  2. 要件より過剰なものを消す。 数分のダウンが許容されているのにアクティブ/アクティブを選ぶ案は、要件を満たしますが優先順位の言葉に反します。コストや運用の観点で必ず負けます
  3. 要件に届かないものを消す。 単一 AZ 内で複数台にする案は、インスタンス障害には耐えますが AZ 障害には耐えません。「単一障害点を排除」に届いていません
  4. 残った2つは、優先順位の一文で決める。 最後の「最も低コストで」「運用の手間を最小に」が、必ずどちらか片方に有利に働きます

よくある引っ掛け

1つ目は、過剰な構成を正解だと思ってしまうことです。より可用性が高い構成は一見よさそうに見えますが、要件が求めていない可用性に費用を払う案は誤答になります。SAA は「一番強い構成」ではなく「要件にちょうど合う構成」を選ぶ試験です。

2つ目は、知っているサービス名に飛びつくことです。設問に馴染みのある単語が出てくると、それを含む選択肢を選びたくなります。3ステップを踏んで制約を書き出してから選択肢を見る順序を守ると、この癖は消えます。

まとめ

  • シナリオは「何を作るのか」「制約は何か」「何を最優先するのか」の3ステップで分解する
  • 制約を1つでも満たさない選択肢は、他がどれだけ優れていても落ちる
  • 「最も低コストで」「運用の手間を最小に」「アプリを改修せずに」「ダウンタイムなしで」は答えを変える言葉
  • 消去法は、制約違反、過剰、不足の順に消し、残り2つを優先順位の一文で決める
  • 要件語から構成への対応表を、章が進むたびに厚くしていく
生田 陸人
ゆめさくエンジニア / 現役ソフトウェアエンジニア
編集 LuaGate編集部

復習ミニクイズ

ある企業が、EC2 上の Web アプリから RDS for MySQL を参照しています。参照系のクエリが増えて応答が遅くなりました。アプリケーションを改修せずに、参照性能を改善したいと考えています。最も適した対応はどれですか。