hidekatsu-izuno 日々の記録

プログラミング、経済政策など伊津野英克が興味あることについて適当に語ります(旧サイト:A.R.N [日記])

AWS Lambda が AppEngine になった日

11/30 の発表で、AWS Lambd が ALB のバックエンドとして使えるようになったという発表があった。

話題としては、同時に発表されたLambda の COBOL サポート(なんでや)に完全に隠れてしまったが、これはものすごく画期的なサービスだ。

前回「サーバーレス・コンピューティングの終着点」という記事を書いたが、データベース以外の部分についてはこれが実現したと言っていい内容となっている。

GCP には大昔から従量課金のアプリケーション・サーバーとして AppEngine が用意されていたが、AWS には Elastic Beanstalk という単に実行環境がプリセットされた EC2 や使い勝手が悪い API Gateway しかなかった。

今回のリリースで、AWS Lambda が ALB のバックエンドとして使えるようになったことで、Tomcat や Express にあたる部分として Lambda がその役割を担えるようになった。しかも、Lambda の起動時間の遅さを ALB のヘルスチェック機能を使うことでウォームアップ可能というおまけ付きだ。

実際、簡単なプログラムを使って確かめてみたが、ウォームアップ後であれば、1リクエストあたり 60ms で返答がある。十分なレスポンスタイムだ。しかも AppEngine とは異なり、1リクエスト15分までは待つことができる(お金はかかるが)。時間のかかる作票処理にも対応できる。

現在の Web アプリケーションは、仮想DOM を使ったクライアント部分とサービス呼び出しのAPIを分離するのが一般的となっているが、前者については S3 など完全に static なアプリとして提供し、後者については Lambda を用いて処理を行う、というのがベストプラクティスになるだろう。

残念ながら現時点では RDBMS までサーバーレスにするのは難しい(Aurora サーバーレスはあるものの、起動時間の問題で Web アプリの要件には適さない)。当面は DynamoDB のような NoSQL で、という話になるだろうが、やはり使い勝手や管理面で問題になる。リクエスト起動可能な RDBMS というのが次のホットトピックになるのではないかと思われる。