2010年7月17日土曜日

クラウドテクノロジーを知る(概要編)

技術者は常に未来を見据え、どのような技術や知識が市場価値をもつのかを意識していかなければならない。

シリコンバレーではソフトウェア部門へのベンチャーキャピタル投資案件が一番多いとのこと。

これからの30年を見据えるならば、英語、中国語、ソフトウェア開発、ファイナンスを重点的に勉強することが重要だと私は思う。

英語はグローバルスタンダードなコミュニケーションツールだ。

中国は世界トップの経済大国になる。

ファイナンスは世界を瞬時に駆け巡るグローバルマネーを手に入れるために欠かせない知識だし、P/L、B/S、C/Fを読み解けなければ間違った意思決定をすることになる。

ソフトウェアはより多くの仕事を自動化することができる。10年を待たずしてCPUのトランジスタは人間の脳細胞の数を上回るだろうから、コンピューターに対する人間の依存度はさらに増していく。

そして今、クラウドコンピューティングが本格化してきている。
ということで、クラウドがもたらす恩恵と、クラウドの基盤となるソフトウェアテクノロジーを俯瞰して全体像を把握しておこう。テクノロジーを戦略的に使ってライバルに勝つために。

何故クラウドなのか?

なぜ従来のシステムではなくクラウドを知らなければならないのか?

1、運用コストの削減
2、SLA【Service Level Agreement】の向上

システムだけに焦点をあわせるならこの2点が理由になる。
そしてこの2つの効用を手にいれることが顧客を創造することにつながる。

ドラッガーいわく、企業がもつ機能とは”マーケティング”と”イノベーション”の2つであり、その2つだけが成果をもたらすとのことだ。
情報システムはその2つの機能にとって不可欠なものであるが、情報システム自体もイノベーションを続けなければ成果がもたらされることはない。
では企業にとっての成果とは何か?
それは顧客の創造である。
つまり、クラウドに移行することでマーケティングやビジネスプロセスのイノベーションが可能になり、顧客をより創造できる可能性が高くなるからクラウドを知らなければならないということになる。


なぜ運用コストを削減できるのか?

運用コストを削減できる理由は、従来のシステムとクラウドシステムを比較すると納得できる。

比較対象 従来のシステム クラウドシステム
ハードウェア トラフィックやデータが増えるごとにグレードアップ トラフィックやデータが増えたら同スペックサーバーを追加
データベース SQLを用いたRDBMSなので、テーブルの分割や分散DBの構築に人手が必要。 KVS(キーバリューストア)型のDBなので、ノードを追加すれば自動スケールできる。
バッチ処理 マシン1台のスループットに依存 複数台のマシンにタスクを振り分けて並列処理
OS 1台の物理領域で1OSを起動 仮想化によって1台の物理領域で複数OSを起動

1つめは、ハードウェア投資を低減できるということ。
従来のシステム(先進的な企業はあまり採用していない)では、トラフィックやデータが増えるとシステムを増強するためにハードウェアをさらに高スペックのものに切り替える。スペックの高いマシンは価格も高いと相場がきまっているので、必然的にハードウェアへの投資額も増えることになる。クラウドシステムでは大量に普及している一般的なマシンを使って、全体で価格性能比が最も高くなるように構成されるのでハードウェア投資を抑制することが可能となる。


2つめは、運用コスト(人的リソース)を削減できるということ。
SQLを用いるRDBMSはマスタとスレーブ構成が一般的で、データが増えた場合にレスポンスが遅くなるため、ある時点でSharding(テーブルを分割して複数マシンに保持)する必要が出てくる。Shardingするとなるとrow(行)の持ち方や、スレーブ全てに書き込みを行う際にもテーブルの分割が発生する。これらの処理を自動化するのは難しく、運用コストの増大に拍車をかけることになる。KVSのDBならば、マシンのノードを追加するだけで自動的にデータを割り振って保持してくれるので、データが増える度に発生する作業を大幅に削減し、運用コスト(人的リソース)も削減することができる。


3つめは、並列処理によってリニアな性能向上が実現できるということ。
日々のログ解析などのバックエンドプロセスを実行するときにタスクを分散して実行することでスループットを大幅に向上することができる。yahooの方がすでにブログでも書いているが、分散ファイルシステムのHadoopを使って6時間6分35秒かかっていたログの集計処理を5分34秒まで短縮化できたという。


4つめは、仮想化によってマシンを効率的に利用出来るということ。
1台のサーバーに1つのOSで稼働させるとなると、マシンの台数が増えたときに稼動効率が低下する場合が多い。一方のサーバーはフル稼働しているのに他方のサーバーはほとんど稼働していないとなるとTCO(total cost of ownership:総所有コスト)が増加し、競争力が弱まることになる。
サーバーをフル稼働させるために、Xenなどの仮想化ソフトを導入して1台で複数のOSを稼働させることで無駄なマシンを追加する必要がなくなる。


次に、何故SLAの向上が期待できるのか?
システム障害が発生する主な要因は大きく分類すると次の3点になる。

・ネットワークの障害
・ハードウェアの障害
・ソフトウェアの障害

ソフトウェアの障害は原因さえ把握できれば迅速に対応できるが、ネットワークとハードウェアの障害のほとんどは物理的な障害になるので、復旧までに時間がかかる場合がある。CPU、メモリ、HDD、マザーボード、LANケーブル、ハブ、スイッチ、ルーター、停電といったリスクも考えると複数のマシン、あるいは複数のデータセンターに同じデータとアプリケーションを分散するクラウドは全体としての稼働率を向上させることができると同時に、重要なデータが消失するリスクも軽減できる。

実際、amazonやgoogleなどのグローバル企業はある国から別の国のデータセンターへとデータを分散して書き込みするなどすでに地球規模の分散システムを構築している。



そして、これらのシステムを構築するのに必要なのは下図のOSSを組み合わせられる知識と、安価なサーバーだ。


クラウドシステムはセキュリティ上の課題が多く、顧客情報などの機密性の高いデータはオンプレミスのサーバーに保有するといった企業も多い。
しかし、JSNAによる2009年度の情報セキュリティインシデント調査では、管理ミス・誤操作・紛失・盗難・内部犯罪といったヒューマンエラーが8割以上に登っていて、セキュリティーホールやバグといったシステム自体の脆弱性による漏洩は5%にも満たない。
リスクに過剰反応してクラウドを導入しない組織は、銀行は信用できないから自宅に現金を置いておくという資産家のおじいさんと同じ発想をしている。自宅に泥棒が入ったり、火事や地震のリスクを考えれば、高セキュリティな銀行に預けておくほうが安全なのは明らかだ。
アテにならない少数の人間の脳に機密情報の堅牢な保護を託すよりも、科学的に創造されたアルゴリズムと、膨大な時間を費やされて検証されたシステムの堅牢性に依存する方が遥かに安全で安上がりなのである。

0 件のコメント:

コメントを投稿