2019年10月27日日曜日

「コンテナ」ってなに?(1)〜仮想化が必要になった経緯

最近、益々「コンテナ」が熱いですよね。
「コンテナ」を一言で言うと、「仮想化技術」です。今、アツいみたいです。

「Kubernetes」「OpenShift」など、
「なんだかよくわからないけど、システム担当もLOBも「コンテナ」関係は、知っといたほうがいいんだろうな・・・」なムードですが、まぁ、ややこしいですよね(苦笑)

私自身も、コンテナ猛烈勉強中でして、今後、当ブログで色々とご紹介できればと思っています。

そもそも、どうして「仮想化」が必要になったの?


通常は、1台の物理マシン(PC/AT互換機:パソコン、IA/x86サーバー)上で、それ専用のOSと対応するアプリケーションを動かしますよね。

例えば、昔々、広告代理店さんやデザイン会社さんは、まだマックOSでしか動かないデザイン系アプリが多かったので、Macマシンがメインマシンでした。
でも、マックOSは、オフィスなどのビジネス系アプリが不十分だったので、他の方のWindowsマシンを借りたり、会社さんによっては、Win/Macマシンを別々に購入して、ハードもソフト(アプリ)も二重投資になってたりしましたよね。
もちろん、IA/x86サーバーの世界でも同じようなことがあったと思われます。


それじゃ無駄が多いので、「ハイパーバイザ (hypervisor) 」と言う、仮想機械(バーチャルマシン)」を1台の物理マシンの中で作れる制御プログラムの導入が流行りだしました。別名、「仮想化モニタ」「仮想化OS」※とも言います。
※この辺りから似たような言葉が頻出して、お勉強しているとイライラします(笑)


「仮想機械(ハイパーバイザ)」には2種類ある!?


この「仮想機械(バーチャルマシン)」には、2種類あります。

1.「ネイティブ」または「ベアメタル」ハイパーバイザ
パイパーバイザがハードウェア上で直接動作し、全てのOS(「ゲストOS」と言います)は、そのハイパーバイザ上で動作します。
ソフトウェア製品としては、「Xen」とかMSの「Hyper-V」などがあります。
システム屋さんとの会話で「それってベアメタルだよね?」的なフレーズが飛び出してドキっとしちゃいます。

2.「ホスト」ハイパーバイザ
具体的な機能の話をすると難しくなるので、まずは、下記ユースケースをイメージしてください。
本来は、「ネイティブ」ハイパーバイザを例にした方がいいと思いますが、私のように、システム運用未経験者の場合、パーソナルユースが多い「ホスト」パイパーバイザを例にした方がわかりやすいかなと思いまして。

前提:
・WindowsユーザーでPC/AT互換機を使っているが、業務上、どうしてもMacOSのアプリを使いたい。
・会社からは「予算無いので、2台もPCは買ってあげない。でも、MacOSとアプリはあるよ」と言われている。

ユースケース:
(1)ハードウェア上で別のOS(ハイパーバイザではない、普通のOS。Windows/Mac/Linuxなど:「ホストOS」と言います)が稼働しています。例えば、普段、自分が使っている端末やサーバーがWindowsであるケースをイメージしてください。
(2)「ホストOS」として位置付けられるそのWindowsの中に、「仮想機械(バーチャルマシン)」を作るためのアプリケーションをインストールします。
例えば、オラクルの「VirtualBox」やMSの「Virtual PC」などの名称を聞かれた方もいる方と思います。
(3)(2)の「仮想機械(バーチャルマシン)」の中にMacOS(「ゲストOS」と言います)をインストールする。
(4)(3)にMacでしか動かないアプリをインストールする。

これで、PC1台だけで2つのOSを動かすことが可能になりました。
ハードウェアやネットワーク回線、オフィススペースも節約出来てお得ですね!
(サーバーの場合、ラックスペースの節約にもなりますよね)


実際、自分も「メインマシン=MacOS、業務で使いたい分析アプリ=Linux」と言うケースがあり、「ホスト」ハイパーバイザをMacOSにインストールしたことがあります。
普段からMac端末は持ち歩くワークスタイルなので、2台目としてのLinux用マシンを持ち歩く負担も減ってハッピーでした。

ただ、良いことばかりではありません。
「一台のPCで、Windows上にMacOS載っける」わけですから、当然、重くなります。また、クラッシュした場合、「どこが悪かったの?ホストOS?ゲストOS?ゲストOSの中のアプリ?」といった感じで原因究明も複雑になります。

「ネイティブ」ハイパーバイザだとメリットたくさん?


「ネイティブ」ハイパーバイザの場合は、上記の例で「ホストOS」として「メインマシンにインストールされたMacOS」が「ハイパーバイザ」に置き換わり、「ホストOS」が無くなります。そのため、ハードウェアを直接操作可能となり、仮想マシンの速度低下を最小化できます。加えて、シンプルな階層になるので原因究明も楽になります。

「ホスト」ハイパーバイザと比べるとメリットばかりに思えますが、結局、「ネイティブ」ハイパーバイザ実現のためのソフトウェアが必要になりますし、速度低下やセキュリティ対応などの課題が残りました。

そんなこんなで、登場したのが、真打ち「コンテナ」様です。
詳細は、次回エントリーで記載させていただきます。


小ネタ:仮想機械(ハイパーバイザ)の区分けって曖昧。


どうやら、上記でご紹介した「仮想機械(ハイパーバイザ)」の区分けって曖昧なところもあるようです。「狭義には、「ホスト」ハイパーバイザ」は、仮想機械では無い」とも言われているようです。

確かに、この曖昧さを知らずに、社内外の仮想化に関するWeb動画などを見ていた際、「仮想化のこと?それ以外のこと言ってる?」なことが何度かありました。ガチのシステム屋さんには常識かもしれませんが、「仮想化」領域は学習コストがかかります。自分も丁寧に段階を踏んで説明できるようにならねばと思っています。

あと、最後に宣伝です。
そんな「コンテナ」様を活用した弊社のイケてるソリューションがあります!
・・・ただ、いきなりコレをご覧になっても「???」な感じだと思いますので、まずは名前だけ覚えて頂けると幸いです。
他の「Cloud Pak」シリーズ含め、いずれ、当ブログでご説明できればと。

IBM Cloud Pak for Data
https://www.ibm.com/jp-ja/products/cloud-pak-for-data


「コンテナ」関連エントリー



「コンテナ」ってなに?(2)〜コンテナの技術的特長をザックリと。
https://sapporomkt.blogspot.com/2020/04/2.html

「コンテナ」ってなに?(3)〜「Kubernetes」の技術的特長をザックリと。
https://sapporomkt.blogspot.com/2020/05/3kubernetes.html