本連載ではITシステムの「コンテナ」について解説していく。この手の情報は既に多く出回っているが、筆者は「コンテナ」について技術的に正しく理解することは実は容易ではないと考えている。そこで、業界の経験が少ない方にも理解いただけるよう、少し遠回りになるかもしれないが順を追って丁寧に解説していくことにする。
コンテナと聞いて、何をイメージする?
皆さんは「コンテナ」と聞いて何をイメージするだろうか。素直にとらえると、港や空港などで見かける 「四角い立方体(箱)」を思い浮かべるのではないか。
箱の中には用途によってさまざまなものが詰め込まれていると想像できる。大きなものから小さなものもあるはずだ。そして、これらはなんのために詰め込まれているのだろうか? 港や空港でよく見かけるというところから想像がつくように、「いくつかの物をどこか別の場所に運ぶ(その後利用される)ために都合よくまとめられている」ということになる。
ITシステムにおける「コンテナ」もある種の"入れ物"であり、それは前述した、港などで見かけるコンテナと同様の"可搬性"、つまり持ち運びやすさを実現するために生まれたのである。
"持ち運びやすさ"とは、ITシステムで言えば、あるITシステム(プラットフォームやインフラとも呼ばれる)上から別のITシステム上への移動を容易に可能にする、という性質を持ったものである。
では、なぜITシステムにそのような"持ち運びやすさ"が必要なのか。それは、時代の流れとともにITシステムの構成や動かされる場所が多様化してきたからである。ITシステムで「コンテナ」が必要となった背景はこのほかにもあるが、シンプルに理解するために、これをひとまずの理解としていただいてかまわない。
まずはこの時代の流れから伝えていきたい。ただその前に、そもそも「ITシステム」についての理解が必要となると考え、今回は「基本的なITシステム」について解説する。
ITシステムを形作るソフトウェア
ITシステムと言ってもたくさんの種類があるが、共通して言えることは何かの目的があり、その目的を達成する手段としてITが使われていると言うことである。「より早く処理をさせたい」「自動化して人件費を削減したい」などが目的となることが多い。最近ではさらに、新たな価値やサービスを生むためにも使われる。
そのようなITシステムだが、どのように構成されているだろうか。ここでは一般的によく使われる「クライアント・サーバ型」のWebシステムを例に解説する。クライアント・サーバ型は大きくクライアントとサーバの2つに分けられる。クライアントは要求をする側、サーバは要求を処理する側である。PCやスマホのWebブラウザがクライアントに当たる。サーバはさらにいくつかの役割に分けられることが多く、3階層システムが最も一般的な構成である。
プレゼンテーション層 (Webサーバ)
クライアントからの要求を受け付け、処理の結果をクライアントに送信する。クライアントと対話をする役割を担う。画面の表示やユーザーからの要求受付に注力しており、複雑な処理はアプリケーション(AP)サーバに処理を要求する。
アプリケーション層 (APサーバ)
システムで実現する具体的な処理(ビジネスロジック)を実装および実行する役割を担う。Webサーバから受けた要求の処理を行い、結果をWebサーバに返す。また、必要に応じてデータベース(DB)サーバに対しデータの取得や更新などの要求をする。
データ層 (DBサーバ)
データの維持や管理の役割を担う。データはDBサーバにつながる外部のストレージ(ハードディスクなどのデータを貯める場所)に保存する。DBサーバはAPサーバから要求を受け、ストレージ内のデータを検索・加工して必要なデータをAPサーバに返す。また、データの更新も行う。
以上の通り、各役割を担うサーバを組み合わせてITシステムを構成する。これらのサーバ機能はその機能を提供するためのソフトウェアを使って実現する。プレゼンテーション層の機能を実現するソフトウェア、アプリケーション層の機能を実現するソフトウェアなどがあり、これらITシステムを構成するためのソフトウェアをミドルウェアという。
ITシステムを動かすインフラ
ITシステムはいくつかのミドルウェアを組み合わせて構成するが、ソフトウェア自体はただのプログラムである。そのため、ソフトウェアを動かす場所が必要となる。ITシステムではこれを基盤またはインフラと呼ぶ。インフラにも通信を行うためのインフラ、データを保存するためのインフラなどたくさんの種類があるが、ここでは特にソフトウェアを動かす部分のインフラについて解説する。
サーバ
先程のシステム構成のように〇〇サーバという場合は役割を指すが、単に「サーバ」と言う場合はソフトウェアを動かすコンピュータを指す。例えば、デスクトップのパーソナルコンピュータ(以下、パソコン)は、ディスプレイ、キーボード、マウスとそれらがつながっているパソコン本体などで構成されている。パソコン本体にはCPU、メモリ、ハードディスクなどのパーツが収められており、ITシステムではこのパソコン本体に当たる部分をサーバと呼ぶ。
オペレーティングシステム (OS)
パソコンの電源を入れるとWindowsやMac OSが起動する。これらがOSである。ソフトウェアはOS上にインストールして動かすことができる。OS上のソフトウェアはプロセスという単位で管理されている。Windowsのタスクマネージャなどを開けばわかりやすいが、OSはプロセスごとにメモリを割り当てるなど、そのソフトウェアが動くために必要なリソース管理を行っている。
以上の通り、ソフトウェアはサーバやOSといったインフラの上で動くことができる。
今回はITシステムについて基本的な解説をした。ITシステムは機能に分けて構成され、それぞれの機能はソフトウェアで実現され、ソフトウェアはサーバやOSと言ったインフラ上で実行される。つまり、「ITシステムはソフトウェアとインフラを組み合わせて構成されている」ということが理解できたのではないかと期待する。
この組み合わせにはいくつか種類があり、時代とともにトレンドとなる構成が変わってきている。次回はこのシステム構成の移り変わりについて振り返るとともに、その中で生まれた"入れ物"としてのコンテナの要素を解説していきたい。
著者プロフィール
毛利 亮太
2009年にTIS入社。入社後から現在まで一貫してインフラに関わる業務に携わり、大小さまざまなプロジェクトの推進を行う。最近では、コンテナ技術を専門に扱う推進チームにてエンタープライズ向けのコンテナ導入支援を行う。