今、あるお客様にクラウドの提案を行っている。
クラウドによって何か新しいことができそうという期待感がある一方で、クラウドという言葉がバズワード化する中で、かえって誤解が多くなって苦戦を強いられている。
今回はそのことについて説明したい。
クラウドに限らないことだが、「XXとは何か」といった議論をするのが私は大嫌いだ。
もし社内でこういった議論に明け暮れているようなら時間の無駄だと思った方がいい。こういった議論は大体、声の大きな人が勝つことになっているからだ。
しかし、お客様に対しては、こちらに目を惹きつけないといけないので、バズワードであってもクラウドという言葉を使いたくなる。ちなみに、バズワードは、Wikipediaにはこのように説明されている。
その分野に明るくない人にイメージだけを押し付けたり、「よくわからないが凄そうなこと」を想起させることを目的とした宣伝文句として使うことも可能であり、言葉だけが先歩きして広まることも多いため、事情を知らない多くの人は価値のある言葉として捉えてしまうことがある。
要は、お客様の都合のいいように解釈してもらって、興味をもってもらえたらそれでOKということなのだが、前述したように、具体的な提案の段階に入ると先入観が邪魔をして誤解だらけとなり、なかなか前に進まなくなる。
具体的には、大規模なトランザクションを抱えているお客様への「企業内クラウド」の提案を行ったのだが、それが、クラウドという言葉とAmazonやGoogleを強く結びつけると、基幹系ではちょっとね、と短絡的に受け取られてしまった。
クラウドを説明するときのAmazonやGoogleなどのPaaS/SaaSのメッセージが強すぎるのも悪いのだが、そもそも、提案する側がよく整理できていないままミソクソに話してしまったことが一番悪い。というわけで、自分なりに「クラウドとは何か」を整理することにした。
まず、
クラウドの目的と要件
1.どんなにトランザクションが増えてもスケールできること
2.その大規模なシステムを安く利用できること
3.サービスレベルを保証できること
要は、サービスレベルを保証しつつスケールできるシステムを安く提供することが第一の目的である。
サービスレベルの保証とは、主にパフォーマンスと耐障害性の保証で、トランザクションの量が増えてもパフォーマンスが劣化しないようにすること、また、一部のノードが故障しても動的なノードの追加/削除機能により回復できてダウンタイムを最小にできることである。
実際に、AmazonやGoogleなどのPaaSなどを利用したり、Hadoopなどのオープンソース分散システムを活用することで、サーバやソフトウェアの利用コストを削減できる。また、本日、AmazonのEC2が正式サービスになってSLA稼働率99.95%保障という発表を行っている。(EC2は正式サービスじゃなかったのね・・)
これらに共通するアーキテクチャーが、Scale-outモデル。Scale-outできれば、高価な高性能なマシンは必要なく、比較的安価なマシンで十分である。ただし、これまでのSMPやクラスタリングによるScale-upのアーキテクチャから、Grid的なScale-outのアーキテクチャへの移行が必要となる。
また、多くはRDBではなくkey/valueで格納する方式をとっている。
key/value方式における検索技術では、memcachedなどの分散メモリー・キャッシュ技術や、MapReduceなどの並列分散処理技術が注目されている。
次に、
クラウドの提供手段
1.企業内クラウド
2.PaaS/SaaS型クラウド
OracleのCoherence、IBMのWebsphere XD Data Gridといった、Scale-outモデルのエンタープライズ製品がある。
これらは、キャッシュ機能を前面に出しているものの、key/valueで格納するというアーキテクチャーになっておりScale-outできる。ベンダはこれらを「企業内クラウド」と呼んでいる。
年々増加するトランザクションに対応するには、Scale-upのアーキテクチャではいずれ破綻すると考えられるので、Scale-outアーキテクチャへの移行は早い段階で準備すべきである、というのが企業内クラウドのキーメッセージ。
また、現在すでに金融系の大手で大量なトランザクション処理を安価なクラスターで、高信頼に実施している実績があり、クラウドというイメージよりは基幹系そのものというイメージになってきている。(By IBM Sさん)
特に、最初はお客様のシステムにキャッシュを目的で導入したが、最後はシンプルなAPIで統一された企業内クラウドとしての形になって、DB性能がボトルネックにならなくなった、という結果は非常に評価できる。(By Aさん)
PaaS/SaaS型クラウドは、AmazonやGoogleなどが提供するサービス。企業内クラウドとアーキテクチャは同じであるが、従量制サービスであることが違う。
また、格納する場所が自社のデータセンターか、あるいは、AmazonやGoogleという雲の上のストレージかの違いはある。
下図は、ECサイトのクラウド利用例であるが、商品詳細ページや画像といったものをクラウド上に置くことで、検索レスポンスの向上、および、自社サーバへの負荷軽減をもたらす。商品情報は、原価などを除けばセキュリティを心配する類のものではなく、基本的に人の目に触れさせるべきものなので社内のサーバにおく必要はない。
最後に、
クラウドの本質と動向
1.抽象的に定義されたデータベースサービスへのアクセス手段である
2.企業内クラウドとPaaS/SaaS型クラウドの融合
クラウドで重要なのは、データの格納場所というよりは、データの検索、更新といった処理を含めて、サービスとして、データベースのサービスを受け取るというところにある。(By M先生)
クラウドを抽象的に定義されたデータベースサービスへのアクセス手段と定義するのはどうだろう。
企業内クラウドは、最初は大手ベンダーによるキャッシュ目的で導入され、最後はアーキテクチャ変更をもたらす。
柔軟にScale-outする複数の比較的安価なサーバー構成のもとで、企業内クラウド製品を提案できれば、お客様のニーズにもこたえられると思われるが、ベンダーにとって安いサーバをいれてビジネスになるかどうかは疑問である。ただ、Cloudが本格的に立ち上がるまでの、この数年の間は、こうしたスタイルで、ベンダーさんが「企業内クラウド」で頑張るしかないだろう。
そして、数年後には、これらのシステムををベンダーさんのクラウドが引き取ることになるかもしれない。(By M先生)
基幹系システムを雲の上に置くなんてナンセンスである、なんて思われない日が将来やってくるのだろうか。
<関連>
クラウドを15の否定で表現
セキュリティは最後の難問題
Object Grid(IBMのWebsphere XD Data Grid)に関する情報:
WebSphere
清水さんの資料 オブジェクト・グリッド
Object Gridは、Billy Newportという方が作ったもの。(IBM社員らしくない天才といわれているらしい)
Billy Newport's blog
OGのすべての説明が書かれているWikiがあります。例えば、EntityManagerに関しては:
Entity Manager
ReferenceタグやSampleなどのタグから色々な情報に移れます。
読みやすいのは、例えば、
Reference Sample
でしょうか。
0 件のコメント:
コメントを投稿