MODULE 02 / COMPUTE & ARCHITECTURE

コンピューティングと、 変化に強いシステム

サーバーを用意するだけでは、システムは完成しません。
処理能力を選び、需要に合わせて増減し、障害の影響を小さくする。EC2を出発点に、その設計をつなげて学びます。

7つの学習セクション図解+比較表+復習公式資料確認:2026.10.04

このModuleで学ぶこと

01EC2の仕組みと性能・料金の選び方

02Console / CLI / SDKとAPIの関係

03監視・自動増減・負荷分散の役割分担

04SQS / SNSでサービスを疎結合にする

01

EC2は、 処理を動かす土台

Amazon EC2(Elastic Compute Cloud)は、必要なときにサーバーの処理能力を利用できるサービスです。起動した1台のサーバーをインスタンスと呼びます。LinuxやWindowsを選び、Webアプリケーション、データベース、バッチ処理などを実行できます。

物理サーバーの購入・設置を待たずに起動でき、必要がなくなれば停止・終了できます。OSやアプリケーションの設定、ネットワークのアクセス制御は利用者が行います。

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

物理サーバー · AWSが管理

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

仮想化

物理的なCPUやメモリを、独立した複数のコンピューターとして扱えるようにする技術。各インスタンスは自分のOSやアプリを実行します。

マルチテナント

複数の利用者が物理基盤を共有する形。共有していても、ほかの利用者のOSやデータを自由に見られるわけではありません。

02

性能とコストを、 用途から選ぶ

最初に考えるのは「何のリソースが必要か」です。CPUが必要な処理と、大量のデータをメモリに載せる処理では、適したサーバーが違います。用途に合う系統を選び、その中でサイズを決めると整理できます。

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

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

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

同じファミリーでも、サイズによってCPU・メモリなどの量が変わります。大きなサイズは必要な能力を増やせますが、料金も増えるため、実際の負荷を測りながら見直すことが大切です。ストレージの構成はタイプによって異なり、EBS(EC2で使う永続ストレージ)の容量は別に設定できます。

料金は「使い方」と「契約」で選ぶ

以下は料金・購入方法の代表例です。専有ホストは、割引方式というより物理サーバーを専有する配置方法であり、独立した選択軸です。

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

入口が違っても、 APIにつながる

APIは、ソフトウェア同士がやり取りするためのインターフェースです。AWSでは、リソースの作成・参照・変更などの操作をAPIで受け付けます。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一覧を取得

CLIはローカルのターミナルや、CLIがあらかじめ用意されたAWS CloudShellから利用できます。繰り返し作業をスクリプトにすると、手入力による設定のばらつきを減らせます。自動化しても、操作内容の確認は必要です。

公式資料:EC2の概要とアクセス方法 ↗
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が状態を観測し、EC2 Auto Scalingが設定したポリシーに従って台数を調整します。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

分散して、 止まりにくくする

複数台に増やすだけでは、1か所の障害にまとめて巻き込まれるかもしれません。高可用性(障害時もサービスを継続しやすい性質)を目指すなら、リージョン内の複数のAvailability Zone(AZ)に分散します。AZは、1つ以上の独立したデータセンターから構成される配置単位です。

リクエストを各サーバーへ振り分ける役割はElastic Load Balancing(ELB)が担います。図ではWeb用途のApplication Load Balancer(ALB)を例にしています。

同じ入口から、 別々の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にもサブネットの設定が必要です。

ELB:どこへ送るか

複数のターゲットへトラフィックを分散します。ヘルスチェックで状態を確認し、通常は正常なターゲットへ送ります。基盤のパッチ適用などはAWSが管理します。

Auto Scaling:何台動かすか

ポリシーに基づいて台数を増減し、不健全なインスタンスを置き換えます。ELBとの連携を設定すると、追加したインスタンスをターゲットへ登録できます。

公式資料:Auto ScalingとELBの連携 ↗

内部の通信にも、共通の入口を置ける

フロントエンドがバックエンド各台のアドレスを管理する代わりに、内部ELBのDNS名へリクエストを送ります。台数変更の影響を減らせます。ただし、同期通信では相手の応答を待つため、時間的な依存は残ります。

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

メッセージで、 実行する時刻を分ける

注文を受け付けるWebアプリが、その場で配送処理の完了まで待つ設計だと、配送側の遅延や障害が受付側にも伝わります。キューに処理依頼を保存すれば、受付と配送が同時に動いていなくても連携できます。

このように、相手の状態や内部実装への依存を減らす設計が疎結合です。直接通信すること自体が常に密結合というわけではなく、何にどの程度依存しているかが重要です。

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 → 各処理。イベントの配信と、処理待ちの保存を両立

SQS:受信しただけでは、処理完了ではない

メッセージの中身をペイロードと呼びます。例えば、注文IDと配送先を含むデータです。ワーカーが受信すると、そのメッセージは可視性タイムアウトの間、ほかのワーカーから見えなくなります。処理に成功したワーカーが削除しなければ、再び受信できるようになります。

公式資料:Standardキューの配信特性 ↗

SNS:受信先の数を、発行側から切り離す

SNSのPublish/Subscribe(発行・購読)では、トピックへ発行する側は、配送・分析などの購読先を個別に呼び出す必要がありません。新しい購読先を追加しても、発行側の処理を大きく変えずに連携先を増やせます。

07

役割の違いを、 言葉にしてみる

  • EC2:処理を実行する。ファミリーとサイズで特性・容量を選ぶ。
  • Console / CLI / SDK:AWS APIへ操作を届ける入口。
  • CloudWatch:状態を観測する。Auto Scaling:台数を制御する。
  • ELB:リクエストを分散する。複数AZ:配置場所の障害に備える。
  • SQS:仕事をためて処理時刻を分ける。SNS:イベントを複数先へ配信する。
Q1. EC2を増やしたのに、リクエストが1台へ集中する。何を考える?

台数を増やすAuto Scalingとは別に、リクエストを分散する仕組みが必要です。ELB、ターゲット登録、ヘルスチェックや振り分け設定を確認します。

Q2. 高性能なEC2を1台にすれば、高可用性になる?

1台の性能を上げても、その1台や配置場所が止まれば処理は止まります。複数AZに分散し、ほかの台へ処理を引き継げる構成と容量を考えます。

Q3. 配送処理が止まっても、注文の受付を続けたい。何を挟む?

SQSに処理依頼を保存し、配送ワーカーが後から受信します。受付側はSQSへの送信に成功する必要があり、保持期間内に処理を再開できることも必要です。受付成功と配送完了は別の状態として扱います。

Q4. 注文のイベントを、配送と分析の両方で処理したい。

SNSのトピックへ発行し、配送用と分析用のSQSをそれぞれ購読させます。各処理が独立したキューを持つため、別々のペースで処理できます。

08

確認に使った公式資料

本文は提供されたModule 2のトランスクリプトを再構成し、誤解しやすい箇所を補足しています。以下は補足を確認したAWS公式資料です(確認日:2026年10月4日)。サービスの仕様や料金は更新されるため、実際の利用前に最新版を確認してください。