未来のいつか/hyoshiokの日記

hyoshiokの日々思うことをあれやこれや

データセンターがコンピュータになる時代

話題のThe Datacenter as a Computerなる論文を読んでみた。Googleの中の人が書いたインターネット時代のコンピュータの話だ。

http://www.morganclaypool.com/doi/abs/10.2200/S00193ED1V01Y200905CAC006

The Datacenter as a Computer: An Introduction to the Design of Warehouse-Scale Machines: Synthesis Lectures on Computer Architecture, 2009, 108 pages,
Luiz André Barroso Google Inc. Urs Hölzle Google Inc.

ムーアの法則で、半導体の集積度がどんどん上がってきて、通信コストも安くなってきて、コンピューティングパワーの源はインターネットの向こう側になった。そんな時代背景の中でコンピュータを設計し実装するためにはどのような問題があるのか。コンピュータサイエンスの解かなければいけない問題はなにか。そのようなヒントに満ちた刺激的な論文だった。

コンピュータサイエンスの潮流である、OSの研究も、データベースの研究も、アルゴリズムの研究も、言語処理系の研究も、多かれ少なかれムーアの法則に支配され、結果としてインターネットという環境を前提としたものに収斂していかざるおえない。

半導体の技術者が物理法則を理解し、コンピュータアーキテクチャの設計者が半導体を理解し、プログラマがコンピュータアーキテクチャを理解しなければいけないように、インターネット時代のプログラマはコンピュータアーキテクチャとしてのデータセンターを理解しないといけない。

データセンターを単なるサーバの倉庫と考えるのはもはや間違いである。倉庫がコンピュータなのである。(Warehouse Scale Computer - WSC)

一つ一つの構成要素は、比較的廉価なコモディティPCサーバー、ネットワークスイッチ、電源、空調などだ。その構成要素を組み合わせるのは、一つの意志を持った組織である。それがGoogleであったり、Amazonであったり、Yahoo!であったり、Microsoftであったりする。

そのGoogleが設計し実装したコンピュータとしてのデータセンターについて説明したのがこの論文だ。いや、ちょっと違うな、Googleのコンピュータアーキテクチャについて説明した論文だ。

コモディティなPCサーバーを大量に利用するのは、その価格競争力からだ。高性能サーバー(大規模SMPサーバー)は高価格で価格競争力がない。このPCサーバーを大量に使うというアーキテクチャー上の判断が、スケールアップではなく、スケールアウトすることによって大量の情報を捌くというソフトウェアアーキテクチャーを規定していく。

当然、運用もスケールアウトを前提としたものとなる。データセンターの設計もそれを前提としたものになる。RDBMSもそれを前提としたものになる。ストレージもそれを前提としたものとなる。

コンピュータとしてのデータセンターの構成要素はメインフレームや大規模SMPマシンやスーパーコンピュータではない。普通のインテルサーバーだ。ストレージもSANやNASではなく、普通のSATAディスクだ。

故障に関する考え方も変化する。高性能高機能のメインフレームは、いかにハードウェアの故障率を減らすかということに多大なコストを払っていた。一方コモディティPCサーバーを1万台利用すれば、常時何台かは故障している。したがってその上にのるソフトウェアも故障を前提とした作りになる。これを耐障害性と呼ぶ。

耐障害性をソフトウェアが持つことは運用も変化する。ハードウェアに障害があってもサービスを止めない。ソフトウェアに障害があってもサービスを止めない。そのようなインフラを作ることになる。

スケールアップではなく、スケールアウトである。

オープンソースを使うのも偶然ではない

このようなシステムを動かすソフトウェアは商用ソフトウェアを利用したものではなく、自家製である。基盤はオープンソースである。OSもRDBMSもWebサーバーもアプリケーションサーバーも自家製ないしはオープンソース(OSS)を基盤としたものである。

OSSは、ライセンスフィーが必要ない。そのために圧倒的に価格競争力がある。

しかしOSSが選ばれているのはそれだけではない。何か問題があった場合、ソースコードがあるので、トラブルシューティングソースコードがない場合に比べて圧倒的に簡単だ。迅速に行える。それが機能上の問題(バグ)であっても、性能上の問題であっても、ソースコードがあることの優位性ははかりしれない。

商用ソフトだと、手厚い(非常に高価だ)サポートがあったとしても、時間がかかるし満足なものが得られるとは限らない。現象を説明してベンダーに理解してもらい(何回かやりとりをする)、ベンダー側で現象を際限して、うまく行けばワークアラウンドなり回答なりをもらうのだが、このプロセスは大変長いし、回答も満足がいくとは限らない。

そもそも、商用ベンダーには、大規模な計算機としてのデータセンターで利用された実績を持つソフトウェアがない。従って自作するしかない。

さらに言うと、自社で構築してこのようなトラブルシューティングをすれば、ノウハウがどんどん溜まる。エンジニアがそれによってどんどん成長する。そして、ついでにパッチかなんかを作ってコミュニティにフィードバックすれば感謝もされる。オープンソースを使っていれば自分の勉強になって成長してそして人から感謝もされるというおいしい状況になる。

経済性

電力消費が大きなコスト要因になる。省電力、空調などが運用コストに響いてくる。現状では計算量に比例した電力消費になっていない。そのために莫大な電気料金(建築コストを含めて)になっている。例えば、計算量が0でも、サーバーの電力消費はピーク(CPU使用量100%)の50%くらいである。従って効率よく利用するのは可能な限りCPUを100%利用しなければならないが、通常のサーバーのCPU利用率は30%を切っているのが大半である。

WSC - Warehouse Scale Computer

データセンターがコンピュータになるということは、倉庫がコンピュータになる。それをWSC (Warehause Scale Computer - 倉庫規模のコンピュータ)と呼ぶ。

コンピュータアーキテクトの仕事がWSCを設計することになる。

Hardware and software architects need to develop a better understanding of the characteristics of this class of computing systems so that they can continue to design and program today's WSCs.

データセンターが超大型コンピュータになったのである。

周回遅れの感があるが、この地で、それを作ってみたいという思いは強くある。