2008年8月21日木曜日

JavaWorld Day 2008とGoogle App Engine

JavaWorld Day 2008に参加しました。
残念ながらスケジュールが合わず、基調講演のみの参加です。

[プラットフォームとしてのインターネット -- クラウドのプログラミング]
米国Google ソフトウェアアーキテクト グレゴリー・ホーペ氏

Cloud Computing の時代は、「アーキテクトの夢」かつ「開発者の悪夢」になりうる。
通常のシステムとは考え方を変えなければならない。

[従来のACID]
Atomic 原子性
Consistent 一貫性
Isolated 独立性
Durable 永続性

[新しいACID]
Associative... 順序が変えられること。 (A+B)+C = A+(B+C)
Commutative... 交換可能なこと。 A+B = B+A
Idempotent.. べき等性。複数回実行しても同じ結果になること。 F(x) = F(F(x))。
リトライを繰り返しても副作用ないように
Disitributed... 分散を前提に。対応策としては "Try again" or "Give up"

後者は現実世界に近い。本人のエントリー"Starbucks Does Not Use Two-Phase Commit"を参照。

2. Google のインフラ
Google は、クラウドを実現する仕組みとして以下のものを備えている。
・Google File System (GFS)
・BigTable ... 分散処理に向くデータ構造。
・Map Reduce ... 並列処理を実現するために、状態を持たない(Stateless)。オブジェクト指向ではなく、関数処理に近い。
・Sewzell (ザウズル)... ログ処理に向く。並列処理を実現するため、直列処理の典型であるforループを使わない。

3. Google App Engine
Google App Engine は、このような仕組みを利用して動いてる。"Automatic Scale"な仕組み。


[感想]
Google App Engineの意義は、このようなGoogleのインフラ上でアプリケーションを動かせることだと、あらためて感じました。もっとスケールが必要なアプリを作りたいところです。

0 件のコメント: