サーバーレスコンピューティングといっても3つの考え方がある
「今日は私のお気に入りのサーバーレスコンピューティングについて話をしたい」
こう語りWagner氏はセッションをスタートさせた。
Wagner氏は「サーバーレスコンピューティングは抽象化の対象によって3つの考え方に分かれる」と語り、説明を続けた。第一はVM。VMはスケーリングの単位としてのマシンで、ハードウェアを抽象化する。第二はコンテナで、スケーリングの単位としてのアプリでOSを抽象化する。そして最後が「最も新しい抽象化の概念であるサーバーレス。これはスケーリングの単位としての機能で、言語ランタイムを抽象化するものだ」と説明する。そしてAWSはこれら3つの抽象化のサービスを提供するという。それがEC2(=VM)、ECS(=コンテナ)、AWS Lambda(=サーバーレス)である。
ではこれら3つの中で選択をすればよいのかは、この問いに対してWagner氏は「何をしたいかによってその選択は変わる」と語る。「マシン、ストレージ、ネットワーキング、OSを構成したい」というのであれば、EC2、「サーバを実行し、アプリケーションを構成してスケーリングを制御したい」と言うのであればECS、「コードを必要な時に実行したい」というのであれば、Lambdaを選択するという具合だ。
Lambdaが提供する3つのメリットとその特徴
「まずはLambdaの詳細から説明したい」とWagner氏。Lambdaは「サーバの管理が不要」「継続的なスケーリング」「アイドル時間は課金されないことで、コールドサーバはなくなる」という3つのメリットを提供する。さらに「私が最も誇りに思っているのは価格体系だ」とWagner氏は胸を張る。Lambdaでは100ミリ秒ごとに0.21セントでコンピュート時間を購入できるようになっている。リクエストの料金は0.2セント。その上、時間、日、月ごとの最低料金も、デバイスごとの料金もなし。つまり「電気のように使いたいだけ使う。ムダにお金を使うことを気にしなくていい。そしてもう一つの魅力が、毎月100万件のリクエストと40万ギガバイト/秒のコンピュートが無料で使えること。これらのサービスはもちろん、プロジェクトやチームの大小を選ばず使用することができる。
Lambdaは使い勝手の良さも魅力だ。LambdaはBYOC(Bring Your Own Code)なので、コードをZipファイルにして送ることでLambda側で管理されるという。対応言語はNode.js、Java、Python。また開発者にとって嬉しいのが、ネイティブライブラリはもちろんカスタムライブラリも利用できるということだ。また使用法も柔軟で、「イベント(関数)の呼び出し、または送信できるのはもちろん、他のAWSサービスとも統合されており、サーバーレスエコシステム全体の構築ができる」とWagner氏は説明する。
さらにシンプルなリソースモデルを採用している。メモリは128MB~1.5GBの選択が可能で、それに比例したCPUとネットワークが割り当てられる。もちろん実際の利用状況をレポートされるので、パフォーマンスの管理も容易だ。そのほかにも認可も柔軟で、VPCを含め、リソースへのアクセスもセキュア。関数を誰が呼び出し、誰が実行できるのかまで細かく制御できるという。
Lambdaのプログラミングモデルは、AWS SDK(PythonおよびNode.js)を採用しており、そのアクセス権がライブラリと共にデフォルトで提供されるという。またオーサリング機能も提供されており、コンソールのWYSIWYGエディタで直接オーサリングできたり、Eclipse、Visual Studioなどのプラグイン、コマンドラインツールなど、好きな環境が使えるという。
またプログラミングモデルの中で最も重要になるのが、ステートレスの機能だ。LambdaではAmazon DynamoDB、S3、ElastiCasheを使ってデータを永続化できるという。またインフラストラクチャへの新和性はないため、マシンにはログインは不可となっている。