前回は、コンテナを理解する上で必要となる知識として、基本的なITシステムについて説明した。ポイントをまとめると、ITシステムは何らかのサービス(アプリケーション・プログラム)を提供するものであり、複数の役割に分割され、各役割に応じたアプリケーションがサーバおよびOS上で実行される。

今回は、そのITシステムの大枠の「構成」について、パターンと移り変わりに触れながら、「コンテナ」がITシステムにおいてどの部分を指しているのかを解説していく。

その前に、簡単ではあるがアプリケーションについて触れておきたい。アプリケーションはアプリケーション自体を記述したプログラムやライブラリ、ミドルウェアなど、アプリケーション稼働のために必要な複数の資源で構成されている。

この資源を複数のアプリケーションで共有してしまうと、それぞれのアプリケーションを意識して資源を管理する必要があり手間がかかる。そのため、1つのサーバには多くのアプリケーションを稼働させず、1つないしは2つ程の役割に留めてサーバを構成することが多い。今回は、この構成を前提に解説を進める。

なお、前回の記事で「サーバ」と指していたものは、以下よりハードウェアで構成された「物理サーバ」として表現する。これが徐々に「物理」に限定されない物となってくる点にも注目しながら読み進めてもらいたい。

物理サーバ

最も基本的なITシステムの構成は物理サーバに直接OSをインストールし、サービス(アプリケーション)を稼働させる構成である。物理サーバでシステムを構成する場合、役割ごとに物理サーバを必要とするため、何台もの物理サーバを調達する必要がある。

また、物理サーバは物理的なモノであるため、置き場所を確保する必要もある。置き場所としてはデータセンターと呼ばれる専用の施設や、オフィス内に設けた専用のスペースなどがある。

仮想サーバ

物理サーバでITシステムをすべて構成することもできるが、昨今はハードウェアの性能が高まり、1つの物理サーバ上で1つの役割を持つアプリケーションを稼働させるだけではリソース利用効率が悪い、つまりハードウェアの力を生かしきれずにもったいない状態が課題となる。

こうした課題を解決するために「サーバ仮想化」と呼ばれる技術が幅広く利用されている。「サーバ仮想化」はハードウェアをソフトウェアによりエミュレートすることで、1つの物理サーバの上で複数のサーバを仮想的に稼働させる技術である。この仮想的に稼働させたサーバを「仮想サーバ」といい、ITシステムを構成する単位として今でも多くのケースで利用されている。

昨今ではこの「サーバ仮想化」技術を活用して、物理サーバをたくさん集めて大きな”クラスタ”として独自に管理し、その上で仮想サーバを必要な時だけ必要な分(スペック)だけ柔軟に利用するサービスが数多く存在する。このようなサービスを提供する企業を一般に(パブリック)クラウドサービスプロバイダー(事業者)と呼び、企業のさまざまな目的のシステムがこの上で稼働するようなケースも増えてきている。

コンテナ

ここで少し想像力を膨らませてほしい。サービス(アプリケーション)はサーバ上で実行される。サーバ上には物理、仮想問わず、それを制御するためのOSが稼働している。仮想サーバとして複数のサーバを1つの物理サーバで稼働させると、仮想サーバごとにOSが稼働することになる。OSは汎用的に使えるように作られている反面、多くの機能が含まれておりその分リソースを必要としてしまう。そのため、このOS部分も共有することができれば、より物理サーバ1台当たりのアプリケーションの集約度を上げることができる。

そこで、アプリケーションの稼働に必要な資源(つまりアプリケーション自体やライブラリ、ミドルウェアなど)をパッケージ化し、1つのOS内で隔離性を保ちながら複数のアプリケーションを稼働させる技術が現在注目されている。この技術こそ「コンテナ型仮想化」であり、アプリケーションのパッケージを「コンテナ」という。

今回はITシステムについて物理サーバ、仮想サーバ、そしてコンテナと変遷の順を追って構成するパターンを解説した。ここで、念のため、お伝えしておくと、これらのパターンはどれか1つしか使わないわけではなく、これらを組み合わせて使うことが多い。

例えば、リソースを多く使うデータベース・サーバは物理サーバとして構成し、Webサーバやアプリケーション・サーバはコンテナ、運用管理に使う監視サーバなどは仮想サーバで構成するといったシステム構成も可能である。

ここで、どちらも仮想化技術である「サーバ仮想化」と「コンテナ型仮想化」が混同されることもあるため、次回はサーバ仮想化と比較しつつコンテナの中身について解説を進める。

著者プロフィール

倉持健史


2001年4月からSPARC/Solaris , IA/Linux を中心としたSIに従事。その後、商用HAクラスタソフトウェアの開発からトレーナー・サポート・プリセールス・エバンジェリストと幅広く活動。
事業継続に関連したデータ保護の観点から外資系ストレージベンダにわたりパートナー・顧客のプリセールスを実施する傍ら、サイジングレポートツールの開発やOSSと組み合わせたソリューション開発や案件支援活動を行う。同時に、SNIA日本支部教育委員会副委員長として技術セミナーや書籍を執筆。
現在はシステムインテグレーターではあるものの、インフラ技術を横串にOSSを中心とした特にOpenStack、Ansible、Docker、Kubernetesといったトレンド技術要素を自社内エンジニアスキルアップトレーニング、社外でOSS技術のエバンジャライズを行っている。