サーバーレスのサービスのうち約7割はAWS Lambda
CNCF(Cloud Native Computing Foundation)の調べでは、サーバーレスのサービスを利用中と答えたのが38%、未使用が37%、1年以内の利用検討が26%になり、昨年よりもサーバーレスの認知や利用も増えている。また、サーバーレスのサービスのうち、約7割がAWS Lambdaを利用しており、売り上げもここ1~2年に急速に伸びているという。「もともとWebやゲームのお客様が多かったが、最近は模様眺めをしていたエンタープライズのお客様からの相談を受けている」(西谷氏)。
続いて、西谷氏はサーバーレスのメリットを説明する。Lambdaの場合、関数を実装すれば、サーバーのプロビジョニングや管理が不要になり、イベントの数にあわせてスケーリングできる。冗長化や高可用性といったインフラを考える必要もなく、テストやモニタリングもサービスによって自動で行なわれる。さらに処理した分だけ細かい単位で課金されるので、コスト面でもフェアだという。「Undifferentiated Heavy Liftingの作業の大部分から解放される。サーバーを用意しないで済むので、アプリケーション開発が迅速になり、開発者は差別化しやすい実装にフォーカスできる」と西谷氏は指摘する。
Lambdaを前提とするサーバーレスアプリケーションはイベントソース、ファンクション、サービスの3つから構成される。たとえば、「S3にオブジェクトが作られる」というイベントをトリガーにLambdaファンクションが呼びされ、Node.js、Java、Python、Go、C#などの言語で書かれた特定のコードが実行される。もちろんAWSや他社も含めたサービス連携も可能だ。
また、Lambda自体の実行環境もCDNのエッジ(Lambda@Edge)や組み込み機器(Greengrass)などに拡がっているほか、開発ツールやCI/CD、モニタリング、セキュリティなどLambdaを取り囲むエコシステムも拡充されつつある。西谷氏は、「これまでLambdaはローカルテストがやりにくいと言われていたが、今ではAWS SAM CLIを使える。フロントエンドやモバイル開発向けのAWS Amplifyのようなライブラリも提供されている」とアピールする。
利用シーンの増えるサーバーレスの事例と開発
Lambdaは利用シーンも増えている。たとえば、LOWRYS FARMやGLOBAL WORK、LEPSIM、niko and…などのブランドを展開するモバイル通販サイト「.st」のバックエンドはLambdaが採用されている。「特徴的なのはワンタップのクーポンが配信されていて、毎日12時にスパイクが来る。こうした負荷が来ても、自動的にサービスを縮退して、リクエストをさばいている」(西谷氏)。
また、当初もっともよく使われていたケースとして、画像処理が挙げられた。S3に元画像が置かれると、それをトリガーにLambdaが起動し、自動的にサムネ画像が作成されるといった使い方だ。すでに事例で発表されている日経新聞社の誌面ビューアでは、この使われ方が採用されており、同様のことをEC2でやった場合に比べてコストも1/10くらいに抑えられたという。
Kinesisで扱うIoTやログデータなどのストリーミングデータ処理にもLambdaが用いられる。たとえば、VOYAGE GROUPのアドネットワークである「Zucks」で採用されており、データ連携先が増えても、リアルタイム性を落とさず、規模を拡大できている。また、東京海上日動火災保険ではオンプレでのシステムログをKinesisに送り、Lambdaで分割したり、保存したりしているという。
さらにストリーミングではないが、Sansanでは名刺管理サービスのEightにおいて、人物をリアルタイムにリコメンデーションする処理をStep Functionsで行なっている。「リアルタイム性を確保するために複数のLambdaファンクションが連携して動いているが、ここのオーケーストレーションをStep Functionsで実現している」(西谷氏)とのことで、約2ヶ月で実装を完了したという。
こうしたサーバーレスアプリの開発に関してだが、簡単なファンクションであればLambdaコンソールから関数を登録すれば完了する。また、開発ツールのCloud9上で書いたコードをテストし、Lambdaにデプロイできるほか、各種IDE(統合開発環境)用のプラグインも提供されているという。また、AWSでライフライクル管理を行なう場合は、コード管理はGitHubかCodeCommit、ビルドはCodeBuildを使う。また、β版やプロダクトのデプロイはサーバーレスアプリを定義するAWS SAM(Serverless Application Model)を使い、CloudFormationでデプロイすることも可能だ。ただ、現状AWSはテストツールは用意されていないので、サードパーティのテストツールを使ったり、手動で実施する必要があるという。
最後、西谷氏は「今、Amazon.comを作るならサーバーレスで作るだろう」というアンディ・ジャシーAWS CEOの言葉を紹介し、AWSのサーバーレスへの本気度をアピール。Serverless Confで実践的な知識やノウハウを身につけてほしいと語り、基調講演を終えた。