「Keep it Simple Stupid!(KISS!)」。単純であることを至上とする意味で広く使われているこの格言は,コンピュータの世界でも開発者や管理者の間で座右の銘とされている。システムにかかわるハードウェアやソフトウェアの数が増えるほど,管理の効率化や数に応じた性能の向上が難しくなる。シンプル・イズ・ベストだからだ。
しかし理想はあくまでも理想。現実の企業情報システムはシンプルから程遠い。管理が行き届かず,十分に活用できていないコンピュータがあふれている。そこでサーバー*1やストレージといったリソースの物理的な性質や境界を隠蔽し,自由に結合・分割して論理的なリソース単位に変換して扱う「仮想化」が今,脚光を浴びている。オフィス内や全国に散らばるさまざまな仕様のコンピュータやストレージ装置をまとめ上げ,あたかも一つの大型コンピュータのようにシンプルに扱えるようにする(図1[拡大表示])。いわば「仮想メインフレーム」とも言うべき形態に姿を変えようとしている。
手に余るリソース数の爆発
1960年代のメインフレームの時代。1台のコンピュータの中で仮想マシンをいくつも立ち上げ,多数のユーザーで共用するのはごく当たり前だった。運用管理者の行動範囲はサーバー室のみ。ハードウェアも目の届く範囲に存在していた。
ところが1970年代に入ると,1人に1台のコンピュータを指向し,ミニコン,ワークステーション,そしてパソコンと,小型化と低価格化が進んだ。ネットワークが普及すると,企業内,さらには全国や海外へと,システムを構成するリソースは分散していった。
Webやデータベースはそれぞれ別のサーバー機で実行され,サーバー・ソフトウェアの数だけマシンの台数が増えた。インターネットがビジネスのインフラになり,それらサーバーにアクセスするユーザー数の上限もふくれあがった。従業員がユーザーとなる企業内システムであればともかく,Webに公開するサーバーにアクセスするユーザー数を完全に予測するのは不可能だ。
システム運用に四つの問題
システムを運用する上で考慮すべきリソースの数が増える一方で,人間の能力が劇的に高まることは期待できない。確かに管理については,管理者の能力を補う目的で統合管理のツールの整備が進んだ。ただ管理ツールで各種リソースが一覧できるものの,管理の対象が多いことに変わりはない。そもそもインターネット・ユーザーの行動は管理ツールで把握できない。
リソース数の増加と負荷変動の拡大によって,現在システム運用は,大きく四つの問題に直面している(図2[拡大表示])。すなわち,(1)異なるハードウェア仕様のリソースが混在することによる管理負担の増大,(2)システム構築時の性能見積もりの難しさ,(3)信頼性の低下を防ぐ目的で設置するサーバー機の増加,(4)リソースの利用効率の低下,である。
(1)はハードウェア仕様の異なる機種が多数混在するのが主な要因だ。コンピュータの製品サイクルは短い。短くて数カ月,長くても数年でしかない。同じ仕様のコンピュータを市場から調達し続けるのは困難だ。システム運用の過程でコンピュータやストレージ装置を順次追加していくと,さまざまな仕様のハードウェアやソフトウェアが混在することになる。さらに価格の低下が,コンピュータ数を増やす傾向に拍車をかけた。今では3万円台のサーバー機も珍しくない。確かに個々の製品の導入コストは低いものの,運用管理のコスト増が,そのコストメリットを超えつつある。
(2)は,最大の負荷を見込んでハードウェアを整備することによる費用対効果の悪化だ。例えばオンライン・ショップ用のWebサーバーを考える。商品の売れ行きは水物だ。アクセスが最も集中するケースを想定し,CPU性能やメモリーの容量を見積もらなければならない。負荷が最大になる時間がたとえ1時間であっても,それに合わせてシステムの要件は決まる。もし当てが外れれば,システムへの投資が無駄になりかねない。
(3)はアプリケーションごとにサーバーを分ける必要性があるのが原因である。
一般的なOSは,カーネルやシステム・サービスと各種アプリケーションが利用するメモリー空間をそれぞれ分けることで信頼性を確保している。あるアプリケーションがエラーを起こしたとしても,別のアプリケーションが使っているメモリー領域を破壊することはない。
しかしソフトウェアである以上,バグからは逃れられない。OS自身がエラーを起こせば,その上で稼働するアプリケーションすべてに影響が及ぶ。セキュリティ・ホールがあれば,それを突いた不正アクセスによってサーバー機が乗っ取られるかもしれない。これらの可能性を減らす予防策として,アプリケーションごとにサーバーやワークステーションを用意するのが一般的となり,マシン台数の増大に拍車をかけた。
(2)と(3)が主な要因となり,(4)のリソース利用効率の低下を招いた。最大負荷を見越した仕様のサーバー機を導入し,目的とするサービスごとにサーバー機を分けることでシステムの安定をねらう。こうして,システム内に平均使用率の低いCPUやメモリー,ハードディスクなど,有効利用できていないリソースが増えていった*2。