前書き

クラウドホスティングは、オンデマンドで作成、変更、および破棄できるオンライン仮想サーバーを使用する方法です。 クラウドサーバーには、ホストされている物理サーバーによってCPUコアやメモリなどのリソースが割り当てられ、開発者が選択したオペレーティングシステムと付属ソフトウェアで構成できます。 クラウドホスティングは、Webサイトのホスト、電子メールの送信と保存、およびWebベースのアプリケーションと他のサービスの配信に使用できます。

このガイドでは、仮想化の仕組み、仮想環境内のコンポーネント、他の一般的なホスティング方法との比較など、クラウドホスティングに関連する基本的な概念について説明します。

「クラウド」とは何ですか?

「クラウド」とは、インターネットに接続されたサーバーを指す一般的な用語で、有料のリースを通じて、またはソフトウェアまたはプラットフォームサービスの一部として、公共で使用できます。 クラウドベースのサービスは、Webホスティング、ファイルのホスティングと共有、ソフトウェア配布など、さまざまな形をとることができます。 「クラウド」は、クラウドコンピューティングを指す場合にも使用できます。クラウドコンピューティングとは、リンクされた複数のサーバーを使用してタスクのワークロードを共有することです。 クラウドコンピューティングは、単一の強力なマシンで複雑なプロセスを実行する代わりに、多くの小さなコンピューターにタスクを分散します。

その他のホスティング方法

クラウドホスティングは、今日の顧客や開発者が利用できる多くの異なるタイプのホスティングの1つにすぎませんが、それらの間にはいくつかの重要な違いがあります。 従来、予算とトラフィックが少ないサイトとアプリは共有ホスティングを使用し、より厳しいワークロードは専用サーバーでホストされていました。

*共有ホスティング*は、小規模でシンプルなサイトを立ち上げて運用するための最も一般的で手頃な方法です。 このシナリオでは、数百または数千のサイトが、メモリやCPUなどのサーバーリソースの共通プールを共有しています。 サイトの基盤となるソフトウェアへのアクセスはサーバーの共有性により非常に制限されているため、共有ホスティングは最も基本的で柔軟性のない機能と価格体系を提供する傾向があります。

*専用ホスティング*は、物理サーバーマシンが単一のクライアントに販売またはリースされる場合です。 開発者はサーバーのハードウェア、オペレーティングシステム、ソフトウェア構成を完全に制御できるため、これは共有ホスティングよりも柔軟です。 専用サーバーは、エンタープライズソフトウェアやソーシャルメディア、オンラインゲーム、開発プラットフォームなどの商用サービスなど、より要求の厳しいアプリケーションの間で一般的です。

仮想化の仕組み

クラウドホスティング環境は、アプリとWebサイトをホストできる仮想サーバーと、仮想サーバーを管理する物理ホストの2つの主要部分に分けられます。 この仮想化は、クラウドホスティングの機能と利点の背後にあるものです。ホストと仮想サーバーの関係は、他のホスティング方法では利用できない柔軟性とスケーリングを提供します。

仮想サーバー

今日のクラウドホスティングの最も一般的な形式は、仮想プライベートサーバー(VPS)の使用です。 VPSは、独自のオペレーティングシステムを備えた実際のコンピューターのように動作する仮想サーバーです。 仮想サーバーはホストによって割り当てられたリソースを共有しますが、それらのソフトウェアは十分に分離されているため、1つのVPSでの操作は他のVPSに影響しません。

仮想サーバーは、物理ホストのハイパーバイザーによって展開および管理されます。 各仮想サーバーには、ハイパーバイザーによってインストールされたオペレーティングシステムがあり、ユーザーはソフトウェアを追加できます。 多くの実際的な目的で、仮想サーバーの使用は専用物理サーバーと同じですが、仮想サーバーが同じホスト上の他のサーバーと物理ハードウェアリソースを共有するため、パフォーマンスが低下する場合があります。

ホスト

リソースは、ホストされている物理サーバーによって仮想サーバーに割り当てられます。 このホストは、ハイパーバイザーと呼ばれるソフトウェアレイヤーを使用して、その制御下にある仮想サーバーにリソースを展開、管理、および付与します。 「ハイパーバイザー」という用語は、ハイパーバイザー(およびその仮想サーバー)がインストールされている物理ホストを指すためによく使用されます。

ホストは、仮想サーバーの起動時に、メモリ、CPUコア、およびネットワーク接続の割り当てを担当します。 複数の仮想サーバーが同じ物理コアを使用している可能性があるため、ハイパーバイザーの継続的な義務は、仮想CPUコアと物理コアの間のプロセスをスケジュールすることです。 プロセススケジューリングの選択方法は、異なるハイパーバイザー間の主な違いの1つです。

ハイパーバイザー

現在、クラウドホストで使用できる一般的なハイパーバイザーソフトウェアがいくつかあります。 これらの異なる仮想化方法にはいくつかの重要な違いがありますが、それらはすべて、ホストが必要に応じて仮想サーバーを展開、保守、移動、および破棄するために必要なツールを提供します。

