クラウドの構成要素
- 24 分
クラウド コンピューティングではコンピューティング リソースを、ネットワーク経由でサービスとして使用できるよう提供しています。 もちろん、すべてのサービスで同じものが求められているわけではありません。 一部のクラウド ユーザーは、アプリケーションをビルドするために、未加工のインフラストラクチャにのみアクセスすることを希望します。 他のユーザーはインフラストラクチャにはまったく取り組まず、サービス プロバイダーが提供する Web サーバーなどのプラットフォームでアプリケーションを単純に開発および展開することを希望します。 さらに、いわゆる "ゼロフットプリント インストール" という、自分のコンピューターには何もインストールせず、ブラウザーを介してユーザーがアクセスするアプリケーションを展開する手段としてクラウドを使用するユーザーもいます。これら各シナリオがクラウド サービス モデルを構成します。 そして各サービス モデルには名前が付いており、これらはクラウド コンピューティングの用語として広く知られています。
サービス モデルについて説明する前に、これらのさまざまなサービス モデルを利用してクラウド サービスを提供する基盤を構成しているハードウェアとソフトウェアのレイヤーについて考えてみましょう。
クラウドの構成要素
図 1.5 では、クラウド コンピューティングを、アプリケーション ソフトウェア、開発プラットフォーム、リソース共有、インフラストラクチャの 4 つの抽象的なレイヤーに有用に分割しています。 インフラストラクチャ レイヤーには、データ センターの物理リソースが含まれます。 リソース共有レイヤーでは、ハードウェアとソフトウェアを組み合わせ、ある程度の分離を提供しながら、物理リソースを共有できるようにしています。 開発プラットフォーム レイヤーでは、クラウド アプリケーションの機能がサポートされます。 最後のアプリケーション ソフトウェア レイヤーでは、アプリケーション自体がホストされます。
図 1.5:クラウド コンピューティングの構成要素。
4 つのレイヤーは、次のようにさらに定量化することができます。
アプリケーション ソフトウェア:このスタックの最上位のレイヤーであるアプリケーション ソフトウェアは、通常はエンド ユーザーが活用するシステム コンポーネントです。
開発プラットフォーム:次の開発プラットフォームのレイヤーでは、アプリケーション開発者は、クラウド プロバイダーの API (アプリケーション プログラミング インターフェイス) を使用してアプリケーション ソフトウェアを記述できます。 各クラウド プラットフォームには、開発者がクラウド ストレージへのアクセス、ユーザー認証、およびその他の必要なタスクの実行に使用できる呼び出し可能な API が用意されています。
リソース共有:3 番目のレイヤーであるリソース共有メカニズムでは、クラウドの次の重要ないくつかのアイデアが具現化されています。
- ソフトウェア、コンピューティング、ネットワーク、ストレージ サービスが提供されます。
- セキュリティ、リソース、障害分離が備わった 1 台のサーバーで、(仮想マシンなどの) 複数のハードウェア イメージと (オペレーティング システムなどの) システム イメージを共存させて実行できる、共有環境が実現されます。
- 物理サーバーを仮想サーバーに統合します (仮想サーバーは少ない物理サーバー上で稼働します)。
- ユーザーのリソースおよびサービスに対する需要に迅速に対応する、機敏性と弾力性が提供されます。
これらのアイデアは、複数の仮想マシンが 1 台の物理サーバーでホストされている場合でも、それらが独立した物理マシンであるかのように動作するよう作成された、ソフトウェアとファームウェアの組み合わせに依存する仮想化によって、通常は提供されます。
インフラストラクチャ: 物理リソースは最下位のレイヤーであり、クラウド コンピューティングでは主にクラウド プロバイダー側に展開されます。 この広範なリソース クラスには次が含まれます。
- (ユーザーのワークステーションに対して) エンタープライズ コンピューティング向けに設計されたコンピューターである、通常はサーバーであるコンピューティング リソース。 これらは、通常スペースの効率性のためにラックに取り付けられています。
- クラウドのデータを保持するストレージ リソース。これらのリソースの使用は通常、使用したストレージのギガバイトまたはテラバイト単位での課金など、ボリュームで課金されます。
- サーバー間およびサーバーおよびクライアント間での通信を可能にするネットワーク リソース。
- コンピューティング、ネットワーク、および記憶域のインフラストラクチャを管理するソフトウェア。
次に、人気のあるクラウド サービス モデルと、上の抽象化がそれの提供をどのように容易にするかについて説明します。
クラウド サービス モデル
クラウド プロバイダーが提供するサービスは、サービス モデルと呼ばれる次の 3 つのカテゴリに分類されます。
- サービスとしてのインフラストラクチャである IaaS。
- サービスとしてのプラットフォームである PaaS。
- サービスとしてのソフトウェアである SaaS。
違いは図 1.6 のとおりです。 従来の (クラウド以外の) コンピューティング環境では、ユーザーがハードウェアとソフトウェアを所有し、展開と保守を行います。 サーバーに RAM を追加する必要がある場合、ユーザーがそれをインストールします。オペレーティング システムに修正プログラムを適用する必要がある場合、それもユーザーが行います。 それに対し IaaS では、仮想マシンの形式で仮想化されたハードウェアをクラウド サービス プロバイダーが提供します。 ユーザーは数個のコマンドまたはボタン クリックのみで、オペレーティング システムが備わった仮想マシンを作成できます。 オペレーティング システムへの修正プログラムの適用と、仮想マシンで実行するすべてのソフトウェアのインストールおよび保守はユーザーの責任です。 しかし、ハードウェアはもう保守する必要がありません。
図 1.6:クラウド サービス モデル。
PaaS はさらに一歩進んで、ユーザーがインストールおよび保守するアプリケーションを開発および実行するためのプラットフォームを提供します。 プラットフォーム自体の保守は、クラウド プロバイダーが担うことが重要です。 PaaS クラウド サービスのよい例は、(Windows または Linux の) オペレーティング システム、IIS (インターネット インフォメーション サービス) などの Web サーバー、Web サイトと Web アプリをホストする Node.js、PHP、ASP.NET Core などのランタイム スタックが完備された 1 台以上の仮想マシンを提供する Azure App Service です。 これでは、自動スケーリングと組み込みの負荷分散も提供されます。 つまり、これは Web アプリをホストする完全なプラットフォームであり、ユーザーはハードウェアやソフトウェアのインストールと維持ではなく、アプリの作成に集中できます。
SaaS は特定のタスクを遂行する完全に管理されたプラットフォームです。 SaaS の例は、自分の PC には何もインストールせず、ブラウザーを使用して接続し、電子メールのタスクを実行する Web メールアプリです。 使用されているサーバーの種類、実在するか仮想か、それに何がインストールされているかを、通常、ユーザーは知りませんし、気にすることもありません。 ソフトウェアの更新や修正プログラムの適用などのタスクは、クラウド プロバイダーが実行します。そのために、フル マネージドという用語があります。
これらの用語をさらに詳しく調べ、それが最新のクラウド プラットフォームで利用できるサービスにどのように当てはまるかを確認し、サービス モデルを選択する基準を理解しましょう。
サービスとしてのインフラストラクチャのモデル
サービスとしてのインフラストラクチャ
(定義) IaaS (サービスとしてのインフラストラクチャ) とは、クラウド プロバイダーが、通常は仮想マシンの形式で、コンピューティング リソースをクライアントに提供するクラウド コンピューティングのモデルです。
IaaS モデルでは、CPU、メモリ、ディスク、ネットワーク帯域幅など、さまざまな構成でユーザーが選択したコンピューティング リソースを、プロバイダーが仮想マシン ("インスタンス" とも呼ばれます) の形式で提供します。 VM がプロビジョニングされると、IaaS ユーザーがリモートからそれに接続して、プラットフォームおよびアプリケーションをインストールできるようになります。 ソフトウェアの開発と展開という意味では、このモデルが IaaS ユーザーにとって最も柔軟です。 ユーザーはサーバー、ソフトウェア、データ センターの領域、またはネットワーク機器を購入するのではなく、完全にアウトソーシングされたサービスとしてこれらのリソースをオンデマンドで借ります。
IaaS には次の特性があります。
- コンピューティング リソースは、ユーザーにサービスとして提供されます。
- IaaS プロバイダーは、IaaS のユーザーが展開しているリソースをスケーリングできるツールを用意します。
- IaaS プロバイダーは、(通常は 1 時間単位で計算される) ユーティリティ課金モデルに従って、異なるリソースを異なる料金で通常提供します。
- 複数のユーザーが同じ物理リソースを共有します。
IaaS の例
IaaS 製品を提供するクラウド プラットフォームの例には、アマゾン ウェブ サービス、Microsoft Azure、Google、Rackspace があります。 IaaS で商業的に最初に成功した製品の 1 つは、AWS の Elastic Compute Cloud (EC2) でした。 AWS EC2 は、世界に分散されるさまざまなデータ センターからインスタンスを賃貸します。 ユーザーは、1 月あたりのコストが数ドルの低メモリの 1 つの CPU が搭載された仮想マシンから、1 月あたりのコストが数百ドルの、マルチコアで高パフォーマンスの GPU で駆動されたインスタンスまでのさまざまな種類のインスタンスから選択できます。 Azure の仮想マシンサービスも類似しており、Windows はもちろん Linux もサポートしています。 2018 年 9 月時点で、Azure の既存の仮想マシンの約半分は、Linux 仮想マシンでした 1。
価格モデル
通常、IaaS の料金は時間単位で課金されます。 たとえば、EC2 は、コンピューティング、メモリ、ストレージ、帯域幅が異なる仮想化された OS インスタンスとしてコンピューティング リソースのスペクトラムを提供しています。 これを記述している時点で、1 つの仮想 CPU と 1 GB のメモリを特性とする Amazon EC2 t2.micro インスタンスの Linux での実行には 1 時間あたり約 1.2 セントかかります。 Azure のこれとほぼ同等な B1S 仮想マシンでのコストは、1 時間あたり約 0.8 セントです。 制限内では、両方を最大 12 か月間無料で使用できます。
また、クラウド プロバイダーは、日割り計算または日割り計算以外での請求を選択できます。 日割り計算の場合、1 時間に満たない時間は部分的に請求されますが、日割り計算ではない場合は、1 時間に満たない時間には 1 時間分の料金が請求されます。 この違いは、IaaS ユーザーがバースト処理のために短時間に多数のインスタンスを必要とした場合に顕著になります。 現在、一般的なクラウド プロバイダーは、ほとんどの仮想マシンに対して 1 秒単位で課金しています。
IaaS のユース ケース
IaaS は、さまざまな状況に適しています。
- サイトのインフラストラクチャに投資する資本がない新しい組織の場合。
- 組織が IT リソースを迅速に拡張する必要がある場合 (インターネットのスタートアップ企業など)。
- 一時的なプロジェクトまたは一時的な構造のニーズがある場合 (組織が限られた時間に大量のコンピューティング能力を必要とする場合)。
- 組織が既存の物理サーバーまたは仮想サーバーの "リフトアンドシフト" を実行してオンプレミスのワークロードをクラウドに移行する場合
IaaS は、次の場合に最適な選択肢ではない可能性があります。
- 規制に対するコンプライアンスにより、ワークロードをオフプレミスで実行できない。
- アプリケーションに厳格なサービス品質 (QoS) 要件がある。
- 組織に、IT ニーズを満たすために既存の社内カスタマイズ インフラストラクチャがある。
サービスとしてのプラットフォーム モデル
サービスとしてのプラットフォーム
(定義) サービスとしてのプラットフォーム (PaaS) は、基盤となるハードウェアとソフトウェアの購入、インストール、およびメンテナンスの複雑さのない、データベース サーバーや Web サーバーなどのソフトウェア プラットフォームを提供するモデルです。
PaaS によって、インストールとメンテナンスの多くの負担がユーザーからクラウド プロバイダーに移行されます。 Azure SQL Database は、本質的にクラウドでの PaaS バージョンの Microsoft SQL Server であり、IaaS と PaaS を比較するための便利な基準点として機能します。 IaaS シナリオで SQL Server を実行するには、仮想マシンをデプロイしてからリモートで接続し、SQL Server をインストールします。 当然ながら、ユーザーが SQL Server ライセンスを取得し、SQL Server パッチを適用して最新の状態に保つ責任があります。 Azure SQL Database では、サービスのインスタンスを作成するだけで済みます。ライセンスとメンテナンスは組み込まれています。
PaaS オファリングはプロバイダーによって異なりますが、通常は次のようないくつかの基本的な機能を備えています。
- プラットフォームを使用および構成するための Web ベースのユーザー インターフェイス。
- 複数の同時ユーザーが同じツールを利用するマルチテナント アーキテクチャ。
- 必要に応じてプラットフォームを動的に拡張できる組み込みのメカニズム。
PaaS の例
Google App Engine は PaaS の一例です。 開発者は Google の API を使用して、Google のインフラストラクチャ上で動作する Web およびモバイル アプリケーションを作成できます。 Azure App Service はもう 1 つの例です。AWS Elastic Beanstalk と同様に、Go、Java、.NET、Node.js、PHP、Python、Ruby で開発されたアプリケーションをホストするマネージド プラットフォームを提供します。 クラウド プロバイダーでは、多くの場合、MySQL、Oracle、SQL Server などの一般的なデータベースも PaaS サービスとして提供しています。
PaaS の最近のイノベーションの 1 つは "サーバーレス コンピューティング" であり、クラウド プロバイダーは、コードを実行するためのフル マネージド プラットフォームを提供しています。 たとえば、Azure Functions では、C#、JavaScript、Java、または Python で記述されたコードを Azure にアップロードし、定義済みのトリガーに応答して実行できます。 Amazon は、Google の Google Cloud Functions と同様に、AWS Lambda の形式で同様のサービスを提供しています。
さらに、人気が急上昇している PaaS の例として、クラウドで Docker コンテナーを実行するものがあります。 この場合のプラットフォームは、事前に構築された Docker スタックです。 この方法でコンテナー化されたアプリケーションを実行すると、サーバーを展開し、Docker ランタイムをインストールして保守する必要がなくなります。 コンテナー サービスでコンテナー レジストリ内のコンテナー イメージをポイントするだけで、後はクラウド プロバイダーに任せます。 最新のクラウド プラットフォームは、独自の Docker 互換コンテナー レジストリをサポートしています。これにより、コンテナー イメージと、それらを同じデータ センターで実行するコンテナーを併置することで、コンテナーの起動時間を短縮できます。
価格モデル
通常は時間単位で課金される IaaS 価格モデルとは異なり、PaaS は、通常、使用量に基づいて価格設定されます。 課金を簡素化し、コストを予測できるようにするために、クラウド プロバイダーは、多くの場合、特定の機能とリソース使用量を指定した時間単位または月単位の価格を含む "サービス レベル" を提供しています。
PaaS の発展に伴い、価格モデルも進化しています。 たとえば、Azure Functions、Amazon Lambda、および Google Cloud Functions は、関数が再度トリガーされるまでの待機に費やされた時間ではなく、関数が実行された時間に対してのみ支払いを行う従量課金制の価格モデルを提供しています。 比較的まれにしか発生せず、夜間バックアップや毎週の請求実行など、比較的短い期間実行される操作の場合、これはコストの観点から非常に有益です。
PaaS のユース ケース
PaaS は、次のような特定の種類のアプリケーションにとって魅力的なモデルです。
- 迅速なアプリケーション開発のシナリオ。
- ユーザーからのさまざまな負荷を処理するために Web ベースのインフラストラクチャを必要とするアプリケーション。
- 将来、再デプロイや他のプラットフォームへの移行が不要なアプリケーション。
PaaS が理想的ではない可能性があるシナリオがいくつかあります。次に例を示します。
- PaaS API は PaaS プロバイダーごとに異なる可能性があるため、アプリケーションがホストされる場所に関して移植性が高い必要がある場合。
- ベンダーのロックインにより、独自の言語または API が開発プロセスに影響を与えたり、将来的にトラブルを引き起こす可能性がある場合。
- アプリケーションのパフォーマンスで、基礎となるハードウェアとソフトウェアのカスタマイズを必要とする場合。
サービスとしてのソフトウェア モデル
サービスとしてのソフトウェア
(定義) サービスとしてのソフトウェア (SaaS) は、ソフトウェアがクラウドでホストされるソフトウェア配信モデルです。 インフラストラクチャ、プラットフォーム、およびソフトウェア自体はクラウド プロバイダーによって管理され、ソフトウェアはサービスとして使用されます。
SaaS は、クラウド プロバイダーがソフトウェアをインターネット サービスとして提供するモデルであり、ユーザー側でソフトウェアのインストールやメンテナンスを行う必要はありません。 SaaS アプリケーションがエンドユーザー アプリケーションの場合、ユーザーはブラウザーを使用してソフトウェアにアクセスします。 ブラウザーでは、SaaS アプリケーションの最新バージョンが動的かつ透過的に読み込まれます。
SaaS は、会計、コラボレーション、顧客関係管理 (CRM)、管理情報システム (MIS)、エンタープライズ リソース プランニング (ERP)、請求書発行、人事管理 (HRM)、コンテンツ管理 (CM)、サービス デスク管理など、多くのビジネス アプリケーションの一般的なソフトウェア配信モデルになりました。
SaaS では、プロバイダーはソフトウェアとインフラストラクチャを保守して実行します。 プロバイダーは定期的にソフトウェアを開発します。拡張機能は、すべてのユーザーがサービスにログインするたびに自動的に使用できるようになります。 また、サービスの使用から生じるアプリケーション データはクラウドに存在するので、ユーザーはどこからでも利用できます。
SaaS ソリューションの大部分は、マルチテナント アーキテクチャと呼ばれるものに基づいています。 このアーキテクチャでは、すべての顧客 ("テナント" と呼ばれます) に対して 1 つのバージョンのアプリケーションが 1 つの構成で使用されます。 サービスを適切にスケールできるように、プロバイダー側の複数のサーバーにインストールすることがあります。 動的スケールを利用することで、より多くのユーザーがサービスを使用できるようになり、サービスがさらに広まります。
SaaS の一般的な特性は次のとおりです。
- ソフトウェア サービスへの Web ベースのアクセス。
- ソフトウェアは、クラウド プロバイダーによって一元的に管理されます。
- ソフトウェアは、一対多のモデルで提供されます。この場合、"一" はクラウド プロバイダーであり、"多" はクラウド ユーザーです。
- クラウド プロバイダーは、ソフトウェアのアップグレードとパッチを処理します。
SaaS の例
Web メールは、SaaS の初期の例の 1 つです。 Web メールを使用すると、ブラウザーとインターネット接続を使用するユーザーはいつでもメールにアクセスできます。 Hotmail、Yahoo!、Gmail からのオファリングは非常に人気があります。 これらのサービスは、"フリーミアム" モデルに基づいています。この場合、基本サービスは無料であり、サブスクリプションがあると、より高度な機能を利用できます。 さらに、プロバイダーは、主にユーザーがサービスを使用するときに表示される広告から収入を得ます。
SaaS のもう 1 つの一般的な例は、Google ドライブや Microsoft 365 などのオンライン オフィス スイートであり、ユーザーはドキュメントをオンラインで作成、編集、共有できます。 Google は、個々のユーザーにフリーミアム モデルを利用しています。 Microsoft には、必要な機能と 1 か月あたりのユーザー数に基づく課金モデルがあります。
SaaS サービスは、Web UI を提供することでエンド ユーザーに直接サービスを提供するように構築されているとは限りません。 たとえば、Azure Stream Analytics とその AWS アナログである Amazon Kinesis Analytics は、アプリまたは IoT デバイスからデータ ストリーミングを取り込み、開発者は SQL クエリを使用してデータ ストリームから情報を抽出できます。 これらは、他の SaaS サービスに参加することにより、より大規模で、より洗練されたエンドツーエンド ソリューションを構成するためによく使用されます。
クラウド プロバイダーは、API (HTTP(S) プロトコルを使用してインターネット経由で呼び出され、アプリケーションの構成要素として機能する関数) を SaaS サービスとして提供することが徐々に増えています。 その一例は Azure の Computer Vision API です。これにより、開発者は写真内のオブジェクトを識別するコードを記述し、写真のキャプションと検索メタデータを生成し、写真内の顔を検出し、さらに人工知能 (AI) を使用できます。 Amazon は Rekognition と呼ばれる同様の API を提供していますが、Google はそのオファリングを Vision API と呼んでいます。 SaaS サービスの形式で提供されるインテリジェンス API により、ソフトウェア開発者は AI の専門家になることなく、アプリに AI を組み込み、クラウド コンピューティングの継続的な進化を実証できます。
価格モデル
ソフトウェア ライセンス モデル (先行ライセンス コストとオプションの継続サポート料金) で販売される従来のソフトウェアとは異なり、SaaS プロバイダーは、通常、月額または年額のサブスクリプション料金を使用してアプリケーションの価格を決定しています。 このモデルにより、SaaS は、クラウド コンピューティングの主な利点の 1 つであるソフトウェアの資本支出または先行コストの削減を達成できます。 通常、SaaS プロバイダーは、アプリケーションを使用するユーザー数などの使用パラメーターに基づいて課金します。
SaaS モデルを使用して配信された API の場合、通常、呼び出しごとに課金が実行されます。 多くの場合、クラウド プロバイダーは、1 か月に一定数の呼び出しまたはトランザクションを定額料金で提供します。また、しきい値を超えたアクティビティに対しては若干の割引率で請求します。
SaaS のユース ケース
SaaS は、次のような特定の種類のアプリケーションに適したモデルです。
- 非常に標準化されており、カスタム ソリューションを必要としないアプリケーション。 電子メールは、かなり標準化されたアプリケーションの好例です。
- モバイル販売管理ソフトウェアなど、リモート/Web/モバイル アクセスを必要とするアプリケーション。
- 特定のプロジェクトのコラボレーション ソフトウェアなど、短期間のニーズがあるアプリケーション。
- 1 か月に 1 回使用される税金や請求のソフトウェアなど、需要の急増が著しいアプリケーション。
ただし、SaaS が適切な選択肢ではない場合があります。次に例を示します。
- データへのオフライン アクセスを必要とするアプリケーション。
- 非常に多くのカスタマイズが必要なアプリケーション。
- ポリシーまたは規制によってデータが外部でホストされるのを防ぐアプリケーション。
- 既存の社内ソリューションがすべての組織のニーズを満たすアプリケーション。
リファレンス
- ZDNet (2018)。 「Linux now dominates Azure」 (現在、Asure では Linux が優勢)。 https://www.zdnet.com/article/linux-now-dominates-azure/
自分の知識をチェックする
フィードバック
このページはお役に立ちましたか?
いいえ
このトピックについてサポートが必要ですか?
このトピックの意図を把握したり、理解を深めたりするために Ask Learn を使ってみませんか?