クラウドのデメリット

クラウドって時と場合によって意味が変わったりしますよね。広い意味では「複数のユーザーやソフトウエアシステムで、複数の機器を共有することにより、可用性(アベイラビリティ)と拡張性(スケーラビリティ)を高めつつ、運用コストを下げる技術。」と言ったところでしょうか。クラウドだって魔法の弾丸ではないのです。クラウドで出来る事、出来ないことをちゃんと認識しているでしょうか?
機器を共有することでコスト削減
CPUやネットワーク帯域等のリソースは常に100%使っているわけではありません。必ず使っていない時間が発生するため、リソースを共有することによってコストを削減することができます。逆にいえばストレージのように長時間占有するようなリソースについては、クラウドを使ってもたいして安くはなりません。
使った分だけ購入することでコスト削減
新たな機器を購入する場合には、償却期間を定めたうえで、将来必要になるであろうスペックの機器を購入します。普通に予想するなら、今よりも将来の方が高い性能が要求されるでしょうから、現時点においてはオーバースペックとなります。
クラウドでは現在使用する分だけを購入することが出来ます。現時点においてオーバースペック分となるコストを負担する事が無くなります。また、処理の集中する平日は処理能力を高め、処理の少ない休日は処理能力を下げてコストを下げると言った使い方も可能です。必要な量だけをきめ細かく購入する事により、その分安く購入することができます。
国内ベンダーには不思議なことに月額固定の料金を提示するところが多いです。一見するとお買得に見えるますが、月額固定ではパブリッククラウドを利用するメリットの一つを捨てている事になります。
可用性向上のためのコストを削減
クラウド側でハードウェアが冗長化され、信頼性が確保されています。そのため信頼性を向上するためにハードウェアを追加購入する必要がありません。正確には冗長化にかかるコストを他のユーザーやシステムと共有しているわけです。その分、コストを削減することができます。
ただし信頼性が向上しているといっても、サーバー用ハードウェアを専用に用意した場合と同程度のものです。また障害時には自動的にマイグレーションが行われますが、この間数分~数十分程度の停止は避けられません。
もしそれ以上の信頼性を望なら、動作させるソフトウェア側での対応が必要です。分散処理に対応するなり、フェイルオーバーに対応するなりしなくてはなりません。
拡張性の向上
クラウド上では性能を向上させたり、サーバーを追加したり、ハードウェアの拡張を容易に行えます。ですが、それによってシステム全体の性能が向上するかはソフトウェア次第です。
たとえCPUの性能を上げたとしても、ソフトウェアが複数のCPUコアを有効に使えなければ性能は向上しません。たとえCPUとメモリを増やしたとしても、仮想サーバーのディスクIO性能は低い事が多く、ディスクIOの多いソフトウェアの性能は向上しません。CPUやメモリを増やしても性能を向上できないなら、台数を増やせばよいのですが、ソフトウェアが分散処理に対応していなければ台数を増やすにも限界があります。
最初から分散処理を念頭においてソフトウェアを選定、開発しないと如何にクラウド上で動いていると言っても、性能向上の限界に直に突き当たってしまいます。
パブリッククラウドを使うことのリスク
パブリッククラウドを使うことの大きなリスクに、事業の継続性について、SaaSやPaaSサービスの提供企業に握られてしまう事があげられます。パブリッククライド事業者がサービス内容の変更や、あるいは撤退を決断したとき、これを止める手段はありません。自社のサービスも撤退するのか、ほぼ設計からやり直すのに近いコストを払って自社のサービスの再構築をおこなうのか、判断を迫られることになります。
たとえばGoogleのトップページから二つほどリンクを辿った所に、Googleが提供しているサービスの一覧があります。最近、この一覧に並んでいるアイコンの数が大きく減っりました。2年ほど前から予告していたとおり、サービスの提供を取りやめたのです。その中にはGoogle Maps API(Flash用)などのSaaSも含まれていました。Googleの例では計画的に行われたサービスの廃止であっため、2年ほどの移行期間が設けられていました。万が一、倒産に伴う事業停止の場合には、突然サービスが止まる可能性もあるのです。
運用の難しさ
専用サーバーを10台運用した場合の複雑さを10としましょう。4台のサーバー上で10台の仮想サーバーを動かした場合の複雑さは10*4で40にもなります。実は同じ10台のサーバーを運用する場合でも、クラウドだとその複雑さは何倍にもなるのです。10台なら複雑さは4倍で済みますが、数百台数千台規模のパブリッククラウドになるとその複雑さは想像を絶します。
こういったシステムの運用には高い技術と経験がもとめられるものです。さてここで問題となるのは、そんな複雑なシステムを問題なく運用できるだけの、高い技術を持った企業がどれだけあるでしょうか?「そんな複雑なもの、運用できるのか?」と言うのは、クラウド黎明期から指摘されていたことなのです。
クラウドは数を沢山まとめればまとめるほど全体のコストを下げる事ができます。もはや専用サーバーや仮想サーバーのレンタル事業では、AmazonやGoogle、Micorosoftの提供するパブリッククラウドと価格競争するのは困難になっているのです。もし価格で互角に渡り合おうとするなら、たとえ技術が追いつかなくとも、同レベルの巨大なクラウドを作らざるえません。最近立て続けに起きたクラウドがらみの大きなトラブルは、ベンダーが背伸びして巨大なクラウドを構築したことに遠因があるように思うのです。
と言う訳で、クラウドを使う上で分かってなければいけない、欠点を上げてみました。クラウドを使うメリットや良い点はメーカーがこぞってアピールしてくれるのですが、欠点についてはまず説明してくれません。出来ないことを知った上で、正しくクラウドと付きあいましょう。