「AWS Lambda(ラムダ)」というAmazon Web Services(AWS)のサービスをご存じだろうか。イベント駆動型コード実行サービスと呼ばれるもので、データベースにデータが書き込まれるといったイベントやスケジューラーをトリガーにして起動し、登録しておいたJava、JavaScript(Node.js)、Pythonなどのコード(Lambdaファンクションと呼ぶ)を実行する。

 米アマゾン ウェブ サービスが年次イベント「re:Invent 2014」で発表して以来、システムアーキテクチャーを大きく変える可能性を秘めているとして、世界的に注目を集めている。

 AWSの東京リージョン(データセンター群)では2015年6月に一般提供が始まり、データ連携などに使われ始めている。例えばNoSQLデータベースに精細な画像を含む商品データが書き込まれると、それをトリガーにしてLambdaファンクションが起動し、サムネイル画像を作成してオブジェクトデータベースに書き込んだり、商品データの場所などのメタ情報をリレーショナルデータベースに書き込んだりする、といった具合だ。

 Lambdaの特徴の一つは、必要なときだけCPUやメモリーなどのコンピューティングリソース(資源)を使い、処理が終わると解放すること。自動車に例えると、停止するたびにエンジンを止める「アイドルストップ」のようなもの。そのため「アイドルストップアーキテクチャー」と呼ぶことができる。コンピューティングリソースを使うのは、処理をしているときだけ。処理をしないときは、コンピューティングリソースを解放している。

 対照的なのは、仮想マシンを使ってコードを実行する方式だ。その場合は、処理をしていないアイドル時間も、CPUやメモリーなどのリソースを専有し続けることになる。これはリソースの無駄遣いと捉えることができる。

 処理が終わるとリソースを解放するLambdaであれば、多数のユーザーによる無駄の少ないリソースの共同利用が可能になる。リソースをA社が使って解放し、次はB社が使って解放する。この方式で、多数のユーザーがリソースを共同利用することにより、リソースを無駄なく使うことができる。

 この仕組みはコストに影響する。Lambdaの料金は非常に安く設定されている。メモリー1GBを使う場合、1カ月の料金は、Lambdaファンクションの呼び出し100万件まで、トータルの使用時間40万秒(約111時間)までなら無料だ(他のサービスとの間でデータをやり取りする場合はデータ転送料が別途発生する)。それを超えても、例えば、メモリー1GB・100時間の使用量で、リクエストがさらに100万件までなら税別で約6.2ドル(同)。アイドルストップによって究極の乗り合いを実現するからこその料金といえる。パブリッククラウドサービスの「多数のユーザーが使う」という特性を存分に生かすアーキテクチャーなのだ。

 Lambdaと同様のサービスは、他のパブリッククラウドサービスでも提供されている。米マイクロソフトのAzureでは「Azure Functions」が該当する。これは2016年11月に一般提供が始まった。

 2017年は、LambdaやAzure Functionsなどのイベント駆動型コード実行サービスが普及期に入ると予想される。まずは、実稼働時間が短く、リソースが遊んでいる仮想マシンを置き換えていくだろう。さらに、コストの安いイベント駆動型コード実行サービスをフルに活用する、斬新なアーキテクチャー設計を試みるケースが登場するかもしれない。