適材適所でクラウドを使い分ける企業が増えている。ここで課題になるのがクラウドごとの違いだ。AWS(アマゾン・ウェブ・サービス)、Google Cloud Platform(GCP)、Microsoft Azureはサービスラインアップが似ているが、用語やサービスの構造、利用できる機能などに差異がある。本連載ではテーマ別に各クラウドの特徴を取り上げ、違いを浮き彫りにしていく。第7回から第9回は、最近注目されている技術である「コンテナ」と「サーバーレス」をテーマに解説する。第7回はMicrosoft Azureを取り上げる。

 クラウドを利用してアプリケーションを開発・運用する際に選べるアーキテクチャーとして、以前からよく知られている仮想マシン(VM)以外に、「コンテナ」と「サーバーレス」があります。利用者側から見た場合のこれら3者の最も大きな違いは、下の図に示すように、運用管理をどの範囲までクラウドベンダーに任せるのか、という点にあります。

 なお、サーバーレスとは、利用者がサーバーの存在を「意識しなくて済む」ということであり、物理的なサーバーが存在しないというわけではありません。

各アーキテクチャーにおけるクラウドベンダーと利用者の管理範囲の違い
各アーキテクチャーにおけるクラウドベンダーと利用者の管理範囲の違い
[画像のクリックで拡大表示]

 クラウドが登場したそもそもの動機の1つとして、ホスト管理やパッチ適用といった、ビジネスの差別化につながらない作業は、可能な限りクラウドベンダーに任せてしまおう、というものがあります。上図からわかるように、VM、コンテナ、サーバーレスの順にクラウドベンダーが管理する範囲がより広くなり、逆に、利用者が管理する範囲は狭くなっていきます。そのため、開発者は肝心のアプリケーション開発に、より集中できるようになります。

 しかし、サーバーレスは、利用者側の運用管理の負荷を軽減できる一方で、あまり大きなサイズのレスポンスを扱えなかったり、起動時間がかかったり、タイムアウトがあったりと、VMやコンテナに比べると制約が多くなります。そのため、アーキテクチャーを選定する際には、最も制約の多いサーバーレスから始めて、コンテナ、VMの順に実現性を検討していくという流れがお勧めです。

 コンテナを選ぶケースとしてはほかに、得意なフレームワークを使いたい、あるいは、既に存在するコンテナを再利用したいケースなどが考えられます。以降では、コンテナおよびサーバーレスがどのようなサービスなのか、Azureはそれぞれでどのような機能を提供しているか、について説明していきます。

コンテナとは何か? VMとはどこが違うのか?

 コンテナとはソフトウエアをOS内の独立した環境で実行する仮想化技術です。ランタイム、ライブラリ、アプリケーション、依存関係をパッケージ化して、「コンテナランタイム」上で実行する形になります。VMとの違いとしては、軽量でコンパクトである点、カーネルを共有するため隔離性が低い点が挙げられます。

VM環境とコンテナ環境の違い
VM環境とコンテナ環境の違い
[画像のクリックで拡大表示]

 上記のコンテナの構造から得られる特徴として、次のようなことが挙げられます。

  • 同じイメージをどこでも動かせる(可搬性が高い)
  • 容易に環境をリリースしたり、破棄したりできる(柔軟性が高い)
  • OSをロードする必要がないので、高速起動する
  • オーバーヘッドが少ないので、資源効率が良い

 コンテナのユースケースとしては、DevOps(CI/CD:継続的インテグレーション/継続的デリバリー)、マイクロサービス、ジョブ実行、機械学習などが知られています。

 代表的なコンテナランタイムとしては、「Docker https://www.docker.com/ 」、「containerd https://containerd.io/ 」、「runc https://github.com/opencontainers/ 」、「gVisor https://github.com/google/gvisor/ 」、「Kata Containers https://katacontainers.io/ 」などがあります。

この先は日経クロステック Active会員の登録が必要です

日経クロステック Activeは、IT/製造/建設各分野にかかわる企業向け製品・サービスについて、選択や導入を支援する情報サイトです。製品・サービス情報、導入事例などのコンテンツを多数掲載しています。初めてご覧になる際には、会員登録(無料)をお願いいたします。