Skip to main content
QUICK REVIEW

[論文レビュー] Stateful Entities: Object-oriented Cloud Applications as Distributed Dataflows

Kyriakos Psarakis, Wouter Zorgdrager|arXiv (Cornell University)|Nov 18, 2021
Distributed systems and fault tolerance被引用数 4
ひとこと要約

本論文は、状態を持つエンティティとしてモデル化された命令型でトランザクション可能なPythonプログラムを、分散型の状態保持型データフロー・グラフに変換するコンパイラパイプラインを提案する。これにより、ネイティブに正確に一度だけ処理される保証を持つストリーミングエンジン上で実行可能となる。予備のベンチマークでは100ms未塔の遅延を達成しており、アプリケーション開発者が障害管理や状態の一貫性の問題を気にする必要がなくなる。

ABSTRACT

Although the cloud has reached a state of robustness, the burden of using its resources falls on the shoulders of programmers who struggle to keep up with ever-growing cloud infrastructure services and abstractions. As a result, state management, scaling, operation, and failure management of scalable cloud applications, require disproportionately more effort than developing the applications' actual business logic. Our vision aims to raise the abstraction level for programming scalable cloud applications by compiling stateful entities -- a programming model enabling imperative transactional programs authored in Python -- into stateful streaming dataflows. We propose a compiler pipeline that analyzes the abstract syntax tree of stateful entities and transforms them into an intermediate representation based on stateful dataflow graphs. It then compiles that intermediate representation into different dataflow engines, leveraging their exactly-once message processing guarantees to prevent state or failure management primitives from "leaking" into the level of the programming model. Preliminary experiments with a proof of concept implementation show that despite program transformation and translation to dataflows, stateful entities can perform at sub-100ms latency even for transactional workloads.

研究の動機と目的

  • クラウドアプリケーション開発者に、状態管理、リトライ、イディオム的性質といった分散システムの課題を軽減すること。
  • 命令型でオブジェクト指向のクラウドアプリケーションが、ストリーミング・データフロー・エンジンの正確に一度だけ処理される保証を活用できることを可能にすること。
  • 実行ランタイムに依存しないポータブルな中間表現(IR)に高レベルのコードをコンパイルすることで、インfraストラクチャの複雑さを抽象化すること。
  • プログラム変換によるデータフローへの変換が、低遅延実行を維持しつつ、性能にほとんど影響を与えないことを実証すること。
  • 異なるクラウドプロバイダーおよび実行エンジン間でポータブルなクラウドネイティブなアプリケーションを構築する基盤を確立すること。

提案手法

  • 状態保持型エンティティおよびそのトランザクション可能なメソッドを特定するためのPythonの抽象構文木(AST)の静的解析。
  • 命令型コードを、永続的状態を持つデータフロー演算子としてモデル化した拡張された状態保持型データフロー・グラフIRへの変換。
  • Apache Flink Stateful Functions や著者らが開発した StateFlow システムなどのターゲットデータフロー・エンジンへのIRのコンパイル。
  • ターゲットエンジンの正確に一度だけメッセージ処理されるセマンティクスを活用し、アプリケーション論理内で手動での障害処理の必要性を排除すること。
  • 開発者の慣れ親しめる形を保ちつつ静的解析と変換を可能にする、Python内での内部DSLの使用。
  • アプリケーションコードを変更せずに実行バックエンドを透明に切り替えられる対応。

実験結果

リサーチクエスチョン

  • RQ1命令型でトランザクション可能なオブジェクト指向コードを、意味を保持したまま自動的に分散型状態保持型データフローにコンパイルできるか?
  • RQ2実世界のワークロードにおいて、変換パイプラインがどれほど性能のオーバーヘッドを引き起こすか?
  • RQ3正確に一度だけ処理される保証を持つ既存のストリーミング・データフロー・エンジンを活用することで、クラウドアプリケーションにおける手動での障害処理を排除できるか?
  • RQ4ポータブルな中間表現は、異なるクラウドプロバイダーおよび実行エンジン間でのポータビリティをどのように可能にするか?
  • RQ5一般向けのオブジェクト指向コードをデータフロー・グラフにコンパイルする際の実用的制限およびスケーラビリティ特性は何か?

主な発見

  • コンパイラパイプラインは、正確に一度だけ処理されるセマンティクスを持つストリーミング・エンジン上で実行可能な状態保持型データフロー・グラフに、命令型Pythonコードを効果的に変換できた。
  • 予備の実験では、トランザクションワークロードにおいて100ms未塔の遅延が得られ、実行時のオーバーヘッドが小さいことが示された。
  • YCSB+Tベンチマークによる測定では、変換プロセスによる性能オーバーヘッドが1%未塔であった。
  • 本アプローチにより、アプリケーション論理とインfraストラクチャの課題が分離され、開発者がイディオム的性質、リトライ、または状態のロールバックを実装する必要がなくなった。
  • 中間表現により、Apache Flink Statefun や著者らの StateFlow といった複数のバックエンドへのデプロイが、アプリケーションコードを変更せずに可能となった。
  • 本システムは、データフロー・モデルが命令型クラウドアプリケーションの低レベルIRとして機能できることを示した。これは、高レベルのプログラミングモデルとしての役割ではなく、低レベルのIRとしての役割である。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。