0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Youtubeチャンネル『ByteByteGo』視聴メモ #7 ベアメタル・仮想マシン・コンテナの違い

0
Posted at

はじめに

英語の技術動画で学ぶシリーズ。今回は ByteByteGo から、アプリを動かす土台の3つの選択肢の比較。

Big Misconceptions about Bare Metal, Virtual Machines, and Containers (7:02)

動画が立てる問いは「アプリをデプロイするとき、3つのうちどれを選ぶべきか」。それぞれの仕組み・利点・欠点を順に見ていき、最後に「正解は1つではない」と締める。

なお、タイトルにある「誤解(Misconceptions)」が何を指すのかは、字幕からは明示されていない。本編は素直な3者比較になっている。

3つの違いを一言で

まず全体像。違いは「何を仮想化するか」と「何を共有するか」に集約できる。

ベアメタル 仮想マシン コンテナ
何か 物理サーバーを1テナントで専有 物理マシンをソフトで模倣したもの アプリと依存物をまとめた軽量パッケージ
仮想化するもの しない ハードウェア OS
仕切り役 なし ハイパーバイザー コンテナエンジン
他テナントと共有するもの なし ハードウェア(CPUコア含む) ハードウェア+ホストOS
主な強み 性能・セキュリティ コスト・スケールのしやすさ 軽さ・起動の速さ・持ち運びやすさ
主な弱み 高い・管理が大変・スケールしにくい ノイジーネイバー、CPU脆弱性 OSレベルの脆弱性にさらされやすい

以下、それぞれを分解する。

ベアメタル:物理サーバーを丸ごと使う

「1台の物理サーバーを1つの利用者だけで使う」形 → bare metal(シングルテナント)。動画は3つの中の「元祖(granddaddy)」と呼び、かつてはすべてのサーバーがこれだったと説明する。

ハードウェアもその上のソフトウェア構成も完全に自分で制御できる。ハードの性能を限界まで引き出したいアプリに向く。

ベアメタルの2つの利点:物理的に隔離されている

物理的に分かれていることで、2つの利点がある。

利点 中身
1. 隣の影響を受けない 同じハードを使う他テナントの負荷で自分の性能が落ちる問題 → noisy neighbor problem が起きない
2. 最高レベルのセキュリティ CPU設計上の欠陥を突いて隣のテナントから秘密を盗む攻撃 → side-channel attack の影響を受けない

厳しいセキュリティ・コンプライアンス・規制要件を満たす必要がある場合、ベアメタルしか選択肢がないこともあると動画は言う。

欠点は「高い・管理が大変・スケールしにくい」。新しいハードの調達には時間がかかり、うまく運用するには有能なチームが要る。

仮想マシン:ハードウェアを仮想化する

物理コンピュータをソフトで模倣したもの → virtual machine。この仕組みを virtualization(仮想化)と呼ぶ。1台の物理マシン上で多数の仮想マシンが動く。

動画が示す層構造は下から次のとおり。

アプリ(テナントごと)
ゲストOS(仮想マシンごとに1つ)
ハイパーバイザー(= 仮想マシンモニター)
ホストOS
物理ハードウェア

ハイパーバイザーがハードの上に抽象化の層を作り、複数のOSを並べて動かせるようにしている。

補足:ベアメタル・ハイパーバイザーとは

動画が「ベアメタルのハードウェアと混同しないように」と注意している用語。

  • ホストOSを介さず、ハイパーバイザーが直接ハードを制御する方式 → bare metal hypervisor
  • ハードを完全に制御できるので性能が高い
  • ただし、対応するハードウェアは高価

先ほどの層構造から「ホストOS」の段が抜けた形、と捉えると分かりやすい。

仮想マシンの利点と欠点

今は数コア・数GBの汎用型から、数百コア・TB級メモリの高性能型まで、ほぼどんなサイズでも選べる。

利点 欠点
安い。多数でハードを共有するのでリソース利用率が上がる ノイジーネイバー問題を受けうる。リソースを食う隣と同居すると性能が落ちる
スケールしやすく、組織として柔軟になる 同じ物理CPUコアを共有するので、CPU設計の欠陥を突く攻撃に弱い(例:Meltdown、Spectre)
高機能な仮想化ソフトなら、動作中のVMを止めずに別の物理マシンへ移せる

コンテナ:OSを仮想化する

アプリと、それが依存するライブラリ・フレームワーク・ランタイムをまとめた軽量で自己完結したパッケージ → container。動画は containerization を「仮想化の軽量版」と位置づける。

仮想マシンとの違いは、ハードではなくOSそのものを仮想化する点。

コンテナ(それぞれ隔離されたアプリ環境)
コンテナエンジン
ホストOS
物理ハードウェア

仮想マシンの図と比べると、「ハイパーバイザー+ゲストOS」の段が「コンテナエンジン」1つに置き換わっている。

コンテナの利点と欠点

利点 欠点
必要なものが全部まとまっているので、どこでも動く(ポータブル) 同じホストOSを共有し、隔離はOSレベルの仕組みに頼っている
VMより軽く、少ないハードで動く。1台に載せられる数がVMよりずっと多い そのため、OSレベルのより広い種類の脆弱性にさらされる
ホストOSのネイティブなプロセスとして動くので、起動がずっと速い

まとめると、大規模にデプロイ・保守しやすいのがコンテナの強み、セキュリティ面が弱みという整理。

組み合わせ:VMの中でコンテナを動かす

コンテナは仮想マシンの中でも動かせる。

動画が挙げる理由は、攻撃対象領域(attack surface)を減らしてセキュリティを高められるから。これは「柔軟性とセキュリティのトレードオフ」だと説明している。

その先の選択肢としてサーバーレスとエッジコンピューティングにも触れているが、「別の動画で扱うかも」で終わっており、本編では深掘りしていない。

まとめ

動画の結論は「システムデザインはトレードオフ。この3つも同じで、唯一の正解はない」。

動画の内容から判断基準を引き出すと、次のようになる。

  • 性能を限界まで出したい・規制が厳しい → ベアメタル
  • コストとスケールの柔軟さを取りたい → 仮想マシン
  • 軽さ・起動の速さ・大量デプロイを取りたい → コンテナ
  • コンテナの手軽さとVMの隔離を両方ほしい → VMの中でコンテナ

サーバーレスとエッジコンピューティングとの比較は、また別途まとめたい。

覚えておきたい英単語

英語 意味 動画での使われ方
single tenant 1つの利用者だけが専有する形態 A bare metal server is a physical computer that is a single tenant only.
noisy neighbor problem 同居する他テナントの負荷で自分の性能が落ちる問題 It is not affected by the noisy neighbor problem.
side-channel attack CPUなどの設計上の欠陥を突いて情報を盗む攻撃 Side-channel attacks like Meltdown and Spectre are some well-known examples.
hypervisor 仮想マシンを管理し、ハードの上に抽象化層を作るソフト Running on top of the host operating system is a special piece of software called a hypervisor.
attack surface 攻撃されうる箇所の範囲 It provides better security by reducing the possible attack surfaces.
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?