「カーネルベースの仮想マシン」の略である* KVM *は、Linuxカーネルに組み込まれた仮想化インフラストラクチャです。 アクティブ化されると、このカーネルモジュールはLinuxマシンをハイパーバイザーに変え、仮想サーバーのホストを開始できるようにします。 KVMは仮想ホスティングに使用されるカーネルコンポーネントを作成またはエミュレートする必要がないため、この方法は他のハイパーバイザーの通常の動作とは対照的です。

  • Xen *は、今日使用されている最も一般的なハイパーバイザーの1つです。 KVMとは異なり、Xenはマイクロカーネルを使用します。これは、ホストのカーネルを変更せずに仮想サーバーをサポートするために必要なツールを提供します。 Xenは、2つの異なる仮想化方法をサポートしています。ハードウェアをエミュレートする必要はないが、仮想サーバーのオペレーティングシステムに特別な変更を加える準仮想化と、特殊なハードウェア機能を使用して仮想サーバーを効率的にエミュレートするハードウェア支援仮想化変更されていないオペレーティングシステムを使用できます。

  • ESXi *は、VMwareが提供するエンタープライズレベルのハイパーバイザーです。 ESXiは、ホストに基盤となるオペレーティングシステムが必要ないという点で独特です。 これは「タイプ1」ハイパーバイザーと呼ばれ、ハードウェアと仮想サーバーの間に「仲介者」がいないため、非常に効率的です。 ESXiなどのタイプ1ハイパーバイザーでは、ハイパーバイザー自体がオペレーティングシステムとして機能するため、ホストにオペレーティングシステムをロードする必要はありません。

  • Hyper-V *は、Windowsサーバーを仮想化する最も一般的な方法の1つであり、Windows Serverのシステムサービスとして利用できます。 これにより、Hyper-Vは、Windowsソフトウェア環境で作業する開発者にとって一般的な選択肢になります。 Hyper-VはWindows Server 2008および2012に含まれており、Windows Serverの既存のインストールなしでスタンドアロンサーバーとしても利用できます。

クラウドホスティングを選ぶ理由

仮想化によって提供される機能は、クラウドホスティング環境に適しています。 仮想サーバーは、広範囲のハードウェアリソース割り当てで構成でき、多くの場合、時間の経過とともにニーズが変化するため、リソースを追加または削除できます。 一部のクラウドホストは、ダウンタイムがほとんどないかまったくない状態で仮想サーバーをあるハイパーバイザーから別のハイパーバイザーに移動したり、ノードに障害が発生した場合の冗長性のためにサーバーを複製したりできます。

カスタマイズ

開発者は、仮想環境を制御できるため、VPSでの作業を好むことがよくあります。 Linuxを実行するほとんどの仮想サーバーは、デフォルトでルート(管理者)アカウントまたは `+ sudo +`特権へのアクセスを提供し、開発者が必要なソフトウェアをインストールおよび変更できるようにします。

この選択の自由は、オペレーティングシステムから始まります。 ほとんどのハイパーバイザーは、LinuxやBSDなどのオープンソースソフトウェアからWindowsなどのプロプライエタリシステムまで、ほぼすべてのゲストオペレーティングシステムをホストできます。 そこから、開発者は作業に必要なビルディングブロックのインストールと構成を開始できます。 クラウドサーバーの構成には、Webサーバー、データベース、メールサービス、または開発済みで配布準備の整ったアプリが含まれる場合があります。

スケーラビリティ

クラウドサーバーは拡張性に非常に柔軟です。 スケーリング方法は、水平スケーリングと垂直スケーリングの2つの広範なカテゴリに分類されます。 ほとんどのホスティング方法は、何らかの方法でスケーリングできますが、クラウドホスティングは、水平方向と垂直方向の両方にスケーリングできるという点で独特です。 これは、クラウドサーバーが構築されている仮想環境によるものです。そのリソースはより大きな物理プールに割り当てられているため、これらのリソースを調整したり、仮想イメージを他のハイパーバイザーに複製したりするのは簡単です。

*「スケーリング」と呼ばれることの多い水平スケーリング*は、クラスター化システムにノードを追加するプロセスです。 これには、トラフィックをより適切に管理するためのWebサーバーの追加、待機時間の短縮のためのリージョンへの新しいサーバーの追加、データ転送速度の向上のためのデータベースワーカーの追加が含まれます。 CoreOS、Docker、Couchbaseなどの多くの新しいWebユーティリティは、効率的な水平スケーリングを中心に構築されています。

垂直スケーリング、つまり「スケールアップ」とは、単一のサーバーが追加のリソースでアップグレードされる場合です。 これは、使用可能なメモリの拡張、より多くのCPUコアの割り当て、またはそのサーバーの容量を増加させる他のアップグレードである可能性があります。 これらのアップグレードは通常、データベースワーカーなどの追加のソフトウェアインスタンスがそのサーバーで動作するための道を開きます。 水平スケーリングが費用対効果の高いものになる前は、増加する需要に対応するための選択肢として垂直スケーリングが選択されていました。

クラウドホスティングを使用すると、開発者はアプリケーションのニーズに応じてスケールできます。追加のVPSノードを展開することでスケールアウトするか、既存のサーバーをアップグレードすることでスケールアップできます。

結論

これで、ハイパーバイザーとそれらが担当する仮想サーバーとの関係や、クラウドホスティングが他の一般的なホスティング方法と比較する方法など、クラウドホスティングの仕組みを十分に理解できるはずです。 この情報を念頭に置いて、ニーズに最適なホスティングを選択できます。