- [1]: Josep Sampé, Marc Sánchez-Artigas, Pedro García-López, Gerard París. 2017. Data-Driven Serverless Functions for Object Storage. In Middleware.
- [2]: Josep Sampé. zion. https://github.com/JosepSampe/zion
論文のPDFは http://2017.middleware-conference.org/overview.html から手に入る。
どんなものか
- オブジェクトストレージ向けのデータドリブンなサーバレスコンピューティングミドルウェアが提案されている。
- データパイプライン上に、処理(computations)を注入することで、同期的なインタラクションを要求するユースケースに適している。例えば、動的コンテンツ生成やインタラクティブなクエリ、personalization、コンテンツの検証、アクセス制御など。
先行研究との差分はなにか
- 従来のactive storage *1はデータ局所性を得るために、計算タスクをストレージノードに寄せている。そのため、ストレージノード数の分しかスケールアウトしない、計算リソースを共有するためリソース競合があるという課題がある。
- 従来の非同期なイベントドリブンなサーバレスモデル*2とは異なり、オブジェクトストアに対するデータの読み書きを同期的にインターセプトできる。これをデータドリブンと呼んでいる。
手法の要点はなにか
- Figure 1のようにstorage nodeとgateway nodeの間にcomputing nodeを配置し、レイテンシを削減する
有効性をどのように示しているか
実装
- OpenStack Swift上にserverless frameworkのプロトタイプが実装されている。プロキシ側でリクエストをインターセプトするSwift Middlewareが唯一の変更点。[2]がおそらく公開されている実装。
- computationレイヤは、Figure 2のように、Dockerコンテナで実装されている。
評価
- 理想的な条件で、Swiftがstorage nodeでリソース競合することを確認
- DockerとJavaのランタイムの起動時間が、0.85sec - 0.95secでAWS Lambdaの5倍速いことを確認
- 10kBのオブジェクトに対して5,000 GETリクエストしたとき、Zion(提案手法)のオーバヘッドは9ms。ただし、Swiftへの内部ホップが5msなので実質+4ms。
- アクセス制御、イメージリサイズ、署名検証、圧縮のそれぞれのfunctionについて、レスポンスタイムとスケーラビリティを評価し、レスポンスタイムについてはTPSを上げつづけてCPU 100%になるとレスポンスタイムが悪化することを確認し、スケーラビリティについてはstorage nodeを増やしてもTPSが向上せず、computingレイヤのワーカーを増やすとTPSがおおざっぱには線形増加することが示されている
議論はあるか
- Amazon Athena、Redshift Spectrum、Facebook Prestoとの関連があり、Prestoのパイプライン実行により不必要なI/Oとレイテンシオーバヘッドを避けるところは、提案手法のモデルに似ているが、これらのシステムは汎用のfunctionを提供するわけではなく、インタラクティブなクエリ実行にフォーカスしている点が異なる。
興味深い関連論文はなにか
- Scott Hendrickson, Stephen Sturdevant, Tyler Harter, Venkateshwaran Venkataramani, Andrea C Arpaci-Dusseau, and Remzi H Arpaci-Dusseau. 2016. Serverless computation with OpenLambda. In HotCloud.
- Krste Asanovic and D Patterson. 2014. Firebox: A hardware building block or 2020 warehouse-scale computers. In FAST.
- Peter X Gao, Akshay Narayan, Sagar Karandikar, Joao Carreira, Sangjin Han, Rachit Agarwal, Sylvia Ratnasamy, and Scott Shenker. 2016. Network requirements or resource disaggregation. In OSDI. 249-264.