仮想化レイヤとクラウドの整理
お仕事でどんな環境使っていますか?というアンケートを見かけまして、それは以下のような選択肢だったんです.
- 物理サーバ
- ESXi/Hyper-Vなどの仮想環境
- Docker
- AWS EC2などのIaaS
IaaS のベアメタルサーバに ESXi の仮想環境作ってる人はどれ選べばいいんだろ?ってちょっと困惑してしまいまして…
これは仮想化レイヤの話をしているのか、それともクラウドの話をしているのかどちらなんだろう?と結構真剣に悩みました.
最終的には開発者視点の話をしていているのであり、仮想化レイヤとクラウドの観点が混在しているのではないかという結論に自分の中で落ち着きました.
今回は、その過程で行った自分なりの整理をアウトプットしてみたいと思います.
※間違った理解がありそうだなと思っています.マサカリ大歓迎です!
凡例
以下の3つの観点でそれぞれのレイヤを分類してみます.
- アプリケーションエンジニア
- インフラエンジニア
- 抽象化
アプリケーションエンジニア(#2196F3)
アプリケーションエンジニアの作業範囲を青で示します.
ここでいうアプリケーションエンジニアはフロントエンド/バックエンド問わず、OSインストールくらいまではやる人のことです.
インフラエンジニア(#3F51B5)
インフラエンジニアの作業範囲を紺で示します.
ここでいうインフラエンジニアは仮想化基盤、場合によってはハードウェアの構築・管理までをやる人のことです.
抽象化(#9E9E9E)
抽象化されている範囲をグレーで示します.
アプリケーションエンジニア・インフラエンジニアの両方が管理しなくても良いレイヤーがこの部分になります.
なお、今回は簡略化のためランタイムの概念はアプリケーションに統合しています.
物理サーバ
何も仮想化・抽象化されていない一番ピュアなやつです.
ハードウェア仮想化
ハードウェアを仮想化したパターン.
OS 仮想化
OS を仮想化したパターン.
Docker
Docker を用いるパターン.
IaaS(ベアメタルサーバ)
IaaS のベアメタルサーバを用いるパターン.
IaaS
一般的な IaaS を用いるパターン.
PaaS Kubernetes等
PaaS で Docker を用いるパターン.
PaaS
一般的な PaaS を用いるパターン.
感想
仮想化と一口に言っても、オンプレの場合もクラウドの場合もあるので、
仮想化レイヤとクラウド基盤を混ぜて話さないのがポイントなのかなと思いました.
グレーの抽象化された部分は管理不要というだけで認知不要ではないと思っています.
どんなに抽象化されても知っているのと知らないのでは知っているに越したことはありません.
参考資料