弾力性に優れたアーキテクチャの設計 #1

Q1未挑戦の問題問題を見る

平常時に処理するかどうかと、失われても続くかどうか

リージョンを 2 つ使う構成では、同じアプリケーション一式を両方に置いたかだけでなく、平常時に会員がどちらへ導かれるかまで見ます。
異常のときだけ振り分ける(フェイルオーバールーティング)平常時に返るのは片方のレコードだけで、応答時間や負荷の分散には効きません。
割合で振り分ける(加重ルーティング) — 両方が平常時から処理しますが、決めているのは返す割合だけで、どこから来た会員かは考慮されません。
応答時間の短いほうへ振り分ける(レイテンシールーティング) — 会員は速いほうで処理され、両方が平常時から受け付けています。ヘルスチェックで異常と判定されたリージョンのレコードは返らなくなるので、片方が失われても残りが受け続けます。
アプリケーション層だけを両方に置く書き込む先が増えていなければ片方の喪失で業務が止まります

Q2未挑戦の問題問題を見る

FIFO キューのメッセージグループ ID の決め方

順序が絡む設計では、「順序をどの単位で守るのか」を先に決めます。
標準キューの順序はベストエフォートです。送信順に届くこともありますが、保証はありません。並べ替えを受信側で自作すると、待ち合わせと欠番の扱いが増えます。
FIFO キューは厳密な順序を守りますが、その範囲はメッセージグループの中です。MessageGroupId は「この単位の中では前後を守ってほしい」という宣言だと考えます。
・グループの単位が守りたい単位とずれると(この問題の店舗 ID)、同じ対象への操作が複数のグループに散り、前後関係が決まりません。
・逆に単位を広く取りすぎると(固定の文字列で全件を 1 グループ)、そのグループを同時に扱えるコンシューマーは 1 つだけになります。
メッセージグループの数がそのまま並行して処理できる数の上限になるので、グループを細かく取れるほどスループットも伸びます。メッセージグループの粒度が、順序の保証範囲と並列度の両方を同時に決めると覚えておきましょう。
・実務では「注文 ID」「口座番号」「デバイス ID」のように、業務上の整合性を守りたい単位がそのままメッセージグループ ID になります。単位の候補が複数あるときは、「どの 2 件が入れ替わると困るか」を確かめると決まります。

Q3未挑戦の問題問題を見る

1 台しか動かせなくても、台数を保つ仕組みには乗せられる

「1 台でしか動かない」「分散できない」と書かれていても、台数を保つ仕組みそのものは使えます
Auto Scaling グループの最小容量・最大容量・希望容量をすべて 1 にする: 増減はしないまま、インスタンスが異常と判定されたときや失われたときだけ起動テンプレートから同じ構成の 1 台が自動で起動します。
分散できないアプリケーションでも、置き換えだけを自動化できます。
アラームによる通知: 気づくまでの時間は短くなりますが、通知だけでは起動して戻す操作が人手に残ります。アラームのアクションでインスタンスを自動で復旧させることもできますが、対象は基盤側の障害(システムステータスチェックの失敗)だけで、同じ構成の新しいインスタンスへ置き換える仕組みではありません。
スナップショットの自動取得: 戻す材料は用意できますが、復元と起動の操作は残ります。
終了保護: 防ぐのは誤った終了の操作で、基盤の障害には効きません。
選択肢を並べたら、検知・材料の準備・置き換えのどこまでが自動かを 1 つずつ見分けます。要件が「人手を介さず」なら、置き換えまで受け持つものだけが残ります。

Q4未挑戦の問題問題を見る

目的特化型の AI サービスは「入力の形」と「取り出したいもの」で選び分ける

文書や音声や画像を扱う要件では、入力が何の形かそこから何を取り出したいかの 2 つで担当が決まります。
Amazon Textract — 文書の画像や PDF から、テキストに加えてフォームの項目と表を抽出します。見出しと値の対応や表の行と列を保つため、登録先の項目へ直接対応付けられます。
Amazon Comprehend — テキストから感情やエンティティを判定します。あらかじめ用意されたエンティティの検出が受け付けるのはテキストなので、画像から始まる要件では先に抽出の段が要ります。
Amazon Rekognition — 画像や動画の分析。文字の検出もできますが、返るのは単語と行までで、帳票の項目と表の対応は返しません。
要は、画像から始まる要件は 2 段になることです。1 段目で画像を構造とテキストに変え、2 段目でその意味を判定します。取り出したいものが「表の中の値」か「文章の中の語」かで、どちらの段の話かが決まります。

Q5未挑戦の問題問題を見る

Windows の共有は「プロトコルとディレクトリ」で決まる

共有ファイルストレージの選定でまず見るのは、使う側が何で、どのプロトコルで接続するかです。
Amazon FSx for Windows File ServerSMB で接続する Windows 向けの共有です。
Active Directory に参加させられるので、利用者は今のアカウントのまま認証でき、ドライブとして割り当てて使えます。問題文に Windows・Active Directory・SMB・ドライブの割り当てが出たら、まずここです。
Amazon EFSNFS の共有です。Windows ベースの EC2 インスタンスでの利用はサポートされないのが分かれ目です。
「複数から同時に読み書き」だけで飛びつかず、使う側が Windows か Linux かを確認します。
EC2 に自前のファイルサーバー — 要件だけなら成立しますが、OS のパッチ適用・容量の拡張・障害時の切り替えを自分で受け持つことになります。新しく用意する場面では、まずマネージドサービスで満たせないかを確認します。