AWSは2015年にLambdaをローンチし、それによってサーバーレスコンピューティングが広く利用されるようになった。ユーザーはイベントトリガーとなるコードを書き、それを動かすための計算処理やメモリ、ストレージなどの手配はすべてAWSが担当する。今日(米国時間11/29)ラスベガスで行われたAWS re:Inventで同社は、Lambdaをもっとデベロッパーフレンドリーにするいくつかの新しい機能を発表した。サーバーレスは複雑性を減らしてくれるが、でもそれが成熟するためにはより高度なツールが必要なのだ。
デベロッパーは、コードは書くけどその実行に必要なサーバーの心配はしない。だからサーバーレスと呼ばれる。すべての面倒をクラウドベンダーが見てくれて、イベントの実行に必要なリソースの手配をすべて行なう。デベロッパーは、インフラストラクチャまわりのコードを書く必要がなくなり、アプリケーションが仕事をするために必要なコードだけを書けばよい。
AWSのやり方は、とにかく最初に何かをベースサービスとしてリリースし、顧客の利用とともに要求が増えてくると、サービスの機能を増やしていく。AmazonのCTO Werner Vogelsが木曜日(米国時間11/29)のキーノートで指摘したように、デベロッパーたちはツールについてよく議論をするが、それを聞いていると、誰もが自分の仕事のためにほしいツールのアイデアを持っていることが分かる。
そこで最初に同社は言語に着目して、新しい言語のサポートを導入した。たとえばRubyを使っているデベロッパーは、これからはRuby Support for AWS Lambdaを使って、“LambdaのファンクションをRubyに合ったコードで書き、それらをAWSの上で実行できる。Ruby用のSDKはLambdaの実行環境にデフォルトで含まれている”、とAWSのChris Munnsが、この新しい言語サポートを紹介するブログ記事で述べている。
C++派の人たちのためには、C++ Lambda Runtimeが発表された。また、これら以外の言語のためには、Lambda Runtime APIが新たに用意された。AWSのDanilo Pocciaはブログ記事でこれを、“ファンクションの開発に、さまざまなプログラミング言語やその特定のバージョンを使えるための、シンプルなインタフェイスだ”、と説明している。
またIDEに関しては、PyCharm, IntelliJ, そしてVisual StudioのサポートがLambdaに導入された(現状はプレビュー)。
AWSは、言語とIDEのサポートだけで満足していない。たしかにLambdaは(一般的にサーバーレスは)デベロッパーのためにあるレベルまでの複雑性を取り去ってくれるが、でもサーバーレスのアプリケーションは簡単なイベントトリガーだけではない。より高度なサーバーレスアプリケーションでは、システムレベルの要素を持ち込んだり、複数の部位をまとめたりしなければならない。Vogelは今日のキーノートで、このことを指摘した。
そこで複雑高度なサーバーレスアプリケーションのためにAWSが導入したのが、Lambda Layersだ。それは、彼らの説明によると、“複数のファンクションが共有するコードとデータを管理する方法”だ。それは複数のファンクションが使用するカスタムコードでもよいし、ビジネスロジックを単純化するためのコードを共有するような場合でもよい。
Lambdaの成熟と共に、デベロッパーの要求もうるさくなる。今回のさまざまな発表は、それらのニーズに応える努力の一環だ。