クラウド・コンピューテリングとオープンソース・ソフトウェア

クラウドコンピューティングの発展に、オープンソース・ソフトウェア(OSS)が果たしている役割は大きい。
よく「オープンソースフリーソフト」という言う方がいらっしゃるが、ちょっとニュアンスが違う。
オープンソースの祖(?)、リチャード・ストールマンの主著のタイトルが「フリーソフトウェアと自由な世界」なので、これもまた紛らわしい。

簡単にいえば、オープンソース・ソフトウェアとは、ライセンス(著作権)は製作者などに帰属するが、ソースコードを公開してその改変を許すソフトウェア、のことを指す。Open Source Initiativeによる定義はこちらにある。
定義上、ライセンスフィーについては言及されていないが、無料であることが普通である。
代表的なプロダクトとしては、LinuxApache Http Server、TomcatMySQLなどなどが挙げられる。
これに対して、ライセンスが放棄されたソフトウェアをパブリック・ドメインのソフトウェアという。PHP5からバンドルされたDBであるSQLiteはパブリック・ドメインのソフトウェアである。

オープンソースライセンスとして認められているライセンスは大量にあって(OSIによって認証されたライセンスの一覧はこちら)、それぞれ「どこが、どうちがうの?」ということがしばしば問題になる。オープンソースとして配布されていても、独自のライセンス原文をもっていたり、一般的なライセンスの修正版だったりということもしばしばある。
たとえば、GPLというライセンスは、オープンソースの定義に則りながらも、それを利用したソフトウェアがGPLライセンスを適用しなければならないこと(ライセンスの「感染」という)、すなわち、利用したソフトウェアもまたオープンソースでなければならないこと、ソースコードの改変に対するフィードバックを求めるものである。
すなわち、GPLを適用したソフトウェアについては、そのソフトウェアのみならず、それを利用するソフトウェアについても、GPLであり続けなくてはならない、というロジックになっている。
これは、一見頑なな主張に思われるのであるが、ストールマンの発明したオープンソースライセンス(Copyrightを文字って、Copyleftともいう)」の本意は、先の主著で「隣の人が(プログラムが動かなくて困っていたら)手伝ってあげたい」と述べていることに、端的に現れていると思う。
GPLは「感染性」が高く、(ソースコードを開示したくない)商用ソフトウェアに組み込むことができない。したがって、現在の、主流はBSD系のライセンスに移ってはいるが、ストールマンの純粋な気持ちが、オープンソースという偉大な発明を生んだ、ということに違いはない。

また、最近、SaaSに絡んで、「ソフトウェアからサービスへ」というようなコピーを目にすることが多くなった。セールスフォース・ドット・コムなどは「No Software」などというコピーを掲げている(ロゴに注目されたい)。
見方をかえれば、これは「ソフトウェアそれそものには、(ビジネス的な)価値はない」という意味にもとれる。とすれば、オープンソース・ソフトウェアは、この主張の王道を行くものと、(穿った見方かもしれないが)思ったりする。

前置きがながくなったが、GoogleAmazonが提供するクラウドコンピューティングのサービスは、巨大なデータセンターにある何万・何十万というコンピュータが協調動作することで提供されている
ここで利用されてるOSはLinuxである。大量のサーバーを保有するためには、発熱量の削減、消費電力量の削減といった「実際的な課題」がある。この場合、OSそのものがカスタマイズできなければ、つまり、OSのソースコードが開示されていなければ、この課題を克服することができないLinuxが利用されるのはこのためである。これと同時に、LinuxはライセンスフィーのないOSである。(Windows Serverのような)商用のサーバーOSは、利用者の数によってライセンスフィーを要求する。不特定多数の利用者(それもできるだけ多くの)にサービス提供を行うクラウドコンピューテリングのサービスでは、そういった形態のライセンスフィーは、大きな重荷になる。

Linuxとともに、クラウド・コンピューティングに決定的に重要な役割を演じているオープンソース・ソフトウェアがXen(ゼン)である。
Xenは、ハイパーバイザー型の仮想化ソフトウェアといわれる。端的にいえば、(物理的に)1つのサーバー上で複数のOSを稼働させるためのソフトウェアである。Xen上で稼働するこれらのOSは「ゲストOS」と呼ばれるが、これらそのものもLinuxであることが多い(したがって、ゲストOSについても、ライセンスフィーがかからない)。

サーバーの仮想化は、ハイスペック化するサーバーリソースを効率的に活用しよう、という考え方からきている。実際、高価なサーバーを購入したとしても、ほとんどのケースで、CPUは稼働しているより遊んでいる時間の方が圧倒的に長い。
1つのサーバーで複数のOSを稼働させることで、この「遊び」を減らそうというわけである。ただし、これにより処理が遅くなってしまっては元も子もなく、オーバーヘッドを減らすには、ハイパーバイザー型である必要がある。
仮想化技術の特徴は、ゲストOSが、ハイパーバイザーを「本当のHWと思いこんで」処理を行う点にあって、これを管理するソフトウェア(Xen)では、ゲストOSに「その処理(負荷)に見合った」HWリソースを割り当てることができる。
ゲストOSは「HWを本物」と思っているわけだから、マシンを入れ替えても同様に機能する

GoogleAmazonのように大量のサーバーを運用するデータセンターでは、日常茶飯事でHWの故障が発生するが、そのたびにサービスを停止するわけにはいかない。

そのために、キャパシティープランニングをする際には、リソースプールという余裕をもたせておき、故障が発生したら、そのプールにゲストOSを割り当てて、「通常通り」にサービスを続行させる。
また、Amazonのサーバーが一番忙しいのは、クリスマスシーズンであることはよく知られている。
こういう高負荷な場合には、プールから多くのリソースを引っ張り出して、データセンター全体としての処理性能をあげる。
このように、負荷や故障に応じて、リソースの割り当てを行うことをプロビジョニングというが、Xenはこのための必須ソフトウェアといってよい。

クラウドコンピューティングで提供されるサービスが、安定して稼働するのは、このような堅牢なアーキテクチャを備えたデータセンターから提供されるためある。
GoogleAmazonも、世界でもっともアクセス数の多いサイトである
クラウドを利用することで、世界で最高に可用性の高いデータセンターを利用できるということになる。