MODULE 02 / CANDIDATE A · 状況から学ぶ
販売サイトで AWSを学ぶ
公開、アクセス集中、障害、配送の遅延。架空のグッズ販売サイトに起きる変化をたどり、サービスを使う理由から学びます。
このModuleで学ぶこと
01EC2・仮想化・性能と料金の選択
02Console / CLI / SDKとAPI
03監視・増減・分散・高可用性
04SQS / SNSと疎結合
販売サイトの サーバーを用意する
グッズ販売サイトを 公開したい
注文を受け付けるアプリはできた。次に必要なのは、そのアプリを動かす場所。今回は架空の作品グッズ販売サイトを、少しずつ育てていきます。
Amazon EC2なら、LinuxやWindowsのサーバーを必要なときに起動できます。起動した1台がインスタンス。OSとアプリを設定し、リクエストを受けて処理を返します。物理サーバーの購入・設置から始める必要はありません。
物理サーバー · AWSが管理
仮想化は、物理的なCPUやメモリを複数の独立したコンピューターとして扱う技術です。ハイパーバイザーがリソースの割り当てと分離を担い、複数の利用者が基盤を共有する形をマルチテナントと呼びます。
ここで押さえるEC2はアプリを動かす場所。物理基盤の管理と、OS・アプリの管理を分けて考える。
重い処理の正体に 合わせて選ぶ
注文画面と画像変換、 同じ性能でいい?
画面表示、計算、メモリ上の分析、画像処理では必要なリソースが違います。単に大きいサーバーを選ぶ前に、何が足りないかを見ます。
インスタンスファミリーは性能の系統、サイズはリソースの量です。タイプ名は両方を含みます。例えばm5.largeなら、m5がファミリー、largeがサイズ。「汎用」などは、その上の用途別カテゴリです。
m5
ファミリー · 系統+世代
large
サイズ · リソース量
例:m5.large全体がインスタンスタイプです。「汎用」などは用途別のカテゴリで、m5などが具体的なファミリー。命名にはプロセッサなどを示す追加文字が付く場合もあります。上の例は最新世代の推奨ではありません。
| カテゴリ | 重視するリソース | 適した処理の例 |
|---|---|---|
| 汎用 | CPU・メモリ・ネットワークのバランス | Webサーバー、開発環境 |
| コンピューティング最適化 | CPUの処理性能 | 計算量の多いバッチ、科学計算 |
| メモリ最適化 | 大容量メモリ | インメモリDB、大規模データ処理 |
| 高速コンピューティング | GPUなどのアクセラレーター | 機械学習、グラフィックス処理 |
| ストレージ最適化 | ローカルストレージのI/O性能 | 大量の読み書き、データ分析 |
最初は小さめの構成で実測し、CPU・メモリ・I/Oのどこが詰まるかを見直します。EBS(EC2で使う永続ストレージ)の容量は別に設定でき、サイズを上げればストレージまで一律に増えるとは限りません。
ここで押さえる用途に合う系統を選び、その中で必要なサイズを選ぶ。
同じ設定を、 毎回作り直さない
2台目、3台目も 手でクリックする?
1台なら画面操作で十分。毎回同じ設定をするようになったら、繰り返せる操作にすると手入力のばらつきを減らせます。
AWS APIは、リソースの作成・参照・変更を受け付ける窓口です。Management Console、CLI、SDKは、そのAPIへ操作を届ける入口。どの入口でも認証と適切な権限が必要です。
| 入口 | 使う場面 | 具体例 |
|---|---|---|
| Console | 初めての設定、状態の確認 | EC2の一覧画面を開く |
| CLI | 繰り返す運用、シェルスクリプト |
aws ec2 describe-instances
|
| SDK | アプリやプログラムにAWS操作を組み込む | PythonのBoto3でEC2一覧を取得 |
Consoleは設定の理解や状態確認、CLIはコマンドや運用スクリプト、SDKはアプリへの組み込みに向きます。CLIはローカル端末だけでなく、CLIが用意されたAWS CloudShellでも使えます。自動化しても、操作の中身は確認します。
ここで押さえる入口を変えると操作の仕方が変わる。使える権限が増えるわけではない。
販売開始の アクセス集中を 乗り切る
販売開始。 注文が一気に増えた
1台のCPUが忙しいとき、選べる方向は「1台を強くする」と「処理を分担する台数を増やす」です。
Scale Up · 垂直スケーリング
1台の処理能力を増やすCPU・メモリが足りない1台を、より大きなインスタンスタイプに変更。逆方向はScale Downです。
Scale Out · 水平スケーリング
並列に処理する台数を増やす複数のサーバーで処理を分担。台数を減らすScale Inと合わせ、EC2 Auto Scalingで自動化できます。
負荷に合わせて能力を拡張できる性質がスケーラビリティ。増えた需要に合わせて増やし、落ち着いたら減らせる性質が伸縮性です。Scale Outには、複数台で処理できるアプリ設計が必要です。
毎回手で増減する代わりに、CloudWatchのCPU使用率などを使い、EC2 Auto Scalingがポリシーに沿って台数を調整します。平均CPUの目標値を追う方式がターゲット追跡です。
ここで押さえる負荷を測る役割と、台数を変える役割を組み合わせる。
台数を増やしたら、 配置と入口も整える
3台あるのに 1台だけ忙しい。 さらに配置場所で障害
必要なのは台数だけではありません。リクエストの分散と、障害に巻き込まれる範囲の分散を考えます。
ELB(Elastic Load Balancing)はリクエストを複数のターゲットへ分散します。Web向けのALBを共通の入口にすれば、利用者は各EC2のアドレスを知る必要がありません。
リージョンは地理的なエリア、AZはリージョン内の独立した配置単位で、1つ以上のデータセンターで構成されます。サブネットはネットワークを区切った範囲で1つのAZに属し、EC2はその中に配置されます。複数AZへ分散して、高可用性、つまり障害時もサービスを継続しやすい構成を目指します。
ELB:どこへ送るか
ヘルスチェックで状態を確認し、通常は正常なターゲットへ分散。基盤の保守はAWSが担当します。
Auto Scaling:何台にするか
需要に合わせて増減。不健全なインスタンスを置き換え、ELBとの連携設定で追加台を登録できます。
注文受付から処理サーバーへ送る内部通信にもELBを使えます。バックエンドの個別アドレスを隠せますが、同期通信では相手の応答を待つ関係が残ります。
ここで押さえる高可用性は障害への備え。スケーリングは需要に合う容量。両方を設計する。
配送が遅れても、 受付を続ける
配送処理が遅い。 注文の受付まで 待たされる
受付アプリが配送の完了をその場で待つと、配送側の遅延や停止が受付へ伝わります。処理依頼を保存し、後で受け取れるようにします。
SQSはメッセージキュー。仕事をためて、ワーカーが自分のペースで取りに行きます。SNSは発行・購読(Pub/Sub)。注文のイベントを配送・分析などの購読先へ配ります。相手の状態への依存を減らす設計が疎結合です。
| 比較する点 | Amazon SQS | Amazon SNS |
|---|---|---|
| 中心となる役割 | 処理待ちの仕事をバッファリング | イベントを購読先へ配信 |
| 受信側との関係 | 受信側がポーリングして取得 | サービスが購読先へ配信 |
| 複数の受信者 | ワーカーが仕事を分担。重複受信に備える | 各購読先へ配信(フィルター設定で対象を絞れる) |
| 用途 | 配送、画像変換、非同期バッチ | 注文イベントの配信、メール・SMS・プッシュ通知 |
| 組み合わせ | SNS → 複数のSQS → 各処理。イベントの配信と、処理待ちの保存を両立 | |
メッセージの中身はペイロード。例えば注文IDや配送先です。SNSから用途別のSQSへ配信すると、同じイベントをそれぞれ別のペースで処理できます。受付側はSQSへの送信成功を確かめ、受付済みと配送済みを別の状態として扱います。
ここで押さえるSQSで処理する時刻を分け、SNSで受け取る先を分ける。
落ち着いたら、 使い方と料金を 見直す
ピークの容量を、 ずっと動かしておく?
必要な量へ減らすことと、継続利用の料金を見直すことは別の工夫です。まず実際の利用パターンを知ります。
使い方が読めない初期はオンデマンド、安定した利用が見えたらSavings PlansやReserved Instancesを検討。中断に耐えられるバッチにはSpotが候補になります。専有ホストは物理サーバーを専有する配置方法で、割引方式とは別の選択軸です。
| 選択肢 | 考え方 | 向いている状況 / 注意点 |
|---|---|---|
| オンデマンド | 長期の利用コミットなしで使う | 試作、短期利用、需要が読めない処理。課金単位はOSなどで異なる |
| Savings Plans | 1年・3年の一定利用額($/時)を約束し、対象利用を割引 | 安定した利用。Compute Savings PlansはEC2に加えLambda・Fargateにも適用。EC2 Instance Savings Plansは対象が限定される |
| Reserved Instances | 1年・3年の契約で、条件に合うインスタンス利用を割引 | 予測可能な継続利用。条件や支払い方法で割引が変わる。すべてがキャパシティ予約を伴うわけではない |
| Spot Instances | 余剰キャパシティを割安で利用 | 再実行できるバッチなど。中断を前提に設計する |
| Dedicated Hosts (専有ホスト) |
物理サーバーを専有し、配置を制御 | ソフトウェアのライセンス要件や規制要件に対応 |
ここで押さえる不要な容量を減らすことと、長期コミットで割引を得ることを分けて判断する。
作った仕組みを、 役割で説明する
販売サイトの流れを思い出して、サービス名の一覧ではなく「困りごとに対する役割」として説明してみましょう。
Q1. EC2を増やしても、一部の台だけが忙しい。何を見直す?
ELBなどの分散の仕組み、ターゲット登録やヘルスチェック、振り分けの設定を確認します。台数の制御とリクエストの分散は別の役割です。
Q2. 大きなEC2を1台にすれば、AZの障害にも耐えられる?
1台の性能を上げても配置場所の障害には備えられません。複数AZに配置し、障害時に残る容量やデータの扱いも考えます。
Q3. 処理側が止まっても、受付を続けるには?
処理依頼をSQSへ保存し、ワーカーが後から受信します。SQSへの送信成功と保持期間内の復旧が必要で、受付成功と処理完了は別の状態です。
Q4. 同じ注文イベントを、配送と分析の両方へ届けるには?
SNSへ発行し、配送用と分析用のSQSをそれぞれ購読させます。各処理が別のキューを持ち、独立したペースで動けます。
ここで押さえるEC2は動かす。CloudWatchは観測する。Auto Scalingは増減する。ELBは分散する。SQSはためる。SNSは配る。
確認した資料
元データはModule 2のトランスクリプトです。仕様の補足はAWS公式資料で確認しています(参照:2026年10月4〜5日)。構成図は概念図で、完全な構築手順ではありません。
読み終えたら、同じ内容を別の構成でも確かめてみてください。
比較ページへ戻る →