2025-11-12T05:49:09.677536

Multi-Event Triggers for Serverless Computing

Carl, Schirmer, Kowallik et al.
Function-as-a-Service (FaaS) is an event-driven serverless cloud computing model in which small, stateless functions are invoked in response to events, such as HTTP requests, new database entries, or messages. Current FaaS platform assume that each function invocation corresponds to a single event. However, from an application perspective, it is desirable to invoke functions in response to a collection of events of different types or only with every n\textsuperscript{th} event. To implement this today, a function would need additional state management, e.g., in a database, and custom logic to determine whether its trigger condition is fulfilled and the actual application code should run. In such an implementation, most function invocations would be rendered essentially useless, leading to unnecessarily high resource usage, latency, and cost for applications. In this paper, we introduce multi-event triggers, through which complex conditions for function invocations can be specified. Specifically, we introduce abstractions for invoking functions based on a set of $n$ events and joins of multiple events of different types. This enables application developers to define intricate conditions for function invocations, workflow steps, and complex event processing. Our evaluation with a proof-of-concept prototype shows that this reduces event--invocation latency by 62.5\% in an incident detection use-case and that our system can handle more than 300,000 requests per second on limited hardware, which is sufficient load for implementation in large FaaS platforms.
academic

サーバーレスコンピューティングのためのマルチイベントトリガー

基本情報

  • 論文ID: 2505.21199
  • タイトル: Multi-Event Triggers for Serverless Computing
  • 著者: Natalie Carl, Trever Schirmer, Niklas Kowallik, Joshua Adamek, Tobias Pfandzelter, Sergio Lucia, David Bermbach
  • 分類: cs.DC(分散・並列・クラスタコンピューティング)
  • 発表日時: arXiv:2505.21199v3 cs.DC 2025年10月11日
  • 論文リンク: https://arxiv.org/abs/2505.21199

概要

Function-as-a-Service(FaaS)は、HTTPリクエスト、新しいデータベースエントリ、またはメッセージなどのイベントに応答して小型のステートレス関数が呼び出されるイベント駆動型のサーバーレスクラウドコンピューティングモデルです。現在のFaaSプラットフォームは、各関数呼び出しが単一のイベントに対応することを前提としています。しかし、アプリケーションの観点からは、関数が異なるタイプのイベントの集合に応答したり、n番目のイベントごとにのみ呼び出されたりすることが望まれます。これを実現するには、関数は追加の状態管理(データベースなど)とトリガー条件が満たされているかどうかを判定するカスタムロジックが必要です。本論文では、複雑な関数呼び出し条件を指定できるマルチイベントトリガー(multi-event triggers)を提案しています。評価結果は、イベント検出ユースケースにおいて、このアプローチがイベント-呼び出し遅延を62.5%削減し、システムが限定的なハードウェア上で毎秒300,000を超えるリクエストを処理できることを示しています。

研究背景と動機

問題定義

現在のFaaSプラットフォームには根本的な制限があります。各関数呼び出しは単一のイベントにのみ応答できます。しかし、実際のアプリケーションではより複雑なトリガーパターンの実装が必要とされることが多くあります:

  1. ファンイン/結合パターン(Fan-in/Join): 複数の異なるタイプのイベントを収集した後にのみ関数をトリガーする必要がある
  2. カウントトリガー: n個のイベントを受け取るたびに関数をトリガーする
  3. 複雑な条件トリガー: イベントタイプと数量のAND/OR組み合わせ条件に基づく

既存アプローチの限界

現在、マルチイベントトリガーを実装するには以下が必要です:

  • 関数内で状態を維持し、外部データベースに保存する必要がある
  • すべてのイベントが関数を呼び出しますが、ほとんどの呼び出しは状態更新のみに使用される
  • 不要なリソース消費、遅延増加、コスト上昇につながる
  • FaaSプラットフォームがイベント配信と関数呼び出しを処理すべきという設計理念に反する

研究動機

FaaSプログラミングモデルの利点(疎結合、自動スケーリング、開発の容易さ)を維持しながら、マルチイベントトリガーロジックをFaaSプラットフォームのトリガー機構に統合する必要があります。アプリケーション開発者が手動で処理するのではなく。

主要な貢献

  1. マルチイベントトリガー概念の提案: イベント集合に基づく複雑なトリガー条件をサポートするようにFaaS関数トリガー機構を拡張
  2. METエンジンアーキテクチャの設計: 既存のFaaSプラットフォームに統合可能なマルチイベントトリガーエンジン設計を提案
  3. プロトタイプシステムの開発: 設計の実現可能性を示す概念実証プロトタイプを実装
  4. 性能評価: イベント検出ユースケースでマルチイベントトリガーの可能性と性能を検証

方法論の詳細

タスク定義

