この記事を読むのに必要な時間:およそ 1 分
手厚く管理されたオンプレミス
企業向けのシステム開発では今もオンプレミスのシステムが多く使われているでしょう。オンプレミスのサーバは冗長化され,専任の担当者が手厚く保守を実施しています。
オンプレミスは維持するためにコストを要し,また性能が足りない場合には物理的にハードウェアを増強しなければならないので,迅速に対応するのが困難です。それでもミッション・クリティカルで,処理量が大きく変わらない用途であれば今後も有力な選択肢と言えるでしょう。
クラウドという選択肢
近年,クラウドの登場により迅速に計算資源を調達できるようになりました。
とはいえ,実際にはそれほど単純ではありません。クラウドで注文したサーバにはOSしか入っていないため,設定をしたりミドルウェアやアプリケーションを導入したりという作業が必要です。また,アプリケーションがサーバ内に何らかのデータを保管している場合,サーバを削除すればそのデータも一緒に消えてしまうので,バックアップしたり,他のサーバに引き継ぐ必要があります。
Dockerの登場
Dockerはコンテナ仮想化技術を用いてアプリケーションを稼動するためのプラットフォームです。Docker上のアプリケーションは,ネットワーク,ファイルシステム,ユーザ空間が分離された「コンテナ」内で動作するため,あたかも別のマシンで動いているかのような状態で稼動します。
一方でこのときLinuxカーネルは共有されるため効率が良く,仮想マシンに比べて起動も高速です。Dockerの特徴の1つがDockerfileです。ここにOSの設定やミドルウェア,アプリケーションのインストール手順を記述しておき,コンテナ・イメージとしてビルドしておくことで,同一の環境をいつでも再現できるようになります。
コンテナ化アプリケーション
コンテナ内でアプリケーションが動作するようにすることをコンテナ化といいます。コンテナ内の環境は再起動された時に全て元に戻ってしまうので,ファイルでアプリケーションデータを保管したり,ログを残したりしても全て消えてしまいます。
従ってデータはコンテナ外のDBなどの永続化層にのみに保存し,ログは適宜コンテナの外に転送するといった工夫が必要となります(図1)。
図1
OSの設定,ミドルウェア,アプリケーションの導入はコンテナ・イメージがあればいつでも復元でき,アプリケーションをコンテナ化することでもはやサーバ内に独自のデータを持つ必要がなくなりました。いよいよサーバを使い捨てにする準備が整ったのです。
Kubernetesの登場
Kubernetesはクラスターオーケストレーションシステムと呼ばれ,コンテナ化されたアプリケーションを複数のサーバ上で分散実行することができます。いわば使い捨てのサーバ資源を負荷に応じてアプリケーションに割り当てる役割を果たします(図2)。
図2
『目で見て体験! Kubernetesのしくみ』では,Raspberry Piのクラスタに自分でKubernetesを導入します。その上で動作を目で確認できるLチカWebサーバを導入してKubernetesの動作の詳細を確認していきます。動画も用意されていますので,Kubernetesの動作を確認してみてください。