Cloudburst: Stateful Functions-as-a-Service

VLDB 2020(2020) · 論文 · sreekanti2020cloudburst

📅 この論文を見た日

初回 2026-06-10 / 最終 2026-06-10 / 計 1 回更新

AI解説

情報源:arXiv 全文(ar5iv HTML 版 arxiv.org/abs/2001.04592)を WebFetch で精読(手法・一貫性プロトコル・結果・図を確認)。 図は arXiv HTML 版の実画像(arch.png / causal-invalid.png)を取得して掲載。結果系の図(EPS)は本ノートに転載していない。

一言で

ステートレス前提の FaaS(AWS Lambda 等)に、低遅延の可変共有状態・関数間直接通信・効率的な関数合成を、オートスケール性を保ったまま持ち込む stateful FaaS プラットフォーム Cloudburst の提案。鍵は「論理的分離・物理的同居(LDPC)」=ストレージと計算を独立にスケールさせつつ、計算ノードに可変キャッシュを同居させて局所性を得る設計。状態は自動スケールKVS Anna に置き、ユーザの Python オブジェクトを格子(lattice)に透過的に包んで協調不要の競合解決を行う。さらに DAG を跨いだ分散セッション一貫性(Repeatable Read/Causal)プロトコルを与える。関数合成・局所性・通信で AWS Lambda/Step Functions 比 1〜3桁の性能改善

背景・問題

現行 FaaS は「孤立した・ステートレスな関数」しかうまく扱えない。本研究が指す問題は 3 つ。

課題(やること):オートスケール性を保ちつつ、低遅延の可変共有状態・関数間通信・関数合成・一貫した状態管理を実現する stateful FaaS を設計・実装する。

設計原理:LDPC(Logical Disaggregation with Physical Colocation)

中核の洞察は「分離(ストレージと計算を独立に課金・スケール)と同居(”熱い”データを実行器の近くに物理配置)は両立できる」こと。これによりオートスケールの独立性を保ったまま、計算ノードの可変キャッシュで低遅延ローカルアクセスと wire-speed の関数間通信を得る。ただし、1つの DAG 合成が複数マシンに跨ると正しさが問題になる——これが 分散セッション一貫性 という新しい課題を生む。

提案手法:Cloudburst の構成

Cloudburst のアーキテクチャ

Figure 3:Function Executor(ローカルキャッシュ同居)、Scheduler、KVS(Anna)、Resource Management System の全体像。

ストレージ:Anna KVS と格子(lattice)

状態は自動スケールKVS Anna に置く。値は格子——結合則・交換則・冪等を満たす merge 演算を備えた構造——で、協調なしの自動競合解決と複数一貫性レベルを可能にする。Cloudburst では Anna が永続状態ストアであると同時に、移動する関数インスタンス間のメッセージを中継する DHT 的オーバーレイにもなる。

プログラミングモデルと関数合成

ユーザは Python 関数を register し、引数は通常の Python オブジェクトか KVS 参照(実行時に透過的に解決)。結果は同期的にクライアントへ返すか、CloudburstFuture として KVS に格納する。関数合成は DAG(Spark/Dryad に類似)として登録でき、DAG が一貫性のスコープ(セッション)になる。システムAPI(Table 1)には get/put/delete、関数間直接メッセージング send/recvget_id() があり、一意IDを既知のKVSキーに広告して IP:port に変換、TCP 直送(失敗時は Anna の inbox にフォールバック)する。

スケジューリングと耐障害性

スケジューラはキャッシュ索引を見て、KVS 参照を含む引数ならそのキーを最も多くキャッシュしているExecutorを選ぶ(局所性)。高負荷(>70%)ノードは避ける。耐障害性は、ストレージは Anna の複製で k-耐障害、計算はマシン障害時に DAG 全体をタイムアウト後に再実行(非冪等な副作用はプログラマ責任)。

一貫性:分散セッション一貫性

課題

直列化(合意による linearizability)はサーバレスの弾力的メンバシップと相容れない。そこで Anna の格子に基づく協調不要の一貫性を採る。だが Anna は「固定IPのクライアント単位」の一貫性しか持たない。f(x, g(x)) のような DAG が複数マシンに跨ると、各キャッシュが提供する一貫性を揃える必要がある。これが分散セッション一貫性。

因果不整合のシナリオ

Figure 4:別マシン上の2つの関数が、互いの causal cut を知らずに因果不整合なデータを読む例。

格子のカプセル化

不透明な Python オブジェクトをランタイムが格子に透過的に包むので、ユーザコード無改変で Anna の競合解決が働く。

一貫性保証

評価

us-east-1a で、Scheduler を c5.large、Executor を c5.2xlarge(Python 3コア+キャッシュ1コア)で評価。

関連研究との関係(本リポジトリ内)

Cloudburst は「状態を外部 KVS に逃がしつつ、実行器近くのキャッシュで低遅延化する」設計で、本リポジトリでは Wukong(同じくサーバレス並列だが DAG スケジューリングが主眼)と対をなす——Wukong はスケジューリングの分散、Cloudburst は状態共有と一貫性にフォーカスする。状態保存・移行の系譜(ElasticNotebookKishu など)とは層が異なるが、「実行と状態を分離して扱う」という発想で接続する。

将来課題:DAG 間の隔離(トランザクション分離相当)と非冪等関数の耐障害性、より賢いオートスケール(warm pool 等)、ストリーミング、コンテナ隔離を超えたセキュリティ。

Q&A

自分のコメント