シアトルで開かれた小さな展示会に招かれて講演をした際、思いもかけずサーバレスアプリケーションについて深く知る機会に恵まれた。サーバレスアプリケーションについては、数週間前にあるポッドキャストを聞いて、気になっていたところだった。
IBMの「Bluemix」グループで働いている友人が、マイクロサービスについて情報交換する集まりがあることをツイートした後、筆者を呼んでくれたのだ。開催場所は宿泊先のホテルからわずか数ブロック先だった。そこで筆者は、「AWS Lambda」に関して、より深い、実践的な意見を聞くことができた。
サーバレスアプリケーションにもサーバはある
サーバレスアプリケーションという言葉は、技術的な概念というよりは、マーケティング用語だ。Lambdaは別に、コンピュータなしでアプリケーションを動かすコンピューティングの革命ではない。筆者の考えでは、Lambdaはサーバを中心としないアプリケーションを構築するためのプラットフォームだと説明する方が、より正確だろう。この概念は、OSと密接に結びついたアプリケーション構築からの発想の転換だ。
Lambdaは、開発者が「Amazon Simple Storage Service(Amazon S3)」などAmazonのほかのサービスを利用した、イベントベースのアプリケーションを作ることを可能にする。その集まりでは、メディア共有アプリが例として挙げられた。この例では、アプリケーションのユーザーは、S3のストレージバケットに動画を置くことができる。従来のOS中心のアプローチであれば、通常は、AWSのインスタンス上で動作しているサーバが、S3のオブジェクトストレージを監視して、新しいファイルがないかをチェックする仕組みになる。
新しいファイルが見つかると、動画のエンコーディングプロセスが開始される。従来のOS中心の環境では、エンコーディングプロセスは仮想マシン上で実行されることになる。このため、エンコーダの仮想マシンに問題が起きると、それ以降のすべてのエンコーディングプロセスも停止してしまう。
Lambdaでは、独立した関数を作ることによってマイクロサービスを作成する。これらのマイクロサービスは、OS中心のフレームワークではなく、Lambdaのフレームワークを使って開発される。開発者は、各Lambda関数の実行に必要なRAMの量を選択し、AWSは、選択されたメモリの量に基づいて、その関数を実行するのに必要な計算リソースとストレージリソースのサイズを決定する。
今回のメディアエンコーディング関数の例では、S3がLambdaサービスにイベントを送信する。このイベントは、Lamda上に作られたエンコーダ関数の実行をトリガする。AWSは、S3から送られたイベントの処理に必要なだけの数のLambda関数を並行してインスタンス化する。開発者は、同時に並行して実行される関数の最大数を選択することができる。この制限は、MySQLによるバックエンドなどの、基盤システムに対する負荷をコントロールするための手段として利用できる。
Lambdaのフレームワークを使ったこのシンプルなエンコーダプロセスは、OSによる規模や弾力性の制約を受けずに済む。AWSのLambdaとS3が選択されたリージョン内にある限り、このアプリケーションはOSの状態とは関わりなく機能し続けることができるわけだ。
MicrosoftのAzure Service Fabric
Microsoftは最近、サンフランシスコで開催されたイベントBuild 2016で、「Azure Service Fabric」を一般公開したと発表した。Azure Service Fabricはサーバレスプラットフォームというよりは、「Windows Server」またはLinux上で動作するクラスタサービスとして売り出されている。Lambdaがどちらかと言えばコンピューティングの革命であるように見えるのに対し、Azure Service Fabricは、クラウドを利用したアプローチのための、マイクロサービスベースのアーキテクチャの進化であると捉えることができる。
Azure Service Fabricでは、既存のコードやスケーラブルなマイクロサービスを実行する。Service Fabric用にネイティブに書かれたアプリケーションは、VMをリソースプールとして扱う。サービスは個々の仮想マシンとは切り離されている。一般に言って、Service Fabricのクラスタは、WindowsやLinuxをベースにしたVMに対応している。実際、AWSのインスタンスのコンピューティング能力をService Fabricで使用することも可能だ。Lambdaと比べると、Service Fabricはかなりコンテナのオーケストレーションやクラスタリングに近い。
Azureで動作するService Fabricの売りは、多くのサービスが利用できることだ。AmazonがLambdaにS3を統合したのと同じように、AzureにもさまざまなAzureのパブリッククラウドサービスが統合されている。
この記事は海外CBS Interactive発の記事を朝日インタラクティブが日本向けに編集したものです。