MODULE 02 / CANDIDATE A · 状況から学ぶ

販売サイトで AWSを学ぶ

公開、アクセス集中、障害、配送の遅延。架空のグッズ販売サイトに起きる変化をたどり、サービスを使う理由から学びます。

Module 2全体 比較用・未採用 8セクション+公式資料

このModuleで学ぶこと

01EC2・仮想化・性能と料金の選択

02Console / CLI / SDKとAPI

03監視・増減・分散・高可用性

04SQS / SNSと疎結合

01

販売サイトの サーバーを用意する

いま起きていること

グッズ販売サイトを 公開したい

注文を受け付けるアプリはできた。次に必要なのは、そのアプリを動かす場所。今回は架空の作品グッズ販売サイトを、少しずつ育てていきます。

Amazon EC2なら、LinuxやWindowsのサーバーを必要なときに起動できます。起動した1台がインスタンス。OSとアプリを設定し、リクエストを受けて処理を返します。物理サーバーの購入・設置から始める必要はありません。

物理サーバーを共有し、 仮想サーバーを分離する HIERARCHY

物理サーバー · AWSが管理

EC2インスタンス A 利用者A · OS+アプリ
EC2インスタンス B 利用者B · OS+アプリ
EC2インスタンス C 利用者B · OS+アプリ
ハイパーバイザー· CPUやメモリなどの割り当てと分離
AWS:物理基盤・仮想化基盤を管理 利用者:ゲストOS・アプリを管理
これは仮想化の概念図です。1台の物理サーバー上に複数の仮想マシンを動かし、別々の利用者が基盤を共有する形を「マルチテナント」と呼びます。

仮想化は、物理的なCPUやメモリを複数の独立したコンピューターとして扱う技術です。ハイパーバイザーがリソースの割り当てと分離を担い、複数の利用者が基盤を共有する形をマルチテナントと呼びます。

ここで押さえるEC2はアプリを動かす場所。物理基盤の管理と、OS・アプリの管理を分けて考える。

02

重い処理の正体に 合わせて選ぶ

いま起きていること

注文画面と画像変換、 同じ性能でいい?

画面表示、計算、メモリ上の分析、画像処理では必要なリソースが違います。単に大きいサーバーを選ぶ前に、何が足りないかを見ます。

インスタンスファミリーは性能の系統、サイズはリソースの量です。タイプ名は両方を含みます。例えばm5.largeなら、m5がファミリー、largeがサイズ。「汎用」などは、その上の用途別カテゴリです。

m5 ファミリー · 系統+世代
large サイズ · リソース量

例:m5.large全体がインスタンスタイプです。「汎用」などは用途別のカテゴリで、m5などが具体的なファミリー。命名にはプロセッサなどを示す追加文字が付く場合もあります。上の例は最新世代の推奨ではありません。

用途別に見る、主な5カテゴリ
カテゴリ 重視するリソース 適した処理の例
汎用 CPU・メモリ・ネットワークのバランス Webサーバー、開発環境
コンピューティング最適化 CPUの処理性能 計算量の多いバッチ、科学計算
メモリ最適化 大容量メモリ インメモリDB、大規模データ処理
高速コンピューティング GPUなどのアクセラレーター 機械学習、グラフィックス処理
ストレージ最適化 ローカルストレージのI/O性能 大量の読み書き、データ分析

最初は小さめの構成で実測し、CPU・メモリ・I/Oのどこが詰まるかを見直します。EBS(EC2で使う永続ストレージ)の容量は別に設定でき、サイズを上げればストレージまで一律に増えるとは限りません。

ここで押さえる用途に合う系統を選び、その中で必要なサイズを選ぶ。

03

同じ設定を、 毎回作り直さない

いま起きていること

2台目、3台目も 手でクリックする?

1台なら画面操作で十分。毎回同じ設定をするようになったら、繰り返せる操作にすると手入力のばらつきを減らせます。

AWS APIは、リソースの作成・参照・変更を受け付ける窓口です。Management Console、CLI、SDKは、そのAPIへ操作を届ける入口。どの入口でも認証と適切な権限が必要です。

