サーバーレスアーキテクチャ上のファンクションは、何らかのイベントをトリガーとして呼び出されます。イベントごとに実行プロセスが起動し、ファンクションの終了とともにプロセスが終了。アプリケーションサーバーが「常駐型プロセス」を実行するインフラストラクチャだとすれば、サーバーレスアーキテクチャは「非常駐型プロセス」をイベントによってトリガーするインフラストラクチャだといえるでしょう。
代表的なサーバレスアーキテクチャを実現できるクラウドのサービスというとAWS Lambda、Google Cloud Functions, Azure Functionsなどが思い浮かびますが、これらのサービスはFunction-as-a-Service(FaaS)とも呼ばれます。FaaSとサーバレスアーキテクチャは何が違うのでしょうか。
オンラインメディアで取り上げられている記事から見ていきたいと思います。
伊藤直也氏が語る、サーバーレスアーキテクチャの性質を解剖する
10月24日に開催された「QCon Tokyo 2016」での、一休 CTO 伊藤直也氏の講演レポートです。
現場でサーバレスアーキテクチャも構築してきている方の話で具体的でわかりやすいです。
・サーバレスアーキテクチャは、現場の感覚では、運用が楽でスケールして安い。従来の、インスタンスをずっと立ち上げておく運用やオンプレミスサーバの運用よりずっといい
・もちろん、向いていないシステムもありますが、アーキテクチャの性質を見てみると、 いま一般に考えられているよりも広がっていくのではないか
「AWS Lambda」で実現する、サーバーレスマイクロサービスの未来形
CodeZineの、AWS Summit Tokyo 2016でのAWS Lambdaのゼネラルマネジャー Tim Wagner氏の講演レポートです。
システム抽象化の3つの考え方
1. VM: マシン単位でスケーリング
2. コンテナ: アプリの単位でスケーリング
3. サーバーレス: 機能の単位でスケーリング
AWSでは、1. がEC2, 2. がECS, 3. がLambda。「マシン、ストレージ、ネットワーキング、OSを構成したい」というのであれば、EC2、「サーバを実行し、アプリケーションを構成してスケーリングを制御したい」と言うのであればECS、「コードを必要な時に実行したい」というのであれば、Lambdaを選択するとよいとのこと。
Lambdaは「サーバの管理が不要」「継続的なスケーリング」「アイドル時間は課金されないことで、コールドサーバはなくなる」という3つのメリットを提供する。時間、日、月ごとの最低料金も、デバイスごとの料金もなし。つまり「電気のように使いたいだけ使える」。また、LambdaはBYOC(Bring Your Own Code)なので、コードをZipファイルにして送ることでLambda側で管理されるという。対応言語はNode.js、Java、PythonそしてC#。
IoTデバイスからCDNまで!ますます拡がるLambdaワールド
JAWS-UG on ASCIIでの、AWS re:Invent 2016レポート。re:Invent 2016で発表された、AWS LambdaのC#サポートほかを報告しています。
C#サポート以外にもLambdaの活動範囲は拡大していて、AWS Greengrassは、今回発表された「AWS Snowball Edge」にも組み込まれているほか、Amazon LuxやAlexa Akills KitでもLambdaが動作。
さらに今回は「AWS Lambda@Edge」が発表され、CDNサービスのCloudFrontにおいてもLambdaが動作するようになりました。
128MBメモリ、50ミリ秒という制約はあるものの、CloudFrontにLambdaを配置することで、HTTPヘッダの書き換えやユーザー認証、デバイス検出、コンテンツのスイッチ、A/Bテストなど幅広い用途での利用が可能になります。