変更要約: 初版(主題2.13・副主題2.13.1〜2.13.4に対応)
7.3クラウドサービス上のシステム構成
IaaS(Infrastructure as a Service)を使ったシステム構成の考え方を学びます。エフェメラルストレージと永続化ストレージの違い、固定IPとフローティングIP、テナントネットワークの分離、ファイアウォール・セキュリティグループによる通信制御、オブジェクトストレージ、メッセージングシステム・キュー、オートスケーラーによる自動的な台数調整を押さえます。
自前のデータセンターと違い、IaaSではサーバー・ストレージ・ネットワークの部品がAPI越しに調達できる資源として提供されます。前節までのHA・スケーラビリティの考え方はそのままに、クラウド特有の部品(消えるストレージ、テナント分離、オートスケーラー等)の性質を理解しておくことが実務・試験の両面で欠かせません。
7.3.1ストレージとIPアドレスの種類
- エフェメラルストレージ=インスタンスのライフサイクルに紐づく一時的なストレージ。インスタンスを削除(terminate)するとデータも消える。OSやキャッシュなど「消えても再構築できるもの」を置く。永続化ストレージ=インスタンスとは独立したライフサイクルを持ち、インスタンス削除後もデータが残る(ブロックストレージのボリューム等)。DBデータなど失いたくないものはこちらに置く。
- 固定IP=インスタンスに恒久的に割り当てられたIPアドレス。フローティングIP=インスタンスとは独立して確保し、必要なノードへ後から付け替えられるIPアドレス。障害時に正常なノードへフローティングIPを付け替えることで、IPアドレスを変えずにフェイルオーバーを実現できる。
7.3.2ネットワーク分離と付随サービス
- テナントネットワーク=クラウド事業者の物理設備を複数の利用者(テナント)で共有しつつ、利用者ごとに論理的に分離されたネットワーク空間を提供する仕組み。同居する他社のトラフィックが見えない・混ざらないことが前提。その上でファイアウォールやセキュリティグループ(インスタンス単位で適用する通信許可ルール。多くはステートフルで、許可した通信の戻りは自動的に通す)により、必要な通信だけを許可する。
- オブジェクトストレージ=ファイルをキーと値のペア(オブジェクト)としてHTTP API経由で扱うストレージ(画像・バックアップ・ログ等の大量データに向く。ブロックストレージのようなファイルシステムとしてはマウントしない)。
- メッセージングシステム・キュー=サービス間の連携を非同期に仲介する仕組み。送信側はキューにメッセージを置くだけで、受信側の処理速度や一時的な停止から送信側を切り離す(疎結合化)。オートスケーラー=CPU使用率等のメトリクスに応じてインスタンスの台数を自動的に増減させる仕組み。前節のスケールアウト・インをクラウド上で自動化したもの。
「エフェメラル=インスタンス削除で消える/永続化=インスタンスと独立して残る」の対比が最頻出です。「フローティングIPをつけ替えることでIPアドレスを変えずにフェイルオーバーできる」という利点も定番。「セキュリティグループはインスタンス単位・多くはステートフル(戻り通信は自動許可)」という性質、「オブジェクトストレージはファイルシステムとしてマウントするものではなくHTTP API経由のキー・バリュー」という区別も問われます。
IaaS設計の勘所は「何が消えて、何が残るか」を常に意識することです。Webサーバーのインスタンスはオートスケーラーによって負荷に応じて増減しますが、増減するインスタンスのエフェメラルストレージにDBのデータやユーザーがアップロードした画像を直接置いてしまうと、スケールインでインスタンスが削除された瞬間にデータが失われます。したがって、DBは永続化ストレージを使う独立したインスタンス(またはマネージドサービス)に、ユーザーアップロード画像はオブジェクトストレージに置く、という役割分担が定石です。障害時の切り替えでは、フローティングIPを使う設計にしておけば、異常が起きたノードから正常なノードへIPだけを付け替えることで、DNSの伝播待ちなしに即座にトラフィックを切り替えられます(固定IPだけの構成だと、ノードを丸ごと入れ替える際にIPアドレス自体を再設定する手間が発生します)。ネットワークの面では、同じ物理基盤を複数の顧客が使うクラウドだからこそテナントネットワークによる論理分離が前提になっており、その内側でさらにセキュリティグループを使い「Webサーバーには80/443番だけ許可」「DBサーバーにはWebサーバーからの3306番だけ許可」のように最小権限の通信ルールを重ねます。サービス間の連携が同期的なHTTP呼び出しだけだと、一方のサービスが遅延・停止したときに全体が引きずられて止まりますが、メッセージングシステム・キューを挟んで非同期化すると、受信側が一時的に処理できなくてもメッセージはキューに溜まり続け、送信側の処理は止まらないという耐障害性が生まれます。
| 概念 | 特徴 | 用途例 |
|---|---|---|
| エフェメラルストレージ | インスタンス削除で消える | OS・一時キャッシュ |
| 永続化ストレージ | インスタンスと独立して残る | DBデータ |
| 固定IP | インスタンスに恒久割当 | 通常のサーバー通信 |
| フローティングIP | 付け替え可能 | IP不変のフェイルオーバー |
ひっかけ: 「エフェメラルストレージにDBデータを置いても、インスタンスを削除しない限り安全」という説明は、スケールインや意図せぬ再作成でインスタンスが削除される可能性を無視しており危険な誤解です。DBのような失いたくないデータは永続化ストレージに置くのが原則です。また「固定IPを使えば障害ノードから正常ノードへ瞬時に付け替えられる」も誤り=付け替えが前提の仕組みはフローティングIPで、固定IPはインスタンスに固定されているため付け替えの発想自体がありません。
7.3.3この節のまとめ
- エフェメラル=インスタンスと運命を共にする/永続化=独立して残る。固定IP=恒久割当/フローティングIP=付け替え可能でIP不変フェイルオーバー
- テナントネットワーク+セキュリティグループで論理分離と最小権限通信。オブジェクトストレージ・キュー(非同期疎結合)・オートスケーラーがクラウド構成の定番部品
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. インスタンスを削除すると同時にデータも失われるストレージの種類はどれか?
Q2. 障害ノードから正常なノードへIPアドレスを変えずにフェイルオーバーしたい。利用すべき仕組みはどれか?
Q3. サービスAがサービスBへの同期的なHTTP呼び出しに依存しており、Bが一時的に応答不能になるとAも処理が止まってしまう。この結合を緩めるために有効な仕組みはどれか?

