サーバー用コンピュータって、実際どんな見た目なんだろう?
開発を始めたばかりの頃、私は「サーバー(Server)」に対して漠然とした幻想を持っていた。映画 マトリックス に出てくるように、緑色の文字が雨のように流れ、無数のケーブルが絡まり合い、重厚な機械音とともに青い光を放つ巨大なスーパーコンピュータを想像していたのだ。
でも、実務で初めて見たサーバールーム(IDC)の風景は、私の想像とは違っていた。ラックに差し込まれた薄い機械も、中を見れば結局はCPUがあり、RAMがあり、SSDが刺さっている、私のノートPCと大差ない「ただのコンピュータ」だった。
では一体、何が私のノートPCを「個人PC」と呼ばせ、あの無骨なマシンを「サーバー」と呼ばせているのだろうか。

与える側(Server) vs 求める側(Client)
サーバー(Server)の定義はとてもシンプルだ。“Serve(提供する)”側がサーバーで、その反対にクライアント(Client)は“Request(要求する)”側だ。
つまり、古い私のノートPCでも24時間電源を入れっぱなしにして外部接続を許可すれば、それはもう「サーバー」だ。では、なぜ私たちは自分のノートPCをサーバーにせず、わざわざAWS EC2のようなクラウドサーバーを借りて、使いづらそうな「Linux」を入れるのだろうか。
なぜよりによってLinuxなのか?(Windowsじゃだめ?)
Windowsは本当に便利だ。マウスでクリックすればよく、直感的でもある。それなのに、なぜサーバー開発者たちは黒い画面しかないLinuxにこだわるのだろうか。
1. GUIはぜいたく品だ(コストと効率)
Windowsを起動すると、デスクトップが表示され、アイコンが見え、マウスカーソルが動く。この華やかなGUIを維持するために、コンピュータは常にCPUとメモリを使い続けている。でもサーバーにはモニターは要らない。地球の裏側のどこかに置かれて、ただ「データ処理」だけしていればいい。Linuxサーバー(CLI)はグラフィックを全部削ぎ落として、文字だけを残した。もしWindowsが100の力のうち30を画面描画に使うなら、Linuxはその100を丸ごとサービスに注ぎ込める。
2. 更新の自由(安定性)
Windowsを使っていると、そのうち「更新のため再起動します」に出くわす。個人PCなら少し席を外せば済む話だ。でも24時間動き続けなければいけないサーバーが勝手に落ちたら? それは災害だ。Linuxはカーネル更新のような大きな出来事でもない限り、何年も止めずに動かせることが多い。
3. ライセンス費用(お金)
Windows Serverは高い。CPUコア数に応じて課金されることさえある。一方でLinux、たとえばUbuntuやCentOSは、たいてい無料のオープンソースだ。何千台ものサーバーを回す企業にとって、答えはほぼ決まっている。

Windowsの上にLinuxを入れればいいのでは?(仮想化の序章)
ここで初心者開発者、つまり昔の私は妙案を思いつく。“Windowsのほうが楽なんだから、Windows Serverを入れて、その中で『仮想マシン(Virtual Machine)』としてLinuxを動かせばいいんじゃない?”
もちろん可能だ。でもそれは「家の中にテントを張って暮らす」ようなものだ。
家主であるWindowsも食べなければならないし、間借り人であるLinuxも食べなければならない。資源の無駄が大きすぎる。そこで開発者たちは考えた。“重いOSを丸ごと入れずに、本当に必要な『環境』だけを隔離して動かせないだろうか?”
その悩みの末に生まれたのが、まさに「Docker」、つまり「コンテナ(Container)」技術だ。
次の話: マウスのない世界
これで、なぜサーバーがWindowsを捨ててLinuxを選んだのかは分かった。でも、頭で理解することと、手で触って扱うことは別だ。Linuxサーバーに初めて接続したとき、私たちを迎えるのはWindowsの親切な「スタートボタン」ではなく、「点滅するカーソルと黒い画面」だけだ。
次回は、この見慣れないLinuxターミナル(CLI)環境で、マウスなしでファイル権限を扱い、サーバーを制御するためのサバイバル技術を見ていこう。