こんにちは、IIJ America inc サイト管理者のまつみんです。
我々のIT業界で普通であっても、お客様にとってはさっぱり意味がわからない事がたくさんあります。そのギャップを埋めるのが GeekTech特集です。今回はコンテナ (Container)技術を解説します。
クラウドサービスにおけるコンテナとは?
クラウドと言えば、「仮想化技術」が大きな役割を担っていますが、この仮想化技術の分野もクラウドというキーワードが一般的に広まった2006年頃から比べると、どんどん進化しています。現時点で仮想化技術で広く普及しているのは「Hypervisor/ハイパーバイザー」と呼ばれるアーキテクチャーです。一方でコンテナのアーキテクチャーはUnix/BSD/Linuxコミュニティでは古くから存在していましたが、敷居の高さから広く普及することはありませんでした。しかし近年のDev/Ops(こちらは別のブログで解説します) いわゆる開発と運用が蜜に連携するトレンドの到来と、それらを支える技術であるContainer技術の台頭により身近になりました。
ハイパーバイザーとの違い
こちらの図解をご覧ください。一般的に普及しているHypervisor方式は物理サーバーの上に仮想化を担うHypervisor OSがインストールされ、その上に個々のOS(およびアプリケーション)が展開されます。対してコンテナ型は物理サーバーの上に通常のOS(一般的にはLinuxプラットフォーム)がインストールされコンテナエンジンを稼働させます。そうすることで必要なアプリケーションを「コンテナ単位で隔離して展開」する形で高速に展開することができます。
コンテナの特徴
メリット
アプリの展開が高速
ゲストOSを展開するステップがないので、わずか数十秒でアプリの展開ができます。
処理が高速(軽量)
ゲストOSとハイパーバイザーのオーバヘッドが無いので、通信処理が軽量です。
物理ホストサーバのCPU/Memory/Disk IOの消費もオーバーヘッドが無い分軽減されます。
展開したコンテナのポータビリティ
こちらがコンテナ最大の魅力ではないでしょうか。展開したコンテナの複製・移動・作り直しが簡単にできます。基盤チームと開発チームが協力して頻繁にアプリを更新する現代のDev/Opsには欠かせない機能です。バックアップ・リストアという従来の概念を覆すくらい違います。
デメリット
運用がむずかしい
まずLinuxに詳しくないと使いこなすのは難しく、ラーニングカーブがあります。
開発思考のユーザー向け
すべての組織に向いてはおらず、アプリを自社開発(運用)している環境に適しています。
CI/CD, DevOpsのような自社で開発者を抱えて、頻繁にコーディング・テスト・展開という作業を繰り返すユーザー向けです。
カーネルを共有している
物理ホストサーバーにまずインストールするOS(CentOS/Ubuntu/etc)のカーネルにコンテナは依存してしまいます。つまりいろいろなOSを同じホストで稼働させたい場合はコンテナは向いていません。
まとめ
いかがでしたでしょうか?弊社はインターネットベースの技術でITサービスを展開することを得意とする会社です。仮想化全般に関する無料相談は Webフォームからお問い合わせください
Comments