マルチイベントトリガーにより、開発者は複雑なトリガールールを定義でき、特定のイベント組み合わせ条件が満たされたときに関数が呼び出されるように指定できます。トリガールールはイベントタイプと対応する数量で構成され、AND条件とOR条件の組み合わせをサポートします。

トリガールールの形式的定義

<rule> ::= <count> ":" <type> |
           <condition> "(" <rule> "," <rule> ")"
<condition> ::= "AND" | "OR"
<count> ::= regexp:[0-9]+
<type> ::= regexp:[a-zA-Z]+

METエンジンアーキテクチャ

全体設計

METエンジンには、独立してスケーリング可能な2つの主要コンポーネントが含まれています:

  1. ディスパッチャー(Dispatcher):
    • ロードバランサーからイベントを受け取る
    • イベントを適切なインボーカーに転送する
  2. インボーカー(Invoker):
    • トリガーロジックを処理する
    • 各METのトリガーハンドラーを作成する
    • イベントタイプごとのトリガーセットを維持する
    • トリガールールが満たされているかを確認し、関数を呼び出す

通信機構

  • ディスパッチャーとインボーカーはブローカーレスのパブ/サブメッセージング機構を使用
  • インボーカーは処理するトリガールール内のイベントタイプに基づいてディスパッチャーのイベントをサブスクライブ
  • マルチノード、シングルマシン構成の分散デプロイメントをサポート

スケーラビリティ設計

  • 追加のインボーカーをデプロイして処理可能なトリガー数を増加させる
  • トリガー分割により処理能力をさらに向上させる
  • 目標処理能力:高10万から低10万リクエスト/秒(AWS Lambda単一AZ負荷を参照)

技術的革新点

  1. ネイティブプラットフォームサポート: マルチイベントロジックをトリガー機構に統合し、アプリケーション層ではなく
  2. 状態管理の最適化: トリガーエンジン内で状態を一元管理し、すべてのイベントで関数を呼び出すのを回避
  3. モジュール化アーキテクチャ: ディスパッチとインボーク機能を独立してスケーリング可能
  4. トリガー分割: 分割により高い並行処理能力をサポート

実験設定

プロトタイプ実装

  • プログラミング言語: Goでディスパッチャーとインボーカーを実装
  • デプロイメントプラットフォーム: Kubernetesクラスタ(Google Kubernetes Engine)
  • メッセージング: ZeroMQライブラリ
  • ロードバランシング: Kubernetes LoadBalancerサービス
  • 関数プラットフォーム: HTTPをサポートする任意のFaaSプラットフォーム

評価シナリオ

実験1:遅延テスト

  • ユースケース: データセンターイベント検出アプリケーション
  • センサータイプ: 温度、パケット損失率、電力消費
  • トリガールール: OR(AND(5:packetLoss, 1:temperature), 1:powerConsumption)
  • ベースライン比較: PostgreSQLデータベースを使用した手動状態管理
  • 負荷生成: k6負荷生成器、30分間のテスト

実験2:並行リクエストテスト

  • ハードウェア構成:
    • シングルノード:c7i.2xlarge(8 vCPU、16 GiB)
    • 4ノード:4×c7i.2xlarge
    • 負荷生成器:c7i.16xlarge(64 vCPU、128 GiB)
  • トリガールール: 3:a(3つのイベントごとに1回トリガー)
  • 負荷: 1,024バイトのランダム文字ペイロード

実験3:並行トリガーテスト

  • ハードウェア: c7i.large(4 vCPU、8 GiB)
  • トリガールール: AND(2:a, 2:b)、最大1,024個の並行トリガー
  • 負荷: 128個の仮想ユーザー、1,024バイトペイロード

実験結果

主要な結果

遅延性能の改善

  • イベント-呼び出し遅延が62.5%削減(中央値)
  • 関数呼び出し回数が4.3倍削減(ベースラインのすべてのイベントで関数を呼び出す場合と比較)
  • 不要な関数呼び出しのオーバーヘッドを大幅に削減

スループット性能

  • シングルノード構成: 最大131,012.7リクエスト/秒(4,096仮想ユーザー)
  • 4ノード構成: 最大313,154.81リクエスト/秒(64仮想ユーザー)
  • スループットは2^11リクエストまで並行リクエストとともに線形に増加

並行トリガー性能

  • シングルトリガー: 236,601.77リクエスト/秒
  • 8個のトリガー: 63,717.27リクエスト/秒
  • 1,024個のトリガー: 883.67リクエスト/秒
  • 性能は主にCPU制限を受け、トリガールール確認の並列化により最適化可能

実験の知見

  1. 顕著な遅延改善: METエンジンは手動状態管理方法と比較してイベント処理遅延を大幅に削減
  2. 良好なスケーラビリティ: システムは優れた水平スケーリング能力を示す
  3. 高スループット: 限定的なハードウェア上で大規模FaaSプラットフォームに必要な処理能力を達成
  4. 並行制限: シングルインボーカーの並行トリガー数にはCPU制限があるが、分割により緩和可能

