hidekatsu-izuno 日々の記録

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

サーバーレス・コンピューティングの終着点

最近、クラウドはもはや前提となり、さらにサーバレスが当たり前に使われるようになってきている。サーバーレスという言葉が出ると、サーバーばないという話ではないよ、という話が出たものだったけれど、もはやそんな枕言葉が不要になるくらいに普及している。

クラウドで開発が変わるという話もあったが、Google が最初に提唱した PaaS 的な方法論はあまり流行らず、従来型の三層アーキテクチャ(Web-AP-DB)を実現できる IaaS+α を推し進めた AmazonAWS が勝利を得た結果、開発手法そのものには大きな変化はなかったように思う。しかしそれも、サーバーレスの登場でフェイズが変わるかもしれない。

究極のインフラ環境というものを想像したとき、制約を無視すれば無償で無制限に資源を使えるというものだろうが、経済学が教えるように資源は有限である。その前提で考えれば、使った分だけコストがかかる、が真に実現できた状況こそ究極のインフラ環境と言えるだろう。

それがクラウドなんでは? と思われるかもしれない。しかし、例えば、EC2 にしろ RDS にしろ、起動しているか起動していないかで決まっており、CPUやメモリなど実際のリソース使用量によって決まっているわけではない。

もちろん、スケールアップに頼るのではなくスケールアウトすれば良いわけだが、その粒度が問題となる。サーバーレスの登場で従来はサーバー単位だったものがリクエスト単位にまで分割できるようになった。

すでに「サーバーレスシングルページアプリケーション ―S3、AWS Lambda、API Gateway、DynamoDB、Cognitoで構築するスケーラブルなWebサービス」という書籍が出ているけれども、おそらくこれからのWebアプリケーションはこのような方法論がベースになるだろう。

HTML/JavaScript 層は、CDN やオブジェクトストレージにも配置できる静的リソースとして作成し、そこから API Gateway を通してREST でサーバーレスの処理を起動する。すでに静的リソースに関しては、ほとんどタダみたいな金額で公開できる。処理はサーバーレスとなり、使用した分だけ課金される、というだけでなく、スケールアウトも容易となる。現状は、DynamoDBのような NoSQL だけが使用量に応じた課金という体系となっており制約があるものの、Aurora がサーバーレス化されたように使用量での課金が可能な RDBMS が次の選択肢として出てくるだろう。

ここまで来れば、残された課題は、起動時間の遅さ(レスポンスの悪さ)だけだが、一定数の常設サーバの存在さえ許してしまえば問題ではなくなる。現時点では、サーバーレスとウォームアップの組み合わせをうまく扱う方法はないが、Kubernates の Knative が発展すれば自然にできるようになるだろう。今はサーバーレス=AWS Lambda という風潮が強いが、Knative のように特定のプラットフォームに縛られないサーバーレス基盤が発展していき自由度も高まっていくのではと思う。

このようなシステム構成が一般的になれば、Git リポジトリと資源の制約情報を与えるだけで、すべてをよろしくやってくれる究極の DevOpts が実現できるのではないかと思うし、世の中そこに向けて急速に進んでいくと考えられる。