クラウドとは何か
物理機器を自分で用意する場合とクラウドを比べ、ソフトウェアから資源を作る仕組みを理解します。
このレッスンのメニュー
Webサイトを公開するには、アプリを動かすコンピューター、データを置く場所、利用者とつなぐネットワークが必要です。 自分で物理サーバーを用意する場合は、機器を購入し、設置し、配線してからOSやアプリを入れます。
クラウドでは、クラウド事業者が用意したコンピューター、データの保存場所、ネットワークなどを、必要なときに借りて使えます。 利用者は物理機器を設置せず、管理画面から必要な大きさや数を指定します。
管理画面で「作成」を押すと、クラウド事業者のソフトウェアへ作成の依頼が送られます。 ソフトウェアから同じ依頼を送るための窓口をAPI(Application Programming Interface)と呼びます。 管理画面も、その裏側ではAPIを使っています。
仮想マシン(Virtual Machine、VM)は、物理サーバーの中にソフトウェアで作る、一台のコンピューターとして扱える環境です。 CPU、メモリ、ディスク、ネットワーク機器に相当する資源が割り当てられ、その中でLinuxなどのOSを起動できます。
仮想マシンなどを作る管理ソフトウェアを誰が運用するか
サーバーの仮想化に、ソフトウェアで制御するネットワークとストレージを組み合わせると、仮想マシン、仮想ネットワーク、仮想ディスクをプログラムから作れます。 利用者から依頼を受け取り、空いている物理サーバーを選び、ネットワークとディスクを接続するソフトウェア群をコントロールプレーンと呼びます。
自社で仮想化基盤を作る場合は、物理機器だけでなく、仮想マシンを動かす仕組み、仮想ネットワーク、仮想ストレージ、API、認証も自社で運用します。 社内向けクラウドでは、基盤チームがコントロールプレーンを運用し、ほかのチームへ共通のAPIを提供します。 パブリッククラウドでは、クラウド事業者が設備とコントロールプレーンを運用します。
管理画面でボタンを押しても、その裏ではクラウド事業者のAPIへ依頼が送られます。 同じ依頼をコマンドやプログラムから送れば、作成や削除を自動化できます。
IaC(Infrastructure as Code)は、必要な仮想マシン、ネットワーク、ディスクを設定ファイルへ書き、その内容をAPIへ反映する方法です。 ここでいうCodeには、インフラの構成を人とソフトウェアの両方が読めるファイルで表すことも含まれます。 設定ファイルをGitで管理すれば、いつ、誰が、どの構成へ変えたのかを確認できます。
利用者は、CPUやメモリの大きさ、ネットワークの範囲、ディスク容量を指定して作った仮想的な資源を操作します。 設備の購入を待たず、同じ設定ファイルから検証環境を作り直せます。
クラウドサービスによって事業者へ任せる範囲が変わる
同じクラウドでも、利用者が仮想マシンのOSから管理するサービスと、完成したアプリをそのまま使うサービスがあります。 どこから上を利用者が管理するかによって、サービスの種類を分けます。
IaaS(Infrastructure as a Service)では、事業者が物理設備と仮想化基盤を運用し、利用者が仮想マシン内のOS(ゲストOS)より上を運用します。 利用者はOSを更新し、アプリとデータを管理します。
PaaS(Platform as a Service)では、アプリを動かすOSや実行環境も事業者が管理します。 利用者は自分のアプリとデータを用意し、サービスの設定を行います。
SaaS(Software as a Service)では、事業者が用意した完成済みのアプリを利用します。 Webメールやオンラインの文書作成サービスが例です。 利用者は保存するデータ、利用者アカウント、共有範囲などを管理します。
| 種類 | 事業者が管理する主な範囲 | 利用者が管理する主な範囲 |
|---|---|---|
| IaaS | 物理設備、仮想化の仕組み | OS、アプリ、データ |
| PaaS | 物理設備、仮想化、OS、アプリの実行環境 | アプリ、設定、データ |
| SaaS | 物理設備からアプリまで | アカウント、共有範囲、保存するデータ |
事業者と利用者が管理する範囲を分ける
事業者と利用者がそれぞれ管理する範囲は、選んだサービスによって変わります。 IaaSでは利用者がゲストOSを更新し、SaaSでは事業者がアプリとその実行環境を更新します。
どのモデルでも、利用者には次の判断が残ります。
- 誰にどの権限を与えるか
- どのデータを保存し、暗号化し、いつ消すか
- 外部へどの通信を許可するか
- どの障害まで耐え、どこから復旧するか
- どの指標を監視し、いくらまで使うか
サービスを選ぶときは、機能一覧より先に「障害時に誰が直す層か」「こちらに残る設定は何か」を確認します。
複数の設備へ分け、一か所の故障に備える
リージョンは、クラウド事業者が定めた地理的な提供単位です。 リージョン内は複数のアベイラビリティゾーン(AZ)に分かれることがあります。
複数AZへ配置すれば、単一AZの障害へ備えられます。 ただし、データ複製、切り替え、AZ間通信の費用と遅延が加わります。 二か所へ置いただけでは、アプリが片方の障害を検知して処理を続けられる保証はありません。
仮想マシンの大きさを選ぶ
クラウドサービスでは、作成した仮想マシンなど、一つの実行単位をインスタンスと呼ぶことがあります。 仮想マシンの大きさはCPUだけで選びません。 メモリ、ディスク性能、ネットワーク帯域、起動時間、料金を仕事の性質に合わせます。
最初から大きな構成を予想するより、小さく動かして利用率と待ち時間を測り、急な負荷の増加も処理できる大きさへ調整します。 台数を自動で増減するオートスケールにも、新しい仮想マシンが利用可能になるまでの時間があります。 予想される負荷の増加より早く追加できるよう、起動時間を含めて増やし始める条件を決めます。
このレッスンは完了
このページで扱った流れを確認したら、次の内容へ進みます。