今日、Google IOの開会時に、Google App EngineチームはGoole App Engine 1.5.0を発表した。このバージョンにはたくさんの変更が加えられている。この変更によってこのインフラ上で実行できるアプリケーションの種類を増えることになる。
主要な変更は、長期実行できるインスタンスが利用できるようになることだ。以前までは、単一のスレッドのリクエストはアプリケーションの負荷によって動的に起動され、動的に停止された。この処理方法は、データ処理のスループットは上がるがすべてのアプリケーションに最適な方法ではない。新しい機能であるBackEndsを使えば、必要なメモリーとCPUを確保した長期間動作するインスタンスを利用できる。このインスタンスは常駐させること(インスタンスの起動と停止をすることで制御する)も動的に利用すること(要求に応じてオンラインになり、アイドルになると停止する)もできる。まだスレッド化はできないが、このBackEndインスタンスはインメモリのキャッシュを保持し、パラメータで決められた最大並列リクエスト数と同じ数だけのリクエストを同時に処理できる。
さらにPull Queuesを使えば、個々のインスタンスがタスクが押し出されるのを待つのではなく、インスタンスがタスクを要求できるようになる。これは今までと違った処理モデルの利点を享受したいアプリケーションのためのコーディングとアーキテクチャの変更だ。
そして、今までよりも低コストで、既定でHigh Replication Datastoreが利用できるようになる。
今年の見通し
今年の動きは興味深い。というのは、具体的な日時は明らかでないものの、今年の後半にはGoogle App Engineがプレビュー版からGoogleの正式な製品になる予定だからだ。
これによって、Google IO 2010で発表されたGoogle App Engine for Businessが統合され、すべてのGoogle App Engineの顧客が利用できるようになる。これによって価格体系も代わり、システム使用可能時間のサービス内容合意書とサービス規約も新しくなる。無料での利用も引き続き可能だが、より制約は厳しくなる。しかし、有償版の料金は1ヶ月、1アプリケーションあたり9ドルと使用料だけだ。また、複数のアプリケーションを利用しても定額(利用料はかかる)のプレミアアカウントもある。
利用料金の体系も代わり、CPU使用量に対する課金から、CPUインスタンス時間とAPIコール回数への課金になる。詳細はApp Engine Pricingページで確認できる。High Replication DatastoreもMaster/Slave Datastoreも1ヶ月、1ギガバイト当たり0.24ドルだ。
先へ、先へ...
元々、Google App EngineはPythonで実装されたアプリケーションをサポートしていた。すぐにJavアプリケーションをサポートして複数の言語をサポートするようになった。バージョン1.5.0ではApp Engine向け言語としてSDKがGoをサポートする。Goで書かれたアプリケーションが1.5.0の環境に配置できる日も近い。このSDKはLinuxとOSXの32/64ビットアーキテクチャをサポートする。
Google App Engineで利用できるGoはGoという言語のサブセットだ。unsafe
やsyscall
は利用できない。しかし、DataStoreやBlobstoreのようなAppEngine固有のAPIはサポートする。
他の言語と同じように、Goは単一のCPUスレッドのみサポートするとSDKに記されている。したがって、goroutinesとchannelsはあるものの、単一のスレッドでしか利用できない。ブログには、将来この制約は解消される予定だ、と書いてある。