3つの操作方法、 共通するサービス操作 CONVERGENCE
Management Console ブラウザーで操作
AWS CLI コマンドで操作
AWS SDK プログラムで操作
AWS API 認証・権限を確認して実行
EC2などのAWSサービス リソースを作成・参照・変更
入口を変えても、権限の範囲を超えて操作できるわけではありません。どの方法でも認証情報と適切な権限が必要です。
操作方法を、作業に合わせて選ぶ
入口 使う場面 具体例
Console 初めての設定、状態の確認 EC2の一覧画面を開く
CLI 繰り返す運用、シェルスクリプト aws ec2 describe-instances
SDK アプリやプログラムにAWS操作を組み込む PythonのBoto3でEC2一覧を取得

Consoleは設定の理解や状態確認、CLIはコマンドや運用スクリプト、SDKはアプリへの組み込みに向きます。CLIはローカル端末だけでなく、CLIが用意されたAWS CloudShellでも使えます。自動化しても、操作の中身は確認します。

ここで押さえる入口を変えると操作の仕方が変わる。使える権限が増えるわけではない。

04

販売開始の アクセス集中を 乗り切る

いま起きていること

販売開始。 注文が一気に増えた

1台のCPUが忙しいとき、選べる方向は「1台を強くする」と「処理を分担する台数を増やす」です。

1台を強くするか、 台数を増やすか COMPARISON

Scale Up · 垂直スケーリング

1台の処理能力を増やす
EC2
EC2

CPU・メモリが足りない1台を、より大きなインスタンスタイプに変更。逆方向はScale Downです。

Scale Out · 水平スケーリング

並列に処理する台数を増やす
EC2
EC2
EC2
EC2

複数のサーバーで処理を分担。台数を減らすScale Inと合わせ、EC2 Auto Scalingで自動化できます。

1台の性能を変えることと、台数を変えることは別の操作です。Scale Outには、複数台に仕事を分けられるアプリ設計が必要です。

負荷に合わせて能力を拡張できる性質がスケーラビリティ。増えた需要に合わせて増やし、落ち着いたら減らせる性質が伸縮性です。Scale Outには、複数台で処理できるアプリ設計が必要です。

毎回手で増減する代わりに、CloudWatchのCPU使用率などを使い、EC2 Auto Scalingがポリシーに沿って台数を調整します。平均CPUの目標値を追う方式がターゲット追跡です。

観測 → 判断 → 台数変更 → 再び観測 FEEDBACK LOOP
CloudWatchとEC2 Auto Scalingのフィードバックループ EC2がメトリクスをCloudWatchに送信。CloudWatchのアラームを用いてAuto Scalingがポリシーに従い台数を変更。その変化を再びCloudWatchが観測する。 EC2インスタンス群 処理を実行 Amazon CloudWatch メトリクス・アラーム EC2 Auto Scaling ポリシーで容量を調整 観測値 アラーム 起動・終了して台数を調整 → 負荷の変化を再び観測 設定例:最小2台 / 希望2台 / 最大6台 · 平均CPUの目標50%
矢印は観測・制御の方向を表します。これはターゲット追跡の概念図で、実際の反映には起動やウォームアップの時間がかかります。目標50%と台数は学習用の例です。

ここで押さえる負荷を測る役割と、台数を変える役割を組み合わせる。

05

台数を増やしたら、 配置と入口も整える

いま起きていること

3台あるのに 1台だけ忙しい。 さらに配置場所で障害

必要なのは台数だけではありません。リクエストの分散と、障害に巻き込まれる範囲の分散を考えます。

ELB(Elastic Load Balancing)はリクエストを複数のターゲットへ分散します。Web向けのALBを共通の入口にすれば、利用者は各EC2のアドレスを知る必要がありません。

同じ入口から、 別々のAZへ分散する HIERARCHY + FAN-OUT
リージョン内のALBから、複数AZのEC2にリクエストを分散 ユーザーからALBへリクエスト。ALBからAZ AとAZ BのEC2へ分岐。各EC2はそれぞれのAZ内のサブネットに配置される。VPC、ルート、セキュリティ設定などは省略。 ユーザー / クライアント AWS Region Application Load Balancer ELB · 共通のDNS名で受け付け Availability Zone A Availability Zone B Subnet A · 単一AZに所属 Subnet B · 単一AZに所属 EC2 · Webアプリ 処理を実行 EC2 · Webアプリ 処理を実行 設定したルールで振り分け 配置とリクエストの方向を示す概念図。VPC・ALB用サブネット・経路設定は省略。
Compute:処理する Network:配置・通信
リージョンの中にAZがあり、サブネット(ネットワークを区切った範囲)は1つのAZに属します。EC2はサブネットへ配置されます。実際にはVPC(AWS内の仮想ネットワーク)が複数AZにまたがり、ALBにもサブネットの設定が必要です。

