テクノロジーの最近のブログ記事
Windows Azureの発表を気に日本国内でもクラウドコンピューティング(Cloud Computing)に対する関心が高まってきたようです。
クラウドコンピューティングの需要は、「ソフトウェア投資とネットワーク・ハードウェア投資を独立させ、ハードウェアに関しては、高い可用性を確保しつつ、需要に応じて傾斜的に増加させたい」という願望に基づいています。
IT事業に関わった方であれば、この切なる願いがよくわかるとおもいます。コモディティ製品が提供する以上の性能を追及すると、幾何級数的にコストが上昇するのが現状です。また、可用性(Availability)の向上のためにハードウェアの多重化を追求のコストも馬鹿になりません。また2重化しても問題は発生する場合もあり、ANAの例では4重化などしています。(ANAの対策は悪例の見本。4重化なんて実施例が少ないんだから未発見の障害が残っている可能性が高いし、設置・運用でミスが起きる可能性も高くなる)
需要自体は昔からあるので、それに対しての試みは過去にもいくつもなされています。P2Pやグリッドコンピューティング(Grid Computing)などは、上述の需要を満たす技術として注目を集めました。もっとも、前者は違法ファイルシェアリングによってアングラなイメージを払拭できず、後者は実装概念を理解せずにコンセプトだけに飛びついた人々によって曖昧模糊としているうちにトレンドワードではなくなっています。
クラウドコンピューティングの定義は、実はかなり曖昧なところがあります。下の図のレイヤー分けは定義の理解に役立ちます。
これらのレイヤーで上位の3つ、クライアント、サービス、アプリケーションは、Newな要素はないので無意味です。これまでASPだとかSaaSだとかWeb2.0などと騒がれてきた幻想用語の言い換えに他なりません。もしこれらの技術を「クラウドxxxxx」と読んでいる人がいたら、詐欺師を見るような目で見たほうがよいとおもいます。(Androidや、Chromeをクラウドコンピューティングに分類するのは、どんな意図なのか理解できません。Googleすごいって言いたいだけですか?)
IT関係者が望むクラウドコンピューティングはPaaS(force.comなど)、IaaS (Amazon EC2)といったところです。もちろん、PaaSはIaaSの上に構成されていないと無意味です。SalseforceやFacebookのバックエンドがIaaSとして整備されているかどうかは甚だ疑問でもあります。
しかし、本当にITインフラストラクチャが電気や水のように提供されるのでしょうか?
「PHPでアプリ作ったんで、世界中の人が使えるようにサーバ貸してくれ。1日1ユーザあたり100円で課金して、インフラ料金は40円で提供してくれ、明日から」といった感じで、アプリサービス提供環境を借りられるようになるでしょうか。
IaaSの実現のためには提供するいくつか制限があると考えています。
1、ACID(原子性、一貫性、独立性、永続性)が一部制限される。
2、完全なスナップショットバックアップ、トランザクションロールバック、ロールフォワードは提供されない。
3、トランザクションの平均タイムは保証できても、ワーストタイムは保証されない。
4、既存の開発言語、ライブラリの互換性が制限される。もしくは完全にProprietaryなものになる
上記制限を行う意図は、主に「書き込み操作」のパフォーマンスを向上させるためです。書き込みのACID性を100%から99.99%に下げるだけで、設計の自由度はかなり広がります。
これらの制限があると、銀行や、企業の会計などのエラーが1つたりとも許されないシステムでは利用できませんが、受発注ワークフロー、問合せ業務などの企業システムでは、ヒューマンエラーの発生率に比べれば、許容できる程度になるはずです。
実際に世の中で実装されているIaaSのクラウドコンピューティングを調べてみると、Webアプリ層・DB層の分散キャッシュで実装しているパターンと、分散ファイルシステムで実装しているパターンがみうけられます。個人的にはWebアプリ層の分散キャッシュはパフォーマンスの獲得に比べて、永続性の損失が大きいので、暫時的な方法であると考えています。(例えば、NCache)
Utility ComputingはIT技術者には夢だけど、クラウドコンピューティングというバズワードが提供してくれるかというと、無理っぽいですね。(参考)
最近管理しているシステムで、DBのストレージがシステムボトルネックになっています。
大体、一日1~5億トランザクション、インサートが5000万行くらい発生するので、主にストレージのランダム書込がボトルネックになっている様子です。
現在はRAIDも使わず単純にHDDを単体でぶら下げているだけなので、200IOPS(IO per Second)程度しかありません。DBのInsertやUpdateはランダム書込なので、IOPSが低いと使い物になりません。
IOPSをあげるための選択肢は3つあります。
- より高速なHDD使い、かつ多重化(RAID)を組む
- 半導体ディスク(DRAM)を利用する
- 半導体ディスク(FLASH)を利用する
それぞれ、メリットデメリットがあります。
| メディア | IOPS | G当たり価格 | 信頼性 |
| HDD RAID | 1,000 IOPS | 1000円 | 高い |
| DRAM SSD | 2~400,000 IOPS | 10万円 | 高い |
| Flash SSD RAID | Read 100,000 Write 10,000 | 3~5000円 | 低い |
選択肢1ですが、SATA HDD 1500回転の製品を使って、5~8台程度のRAIDを組んでもさほどIOPSは向上しません。(RAIDコントローラがバッテリー持っていて、Writeもキャッシュするようなストレージシステムは対象外です)
DRAM SSDは、高性能なんですが、さすがに高すぎます。いくら、1000倍の性能でても、お値段も1000倍です。また、上限サイズも限られ上位製品でも64~128GByteです。テラ単位のストレージを調達するのは現状ではかなり難しくなります。
そこで、Flash SSDでRAIDを組むという選択肢なのですが、昨年くらいまではランダム書込の性能がSATAと比べて優位性があまりなく、選択外だったのですが、ここにきて一気に性能があがってきました。
インテルの新製品X-25EですとRandom 4KB Writesで最大3,300 IOPSというスペックになっています。既存のHDDの15倍です。
これをみるとランダム書込で38MByteでています。9,500IOPSです。HDDのRAIDと比べて一桁良いパフォーマンスをだしています。(まあ、実際にはRAID1+0でくむ必要があるので、もう少し性能おちるでしょうが・・・) 価格性能比でみると前者2つの選択肢を圧倒します。
Flash SSDが書き込み回数寿命が短いだけでなく、過渡期の技術なので実績がほとんどありません。また、SSDを12~16台くらいつんだeSATAのエンクロージャーなど製品としてでてないので、自分で組まないといけません。となると、信頼性にどうしても疑問が残ります。
あと1年くらいすれば、環境もこなれてきてサーバストレージにFlash SSDを導入する選択も自然になると予測しますが、今年度はFlash SSDのサーバへの導入は控えるべきです。
システムの本格的なリプレイスが計画にあり、それまでのつなぎにどうしてもストレージ性能を2~5倍にする必要がある場合に限り、延命のためのシステム投資としてFlash SSD RAIDを1年だけ使うというのはありかとおもいます。
最近、実験的にクッキーレスセッション(Cookieless Session)、所謂、URL中にセッションIDを保有する携帯サイトでを作りました。
http://www.nogutetu.com/(S(xasfoiejwpfowef))/index.html
こういうやつです。
ASP.NET 2.0以降では、クッキーの使えない携帯などでもセッションオブジェクトを利用できるようにするため、下記の用に指定することで、強制的にURLセッションを利用することができます。
<sessionState cookieless="UseUri" timeout="240" />
PHP 5.0以降でもCookielessセッションはサポートされています。
実験の目的は、
1, クッキーレスセッションの文字列を認識してURLから除外するか?
2, 除外しない場合、スパムサイトとして認識されるか?
という2点です。
結果は、クッキーレスセッションを認識しません。きっちりインデックスURLに含まれています\(^o^)/オワタ
スパムサイトとして認識されているかというと、一応いまのところ稼動1ヶ月ですが、インデックス数は順調に増えているので、スパム認定はないようにおもえます。
インデックス数の推移
2008/8/13 10
2008/8/25 450
2008/9/10 480
2008/9/17 977
ASP.NETで携帯サイトを作る際は、セッションレスでつくるか、検索エンジンは識別してセッションを切るなどの処理が必要ですね。
前回の記事で、日本ではP2P融資は成功しないと書きました。
ではソーシャルファイナンスの全てが成立しないかというと、そうでもありません。
個人 → 企業のソーシャルファイナンス(P2B)は成立する
日本では資金調達手段が乏しいため、金融機関が信用力を実態よりも低く査定している事例がありまし、貸し渋りが横行しています。つまり、ソーシャルファイナンスの前提である、「既存査定よりもデフォルト率の低い資金需要」、「周辺に融資をしてくれる人がいない」という条件が成立しています。
資金調達についてもう少し詳しく分析してみましょう。
企業の資本には自己資本(株式など)と借入資本(銀行借入など)があります。
自己資本の調達方法:
・第三者割当増資、新株予約権
・株式公開
実際には、自己資本を増やすのは中小企業にとってたいへん困難です。株式市場に上場しているような会社のように簡単に第三者割り当て増資など実施できるものではありません。ベンチャーキャピタルなどが出資する事業もごく一部でしかなく、通常は取引のある会社に頼み込むか、社長や役員が出資しています。
一般的には、事業資金調達は金融機関からの融資を意味します。銀行の融資基準は以下のようなものがあります。
銀行の融資基準:
・担保 (土地、建物、株式・債券など、流動性があり市場相場が安定しているもの)
・利益 (前年度税引き前利益)
・財務 (債務超過に陥っていないか、営業キャッシュフロー)
・業態 (近年だと、不動産、レジャー、ITへの融資は厳しい)
上記の4つでほぼ全てです。担保物件があればすぐ融資してもらえます。また、利益が十分にあがっている場合も、さほど問題なく融資実行されます。
しかし、銀行から事業資金を必要とする場合は、新規事業の立ち上げや、会社の運転資金繰りに困っている場合などではないでしょうか? そのような企業に対しての資金需要にたいして融資実行する金融機関が日本では乏しいのです(これは融資側だけの問題ではなく、企業側にも問題があります)。
個人が企業に投資をするのは株式市場の役割です。今後、直接融資する融資市場ができるのはとても面白いと思っています。また、日本人の資産を保護するという点でも重要だと思います。
最近、アメリカのかなり怪しい債券の混ざったサムライ債が盛んに野村證券などから販売されています。日本人の財布は日本のためにつかいたいですよね・・・
P2B融資 (Person to Bussiness)なので、いまのP2P融資という言葉では概念が違います。メディアはソーシャルファイナンスという言葉を流行らせるほうが良いでしょう。
昨日、全日空のシステムが完全に止まってしまった。
過去の障害事例をみてみると、2003年、2005年、2007年と、毎年恒例といってもよいほどです。10年前ならいざ知らず、現在ではたかだか1万台端末、650万トランザクション程度のシステムにメインフレームをつかっているのは時代遅れといっても過言ではありません。
もちろん、サーバをUnixサーバにきりかえる計画はあるようですが、2012年って・・・現状のトラブル対応なんかでロスしている時間を考えると2014年までずれこむとおもっていいでしょう。
テクノロジートレンドかわっちゃうよ!!
中小企業の場合は、「今ある技術をすぐに導入」することが重要ですが、全日空のような大資本かつIT投資によって収益性が増減する会社は、将来技術を常に推測して投資すべきです。
全日空の場合社会インフラを担う企業なため保守的になりがちですが、社内の業務体制の変革に対して保守的なのと、業務システムを堅牢にするために保守的になるのは大きな違いです。
システムは落とさないように保守的な意見はOKですが、メインフレームを使い続けるということでシステムが落ちているのでは話になりません。
何百億円という投資を行っているにもかかわらず、この手の業務システムが障害を起こしてしまい、しかもその原因究明が1日たってもできないというのは、システムの複雑度が高すぎるためです。
システムはシンプルに、そして業務フローをシステムにあわせろ
経営陣が設計図を描けとはいいませんが、システム全貌を完全に把握している人間が取締役にいるべきです。すくなくともCOOに対して要求ができるポジションに配置しましょう。
一般にはほとんど認知されていませんが、海外ではP2Pレンディング(金融・融資)と呼ばれる仕組みが注目されています。有名どころではProsper(米国)、ZOPA(英国)、Lenging-Club(米国)、などがあります。(いずれも現時点では日本国内から利用することはできません)
P2Pというと日本ではファイル交換Peer-to-peerが有名ですが、こちらはPerson-to-Personの略で、要は個人が個人にお金を貸すための仕組みです。前からいろいろ分析していたのですが、先日あるVCの方とディスカッションする機会がありましたので、まとめておきたいとおもいます。
一般に銀行などの金融機関から調達するのを間接金融、株式などの発行によって市場から調達するのを直接金融とよび、個人がお金を借りようとすると間接金融を利用するしかありません。間接金融は銀行のコスト分金利が高くなりますし、金融機関の審査基準によって借りることができないケースも多くあります。
既存の金融機関は社会インフラとして行政からの統制をうけ、コンプライアンス、健全性、情報開示などを高いレベルで求められるため、どうしても金融システムに隙間が生じます。日本国内の例でいえば、経済信用レベルが低い方に事業資金を提供する仕組みはありません。貯金も仕事もない人がラーメン屋を開こうとしても、銀行どころか商工ローンでもお金を貸してくれません。
日本の場合は、「親・友達に頭を下げて事業資金を借りて来い。親や友達から融資してもらえないような事業プランや経営者にお金をだせない」と言われると、返す言葉がないものです。実際、貯金がゼロでも2、3年まじめに働けばある程度の原資を貯めることは可能ですし、周囲の知人がみな貯金をもっていないということはありません。
経済の発展途上国では事情が違い、周りにお金をもっている人がだれもいません。そこで現れたのがマイクロクレジットのグラミン銀行(バングラディッシュ)です。提唱者のムハマド・ユヌス氏はその功績をたたえられノーベル平和賞を受賞しています。(NHKスペシャル「沸騰都市」で、同国内のBrac Bank(ブラック銀行)のドキュメンタリーが作成されています。この番組では事業資金の例ですが、実際には生活資金も融資します)
P2Pレンディングはマイクロクレジットの一種で、間接金融であったマイクロクレジットを直接金融とすることに特徴があります。
このP2Pレンディング日本国内で成立するでしょうか? Prosperは2007年8月にSBIとジョイントを組んで日本法人を設立しています。ZOPAも日本法人を2008年3月に設立しています。そして、先日Maneo(日本初P2P)が開始しています。(ネット上で個人がお金貸し借り P2P融資今秋にスタート)
さて、このP2Pレンディングが日本国内で成功するでしょうか? 貸し手は貸金法の制限から大部分がファンドないし金融機関で、個人はほとんどないでしょう。その際、資金需要のある所得階層の、倫理観、慣習、可処分所得、昇給などを分析すると、次の結論に達します。
日本国内ではP2Pレンディングは成功しない!
細かい分析内容は、別の機会に記事にしますが、他国でP2Pが成功するのは、「既存のファイナンスの算定基準よりも実態信用力が高い集団がある」、「友人・親類など自分の周辺に貯蓄に余裕のある人間がいない」・・・というのが前提になっています。
日本では「友人・親類などみな貧乏」という人口階層は少なく、また、そのような階層のデフォルト率は高すぎて、事業としてのファイナンスが成立するためには高い金利が必要となり、ますますデフォルト率が高くなります。ですので、このような人たちにはボランティアで対応するのが適切なのかとおもいます。
次回は、日本でソーシャルファイナンスが成立する要件を考えて見ます。
参考情報:
Wikipedia:Person-to-person lending(英語)
その他P2Pレンディング:

