AWS Lambda、サーバーを持たずとも使った分だけ支払う形で開発ができる

次の記事

専用ボックスで1カ月保存可能な総菜を提供する「オフィスおかん」、運営会社がYJキャピタルなどから資金調達


ほとんどの会社はオンプレミス、あるいはクラウド上のサーバーに開発したアプリケーションをデプロイする。それには、事前に何台のサーバーを用意し、ストレージとデータベースの処理能力がどの程度必要かを算出する必要があった。そして、アプリケーションを実行するために必要なハードウェアとソフトウェアを全てデプロイしなければならなかった。そのようなことに手間をかけたくなくないと思い、新しいモデルでアプリケーションを支えるインフラストラクチャのデプロイを代わりに行ってくれるようなサービスを探してはいないだろうか?

Amazon Web Serviceの Lambda Service は、今日からそれを実現する方法を提供する。Lambdaを使用することで、巨大なアプリケーションをデプロイする代わりに、アプリケーションを複数の単一トリガーとしてデプロイする。使用したコンピューター処理の分だけを支払うことができ、100ミリ秒単位で使用量が加算される。他と連動するものでも個別に動くものでも、トリガーはいくつでも設定することができる。条件が揃った時プログラムしたアクションを実行する。

サーバーを必要としないアプリの世界にようこそ。

Slide showing deployment evolution from data center to Lamda.

開発の進化(クレジット: Adrian Cockcroft, Battery Ventures。使用許可を取得)

近年、デプロイのスピードとデプロイが有効な時間は劇的に短縮している。Lambdaはさらにそれをミリ秒の単位に落とし込む。

Lambdaは開発者が求める優先事項と要件の変化に対応してきている。私たちは革命の最中にいるのだ。AWSのre:inventでLambdaがローンチした時にもそれについて記事を書いた。

AWSのCTOであるWerner Vogelsは、プログラマーの全体の開発労力を低減することができると指摘する。開発者はコードを書き、イベント・トリガーを設定し、条件が揃った時に自動でアプリを実行することができる。

スマートフォンからユーザーがファイルをアップロードした時、ウエブサイトの「購入ボタン」をクリックした時、あるいは人間が関連しない機械と機械とのやりとりといったアクションをトリガーとして設定することができる。柔軟なものなので、大抵何でもトリガーにすることができるそうだ。さらに開発者は使い慣れたプログラミングのツールでトリガーを製作することができる。また、Amazonは一般的に良く使用される予め書かれたコードも用意している。

100ミリ秒単位で条件に合うかどうかを判別している。モノのインターネットの場合、アプリケーションにデータが常に流れ込んでいる場合もあるが、週に一回しか発生しない場合もある。例えば、週に一回だけドローンが電線の写真を撮影している場合、ドローンが写真をアップロードする度にそれがトリガーとなり、アクションが起きる。写真を処理し、保存して仕事は終わりだ。それだけのためにサーバーを用意する必要はない。Amazonは従量課金でサービスをカスタマーに提供する。アプリケーションをデプロイするために必要なインフラストラクチャの心配をせずとも単純で簡単に使える方法を提供しているのだ。

新世界

正確に言うと、アプリケーションにサーバーが必要ないということではない。どのアプリケーションもそれを支えるハードウェアがあってこそ存在している。しかしAmazonはLambdaで、開発者のプログラミングをある程度自動化し、他のデプロイメント、ストレージ、データベースに関連する複雑なことをAWSが肩代わりすると、AWSプロダクト戦略のジェネラルプロデユーサーであるMatt Woodは説明する。

もっと分かりやすく説明するために、彼はAmazon S3やDropboxのようなファイルのストレージサービスを例に出した。お気に入りのオンラインストレージサービスにファイルを移す時、ユーザーはファイルを保存したら、後はサービスのことは気に留めないだろう。「サーバーとストレージの容量をデプロイしなければならない」と悩んだりしない。サービスがユーザーの代わりにそれらを行っているからだ。同様にAWSは特定のサーバー、データベース、ストレージをプロビジョニングしなくとも、開発者の代わりにそれらの主要テクノロジーを担うという。

シンプルに聞こえるが、技術者でもこれを理解するのは難しいとベンチャーキャピタルBattery Venturesのテクノロジー・フェローを務めるAdrian Cockcroftは言う。これは人々が慣れ親しんだモデルを壊すものだからだと彼は言う。

「多くの人はLambdaに戸惑います。しかし、たくさんの人がサーバーのないアーキテクチャを考えてきました。機械をスケールアップしたり、スケールダウンする必要はありません。機械は目に見えなくなり、とてもコスト効率の良いアーキテクチャなのです」と彼は言う。

また、彼はこのアプローチにはいくつか利点があり、その一つとして既存のものより安全であると話す。どれか一つにハックされたとしても、ハッカーは全部を入手できるのではなく、パズルの一つのピースだけしか入手できないからだという。それも、その一つは一秒も存在していない。

Lambdaが活躍する場面

Lambdaは2つのシナリオで最適に機能するとAWSのWoodが言う。一つは、アクションがごくたまにしか発生しないような場合だ。つまり、ほとんどの時間を使用していないためにサーバー代を支払うことが理に適わないような場合だ。例えば、週に一度のドローンでの写真撮影などだ。

もう一つのシナリオは規模の大きい複雑なものを構築し、スケールを早く行いたい場合だ。インフラストラクチャをデプロイするのが難しいだろう。例えば、気候のセンサーネットワークが随時情報を送信していて、情報を集めた後に複数のイベントを発生させる。センサーがデータを送付する度にイベントをトリガーし、必要な一連のアクションをプログラムすることができる。ミリ秒の単位で同じようなことが頻繁に発生している状況だ。

この技術を採用しているクライアントの一社はメジャーリーグ(MLB)だという。トリガーはビッチャーが投げた時、ヒットがあった時、走塁した時などだ。そのようなデータをリアルタイムでトラックしている間、Lambdaはそれを走らせるためのインフラストラクチャを担っている。その時情報を収集してデータを処理するのに必要な分のコンピューター処理能力を提供しているのだ。そして一年の内の野球が行われていない6ヶ月間、MLBはそのインフラストラクチャに料金を支払う必要はない。

このアプローチはプログラミングの問題を全て解決する魔法のようなものではないが、既存のサーバーのセットアップを必要としない開発者が使える新しいツールとなるだろう。また、開発者がプログラムを設計し、デプロイする方法を決断する時の新たな選択肢にもなるだろう。

「Lambdaは、開発者がアプリケーションを開発するための舞台裏の問題に気を取られず、アプリケーションの開発に集中できるようになります」とWoodは言う。Lambdaはサーバーのないアプリ開発の世界へと先陣を切った。

[原文へ]

(翻訳:Nozomi Okuma /Website/ twitter