リージョンは地理的なエリア、AZはリージョン内の独立した配置単位で、1つ以上のデータセンターで構成されます。サブネットはネットワークを区切った範囲で1つのAZに属し、EC2はその中に配置されます。複数AZへ分散して、高可用性、つまり障害時もサービスを継続しやすい構成を目指します。

ELB:どこへ送るか

ヘルスチェックで状態を確認し、通常は正常なターゲットへ分散。基盤の保守はAWSが担当します。

Auto Scaling:何台にするか

需要に合わせて増減。不健全なインスタンスを置き換え、ELBとの連携設定で追加台を登録できます。

注文受付から処理サーバーへ送る内部通信にもELBを使えます。バックエンドの個別アドレスを隠せますが、同期通信では相手の応答を待つ関係が残ります。

呼び出し先の 個別アドレスを隠す FLOW
フロントエンド リクエストを送る
内部ELB 共通のDNS名
バックエンド群 台数を独立に変更
個々のバックエンドの増減を、呼び出す側から切り離します。ELBを入れただけで、すべての依存関係がなくなるわけではありません。

ここで押さえる高可用性は障害への備え。スケーリングは需要に合う容量。両方を設計する。

06

配送が遅れても、 受付を続ける

いま起きていること

配送処理が遅い。 注文の受付まで 待たされる

受付アプリが配送の完了をその場で待つと、配送側の遅延や停止が受付へ伝わります。処理依頼を保存し、後で受け取れるようにします。

SQSはメッセージキュー。仕事をためて、ワーカーが自分のペースで取りに行きます。SNSは発行・購読(Pub/Sub)。注文のイベントを配送・分析などの購読先へ配ります。相手の状態への依存を減らす設計が疎結合です。

SQSは仕事をためる。 SNSはイベントを配る。 COMPARISON + MESSAGE FLOW

Amazon SQS · キュー

仕事を保存し、受信側が取りに行く。

注文受付アプリ 配送依頼を送信
SQSキュー 処理待ちのメッセージを保存
配送ワーカー群 受信 → 処理 → 削除

Amazon SNS · Pub/Sub

1つのイベントを複数の購読先へ配信。

注文受付アプリ 「注文確定」イベントを発行
SNSトピック 購読先へファンアウト
配送用SQS 配送処理へ
分析用SQS 分析処理へ
矢印はメッセージが進む方向。SQSの受信はワーカーがポーリングします。複数のワーカーは同じ仕事を分担し、SNSの複数購読先はそれぞれ同じイベントを受け取ります。
キューとトピックの違い
比較する点 Amazon SQS Amazon SNS
中心となる役割 処理待ちの仕事をバッファリング イベントを購読先へ配信
受信側との関係 受信側がポーリングして取得 サービスが購読先へ配信
複数の受信者 ワーカーが仕事を分担。重複受信に備える 各購読先へ配信(フィルター設定で対象を絞れる)
用途 配送、画像変換、非同期バッチ 注文イベントの配信、メール・SMS・プッシュ通知
組み合わせ SNS → 複数のSQS → 各処理。イベントの配信と、処理待ちの保存を両立

メッセージの中身はペイロード。例えば注文IDや配送先です。SNSから用途別のSQSへ配信すると、同じイベントをそれぞれ別のペースで処理できます。受付側はSQSへの送信成功を確かめ、受付済みと配送済みを別の状態として扱います。

ここで押さえるSQSで処理する時刻を分け、SNSで受け取る先を分ける。

07

落ち着いたら、 使い方と料金を 見直す

いま起きていること

ピークの容量を、 ずっと動かしておく?

必要な量へ減らすことと、継続利用の料金を見直すことは別の工夫です。まず実際の利用パターンを知ります。

使い方が読めない初期はオンデマンド、安定した利用が見えたら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
(専有ホスト)
物理サーバーを専有し、配置を制御 ソフトウェアのライセンス要件や規制要件に対応

ここで押さえる不要な容量を減らすことと、長期コミットで割引を得ることを分けて判断する。

08

作った仕組みを、 役割で説明する

販売サイトの流れを思い出して、サービス名の一覧ではなく「困りごとに対する役割」として説明してみましょう。

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日)。構成図は概念図で、完全な構築手順ではありません。

参照した公式資料を開く

読み終えたら、同じ内容を別の構成でも確かめてみてください。

比較ページへ戻る →