クラウドを考える上で最も大事なこと
クラウド的な話題を追うときは、その話の焦点はパブリッククラウドとプライベートクラウドのどちらにあるのかを、常に意識する必要がある。この2者はともに「クラウド」という言葉だけで語られがちだけど、性質としてはかけ離れたものだからだ。
ごく簡単に特徴をまとめ直すと以下の通り。
- パブリッククラウド (Public Cloud)
- Google App Engine や Amazon EC2 のように他社がサービスとして公開しているクラウドコンピューティング環境
- アーキテクチャや使用可能なソフトウェアに制約がかかる
- 使用するサービスの仕様を前提としたソフトウェア開発が必要(な場合もある)
- 信頼性などは使用するサービスのサービスレベルに依存する
- 他社のサービス上にデータを置き、その上で処理を行う
- セキュリティリスク上好ましくないとされる場合がある
- 多くは計算量/データ量/トラフィック量に応じて料金が決まる従量課金のサービス
- 固定設備を持つよりもはるかに安価に済む場合が多くある
- 事前に費用が明らかでないため、好ましくないとされる場合がある
- Google App Engine や Amazon EC2 のように他社がサービスとして公開しているクラウドコンピューティング環境
- プライベートクラウド (Private Cloud)
- 自社データセンタに大規模なコンピューティング環境を整備し、自社の多数のサービスをその上で稼働させるための環境
- サービスレベル設計やアーキテクチャ設計などを自社の都合にあわせて行える
- 必要であれば既存システムをそのまま移行可能なシステム設計が可能(な場合もある)
- 従来かかっていた固定的コストの多くは継続して負担が必要
- 床面積、電力、空調、セキュリティ確保、監視・運用要員、ハードウェア・ソフトウェア保守、他多数のコスト
- 基本的には昔からユーティリティ・コンピューティングや仮想化などのキーワードで語られてきた概念そのまま
- 自社データセンタに大規模なコンピューティング環境を整備し、自社の多数のサービスをその上で稼働させるための環境
この分類の他にも、基盤の抽象度をどのレベルとするか(Google的クラウド or Amazon的クラウド)、目的は何か(クラウド環境を使いたいのか or クラウドサービスを提供したいのか)、などで様々に検討条件が入れ替わる。
ただし、どのような検討を行う場合でも、絶対に思考から外してはいけない条件がある。それは「数のメリットを最大限に活かす」というものだ。
GoogleもAmazonもこの点を最大限に活用しているからこそ(逆説的だが)極めて巨大なデータセンタを運用できているし、各顧客向けに驚くほどの安価でサービスを提供できているのだ。パブリッククラウドの中身が(感覚的にでも)推測できない人には見えにくいことだけれど。
このことを分かっていない人間がプライベートクラウドを作ろうとするとき、必ず言うのが「とりあえずスモールスタートで」だ。世の中にあるクラウド向けの技術を導入して小規模からクラウド環境を構築し、うまくいったら、適用規模が大きくなるにつれて拡大しよう、と言う。
これは明らかに間違いだ。現状クラウド向けの技術と呼ばれるもののどれを導入しても、それだけで総コストが下がることは絶対にない。数のメリットを活かしてこそ意味のあることをスモールスタートでやって上手くいくはずがない。百歩譲って最初は小規模な環境から始めるにしても、その時点で「うまくいったかどうかを評価する」のは絶対にしてはいけない。うまくいかないに決まってるからだ。
やるならスケールメリットが明らかに効いてくる規模、サーバ台数にしてだいたい数百〜千台程度までは何があっても続けるべきだ。その程度の覚悟もないなら、自社でクラウド環境を構築しようなんて考えてはいけない。
作る方はともかく使いたいだけであれば、考えることはあまりない。
各パブリッククラウドサービスのサービスレベルをそれぞれ調べ、自分がこれから作ろうとしているサービスの要件を満たすかどうかだけチェックすればいいだろう。セキュリティ要件、課金体系、性能要件だけ満たせば世の中のほとんどのサービスは問題ないんじゃないだろうか。
もちろん稼働率99.99999%を求めるようなサービスには厳しいだろうが、そもそもそういうサービスは他社サービスの上に載せようと考える方が間違いだ。