MODULE 02 / CANDIDATE C · 例えでつかむ

知っている物語から、 AWSへつなぐ

得意な仕事、個の能力、チームでの分担。フリーレンとワールドトリガーを理解のきっかけにしながら、AWSの仕組みへ戻って学びます。

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

このModuleで学ぶこと

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

02Console / CLI / SDKとAPI

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

04SQS / SNSと疎結合

01

サーバーを、必要なときに呼び出す

アプリを動かしたい。そのために物理サーバーを購入して、設置して、配線して…と準備する代わりに、AWSへ必要な処理能力をリクエストする。これがAmazon EC2の出発点です。

起動した1台をインスタンスと呼びます。LinuxやWindowsのOSを選び、Webアプリ、データベース、バッチ処理などを載せられます。OSやアプリを自由に設定できる分、その管理も利用者の仕事です。

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

物理サーバー · AWSが管理

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

1台の物理サーバーを複数のコンピューターとして扱うのが仮想化。その割り当てと分離を担うのがハイパーバイザー。複数の利用者が物理基盤を共有する形がマルチテナントです。

ここで押さえるEC2は、アプリを動かす独立したサーバーを必要なときに使う仕組み。

02

「誰が強いか」より「何を任せるか」

EC2には用途に合わせた性能の系統があります。ファミリーとサイズを分けて読むと、選ぶポイントを整理できます。m5.largeならm5がファミリー、largeがサイズで、全体がインスタンスタイプです。「汎用」などは用途別カテゴリです。

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

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

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

まず必要な能力を選び、その量を決めます。大きなサイズにしても、処理の原因が別のところにあれば期待ほど速くなりません。負荷を測って見直しましょう。EBS(EC2で使う永続ストレージ)の容量は別に設定できます。

ここで押さえる性能の特性を選ぶのがファミリー。必要なリソース量を選ぶのがサイズ。

03

画面・コマンド・コードから同じAWSへ

最初は画面で1台を起動する。それが毎日の作業になったらコマンドにする。アプリの中から操作したくなったらコードに組み込む。使い方は変わっても、その先ではAWSの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一覧を取得

APIはソフトウェア同士がやり取りするための仕様です。Consoleはブラウザー、CLIはコマンド、SDKはPythonなどのプログラムから呼び出します。CLIは、ローカル端末やCLIが用意されたAWS CloudShellから利用できます。

ここで押さえる見た目が違う3つの入口が、AWS APIへの操作につながる。

04

個の能力と、チームで分ける能力

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には、複数台に仕事を分けられるアプリ設計が必要です。

スケーラビリティは、負荷が増えても処理能力を拡張できる性質。伸縮性は、混んだときに増やして、落ち着いたら減らせる性質です。常にピーク人数を動かし続けるより、必要な容量へ調整します。

増減の判断には状況の観測が必要です。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%と台数は学習用の例です。

ここで押さえる観測するCloudWatch、増減するAuto Scaling。役割を分けて覚える。

05

仲間を増やしたら、配置も考える

サーバーを複数台にした。でも、その全員が同じ場所の障害に巻き込まれたら、処理は止まってしまいます。台数とは別に、どこへ置くかを考えます。

同じ入口から、 別々の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(Availability Zone)はその中の独立した配置単位で、1つ以上のデータセンターから構成されます。ネットワークを区切ったサブネットは1つのAZに属し、EC2はそこへ配置。複数AZへ分散すると、配置場所の障害に備えやすくなります。

高可用性

障害時もサービスを継続しやすい性質。配置を分け、残った側で処理できる容量も確保。

ELB

リクエストを複数のターゲットへ分散。ALBはWeb向けの種類。基盤の保守はAWSが担当。

ELBが受け付けたリクエストを分散し、ヘルスチェックで状態を見ます。通常は正常なターゲットへ送ります。Auto Scalingとの連携を設定すれば、新しいインスタンスも分散先へ登録できます。

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

内部ELBは、フロントエンドから見えるバックエンドの入口を共通のDNS名にします。個別アドレスの増減を隠せますが、相手の応答を待つ依存は残ります。EC2以外にも、データベース・セッション保存先などの単一障害点を見直します。

ここで押さえる強くする、増やす、場所を分ける、仕事を振り分ける。それぞれ別の設計。

06

受付は先へ、重い処理は後へ

注文は受け付けたい。でも配送処理が忙しくて、毎回その終了を待っていたら受付まで詰まる。そんなときは「依頼を渡す」と「実行を終える」のタイミングを分けます。

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

Amazon SQS · キュー

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

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

Amazon SNS · Pub/Sub

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

注文受付アプリ 「注文確定」イベントを発行
SNSトピック 購読先へファンアウト
配送用SQS 配送処理へ
分析用SQS 分析処理へ
矢印はメッセージが進む方向。SQSの受信はワーカーがポーリングします。複数のワーカーは同じ仕事を分担し、SNSの複数購読先はそれぞれ同じイベントを受け取ります。

SQSは処理待ちの仕事を保存するキュー。ワーカーがポーリングして取りに行きます。SNSはイベントを複数の購読先へ配るトピック。Pub/Sub(発行・購読)で配送・分析などへ同じイベントを届けます。

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

SNSから用途別のSQSへつなげば、配送と分析がそれぞれ自分のペースで進めます。メッセージの中身がペイロードで、例えば注文IDや配送先です。相手の状態や内部実装への依存を減らすことが疎結合。直接通信をすべて悪い設計と決めつける話ではありません。

ここで押さえる受付済みと処理完了は別。ためるSQSと、配るSNSを組み合わせる。

07

必要な量を、必要な契約で使う

使わないサーバーを稼働させ続けると、容量も費用も余ります。ただ、減らせばすべての支払いが消えるとは限りません。リソースの増減と契約を分けて見ましょう。

利用パターンと購入方法
選択肢 考え方 向いている状況 / 注意点
オンデマンド 長期の利用コミットなしで使う 試作、短期利用、需要が読めない処理。課金単位はOSなどで異なる
Savings Plans 1年・3年の一定利用額($/時)を約束し、対象利用を割引 安定した利用。Compute Savings PlansはEC2に加えLambda・Fargateにも適用。EC2 Instance Savings Plansは対象が限定される
Reserved Instances 1年・3年の契約で、条件に合うインスタンス利用を割引 予測可能な継続利用。条件や支払い方法で割引が変わる。すべてがキャパシティ予約を伴うわけではない
Spot Instances 余剰キャパシティを割安で利用 再実行できるバッチなど。中断を前提に設計する
Dedicated Hosts
(専有ホスト)
物理サーバーを専有し、配置を制御 ソフトウェアのライセンス要件や規制要件に対応

利用が読めないうちはオンデマンド。安定した利用額が見えたらSavings Plans、特定条件の継続利用にはReserved Instancesも候補です。Compute Savings PlansはEC2に加えLambda・Fargateの対象利用にも適用し、EC2 Instance Savings Plansは対象が限定されます。専有ホストはライセンスや規制などの要件に応じて物理サーバーを専有する別の選択です。

ここで押さえる価格だけではなく、継続利用の約束や、中断してもよいかまで含めて選ぶ。

08

例えを外して、AWSの言葉で話してみる

例えは入口です。最後はサービス名と役割だけで説明できるか、次の問いで確かめてみましょう。

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

参照した公式資料を開く

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

比較ページへ戻る →