# サーバーレスアーキテクチャ再考
[[Yuuki Tsubouchi]](y_uuki)が 2019-09-11 に ゆううきブログ(yuuk.io)に投稿したブログ記事。AWS Lambda の登場(2014 年)から 5 年後、自身の時系列データベース開発経験(2016 年〜)と 2018 年の論文化を踏まえ、「サーバーレスとは何か」を再考した考察。
## 核心的な定義
### CNCF と Berkeley View の定義
CNCF サーバーレスホワイトペーパー(2019)および Berkeley View on Serverless Computing(arXiv:1902.03383)はともに **サーバーレスコンピューティング = FaaS + BaaS** と定義する。
- **FaaS(Function as a Service)**: イベント駆動型コード実行。インフラ管理不要でオートスケール
- **BaaS(Backend as a Service)**: API ベースの第三者サービス(Amazon DynamoDB・Google BigQuery・SendGrid・Auth0 等)
利用課金(usage-based billing)と自動スケーリングが必須条件(Berkeley View)。
### 「サーバという単位を意識しない」
著者の解釈によるサーバーレスの本質定義。「サーバーレスを支える技術」(nekoruri, 2019)の表現を敷衍して以下のように展開する。
**サーバーの二義性**:
- **マシンサーバー**: 物理・仮想マシン。CPU・RAM・ディスク・NIC を持つ
- **ネットワークサーバー**: 特定ポートで待ち受けるプロセス(Web サーバー等)
これに対して:
- **BaaS → マシンサーバーを意識しなくさせる**: DynamoDB は「クエリ数×スループット」という アプリケーション寄りのモデルでキャパシティ計画が可能。インスタンスサイズ・台数は隠蔽される
- **FaaS → ネットワークサーバーを意識しなくさせる**: イベント駆動でプロセスを起動するため、Graceful Restart・事前キャパシティ計画・メモリリーク管理が不要。オートスケールはイベント流量に応じた Function 起動で自然に実現
> [!note] 現状の限界
> 2019 年時点では Function プロセスのメモリサイズの指定が必要であり、マシンサーバーを完全には隠蔽できていない。
### CGI との比較
CGI はイベント(HTTP リクエスト)を契機に任意スクリプトを起動する点で FaaS に似ているが、(1) BaaS の性質を持たない、(2) HTTP 以外のイベントを扱えない、(3) Web サーバーと密結合で同一ホスト上で動作するため CGI 処理のみスケールできない、という本質的差異がある。
## ピタゴラスイッチ構成
アプリケーション実行単位が Function になった結果、**Function を糊として複数 BaaS をつなぐピタゴラスイッチ(Rube Goldberg machine)のような構成**が成立した。著者の時系列データベース(HeteroTSDB)ではこの構成を実装:
- DynamoDB への書き込み時にレコード単位 TTL を設定
- TTL=0 になった時点で Lambda Function にレコードをイベントとして入力
- Function が S3 に Put
クラウドベンダー固有の FaaS-BaaS 連携に依存するため、ベンダー非依存での実現は難しい。著者の関心は Knative・OpenFaaS(FaaS 側)と CloudEvents(イベント標準化)によるベンダー非依存化。
## 制約
**同期リクエスト時のメモリ効率問題**: 同期的リクエストを 1 件ずつ別 Function で処理する場合、I/O ブロッキング中に CPU は解放できるがメモリは確保したまま → メモリ使用効率が悪くコスト増。非同期なら FaaS 内キューに溜めて複数イベントを並行処理できる。
その他の制約は Berkeley View(arXiv:1902.03383)に整理されている。
## 関連
- 概念: [[サーバーレスアーキテクチャ]]
- 著者: [[Yuuki Tsubouchi]]
- 関連研究(著者の TSDB 論文): 2018 年論文「時系列データベースの論文を書いた」(HeteroTSDB 原型)
- 参照 BaaS: [[Dynamo]](Amazon DynamoDB の前身概念)
- 参照 OSSエコシステム: Knative / OpenFaaS / CloudEvents
## 出典
- [[@2019__yuuk.io__Rethinking-Serverless-Architecture]](本ページ自身)
- CNCF Serverless Whitepaper v1.0(2019)
- Eric Jonas et al., "Cloud Programming Simplified: A Berkeley View on Serverless Computing," arXiv:1902.03383(2019)
- Aki @ nekoruri, "Serverless を支える技術 第3版"(2019)