関連研究

状態管理ソリューション

  • Crucial: 分散共有オブジェクト層
  • Cloudburst: 統合自動スケーリングキー値ストア
  • Boki: ログベースAPIの状態永続化
  • Faasm: WebAssemblyランタイムのメモリ領域共有

ワークフロー編成

  • TriggerFlow: Knativeベースのカスタムワークフローエンジン
  • FaaSFlow: FaaSワークノード間の分散ワークフロー調度
  • DataFlower: データ可用性ベースの関数スケジューリング

既存ソリューションとの相違点

本論文のアプローチの独自性は、完全なトリガー条件が満たされた場合にのみ関数を呼び出すことにあり、不要な実行を削減し、競合状態のロック機構の必要性を回避します。

結論と考察

主要な結論

  1. マルチイベントトリガーはFaaSプラットフォームのネイティブなファンイン支援の欠如を効果的に解決
  2. METエンジンは呼び出し遅延を大幅に削減し、リソース消費を減少させる
  3. システムは大規模クラウド環境でのデプロイメントに必要な性能能力を備えている
  4. サーバーレスパラダイムの中核的利点(疎結合、自動スケーリング、最小限の運用オーバーヘッド)を維持

制限事項

  1. 地理的分散の制限: 現在の設計は単一データセンター内のマルチノード設定に焦点を当てており、地理的に分散したマルチイベントトリガーには適していない
  2. NOT条件のサポート不足: 分散環境では特定のイベントクラスが受け取られていないことを保証できないため、NOT条件をサポートしない
  3. イベント同期の問題: センサー故障によるイベント損失と同期の問題を解決する必要がある

今後の方向性

  1. 地理的分散サポート: 競合自由複製データ型(CRDT)を使用してイベントを追跡
  2. トリガータイプの拡張: XORなどのより多くのトリガータイプをサポート
  3. フォールトトレランス機構: イベント生存時間(TTL)機構を導入して期限切れイベントを処理
  4. プラットフォーム統合: FaaSプラットフォームのロードバランシングなどの機能との深い統合

深い評価

利点

  1. 問題識別の正確性: FaaSプラットフォームの複雑なイベント処理における根本的な制限を正確に特定
  2. ソリューション設計の合理性: METエンジンアーキテクチャはスケーラビリティと実用性を考慮して設計
  3. 充分な実験: 遅延、スループット、並行性など複数の次元から包括的に評価
  4. 実用的価値の高さ: 実際のアプリケーションにおける痛点を解決し、強い実用的価値を持つ
  5. 優れた性能: 62.5%の遅延削減と毎秒30万以上のリクエスト処理能力がソリューションの有効性を証明

不足点

  1. 地理的分散の制限: グローバル分散アプリケーションシナリオへのサポートが不十分
  2. フォールトトレランス機構の簡潔さ: ネットワーク分割、ノード故障などの異常状況への対応機構が不完全
  3. トリガールール表現能力: 現在のAND/OR組み合わせはすべての複雑なビジネスシナリオをカバーできない可能性がある
  4. 既存プラットフォームとの統合: 外部コンポーネントとしての統合により、プラットフォーム内部最適化を十分に活用できない可能性がある

影響力

  1. 学術的貢献: FaaS分野に新しい研究方向とソリューションを提供
  2. 産業的価値: 既存のFaaSプラットフォームに直接適用でき、複雑なイベント処理能力を向上させる
  3. 標準化の可能性: FaaSプラットフォームのマルチイベントトリガーの標準実装方式となる可能性がある
  4. 再現可能性: オープンソースプロトタイプ実装により良好な再現可能性を提供

適用シナリオ

  1. IoTデータ処理: 複数のセンサーデータを集約する必要があるIoTアプリケーション
  2. 複雑なイベント処理: 金融取引監視、ネットワークセキュリティ検出など関連分析が必要なシナリオ
  3. ワークフロー編成: 複数の前置タスク完了を待つ必要があるサーバーレスワークフロー
  4. バッチ処理最適化: 複数の小さなイベントを集約した後にバッチ処理して効率を向上させる

参考文献

論文は34篇の関連文献を引用しており、主に以下をカバーしています:

  • FaaSプラットフォームとトリガー機構研究
  • サーバーレスワークフロー編成
  • 状態管理と複雑なイベント処理
  • 性能評価とベンチマークテスト

主要な参考文献にはAWS Lambdaアーキテクチャ分析、サーバーレスコンピューティング総説、および関連するワークフロー編成システムなどが含まれます。


本論文はFaaSプラットフォームの重要な制限に対して革新的なソリューションを提案しており、強い理論的価値と実用的価値を持っています。METエンジンの設計は性能とスケーラビリティのバランスを取っており、実験評価はソリューションの有効性を十分に検証しています。地理的分散とフォールトトレランスの面でまだ改善の余地がありますが、全体的には高品質の研究成果です。