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プラットフォームには根本的な制限があります。各関数呼び出しは単一のイベントにのみ応答できます。しかし、実際のアプリケーションではより複雑なトリガーパターンの実装が必要とされることが多くあります:
ファンイン/結合パターン(Fan-in/Join) : 複数の異なるタイプのイベントを収集した後にのみ関数をトリガーする必要があるカウントトリガー : n個のイベントを受け取るたびに関数をトリガーする複雑な条件トリガー : イベントタイプと数量のAND/OR組み合わせ条件に基づく現在、マルチイベントトリガーを実装するには以下が必要です:
関数内で状態を維持し、外部データベースに保存する必要がある すべてのイベントが関数を呼び出しますが、ほとんどの呼び出しは状態更新のみに使用される 不要なリソース消費、遅延増加、コスト上昇につながる FaaSプラットフォームがイベント配信と関数呼び出しを処理すべきという設計理念に反する FaaSプログラミングモデルの利点(疎結合、自動スケーリング、開発の容易さ)を維持しながら、マルチイベントトリガーロジックをFaaSプラットフォームのトリガー機構に統合する必要があります。アプリケーション開発者が手動で処理するのではなく。
マルチイベントトリガー概念の提案 : イベント集合に基づく複雑なトリガー条件をサポートするようにFaaS関数トリガー機構を拡張METエンジンアーキテクチャの設計 : 既存のFaaSプラットフォームに統合可能なマルチイベントトリガーエンジン設計を提案プロトタイプシステムの開発 : 設計の実現可能性を示す概念実証プロトタイプを実装性能評価 : イベント検出ユースケースでマルチイベントトリガーの可能性と性能を検証マルチイベントトリガーにより、開発者は複雑なトリガールールを定義でき、特定のイベント組み合わせ条件が満たされたときに関数が呼び出されるように指定できます。トリガールールはイベントタイプと対応する数量で構成され、AND条件とOR条件の組み合わせをサポートします。
<rule> ::= <count> ":" <type> |
<condition> "(" <rule> "," <rule> ")"
<condition> ::= "AND" | "OR"
<count> ::= regexp:[0-9]+
<type> ::= regexp:[a-zA-Z]+
METエンジンには、独立してスケーリング可能な2つの主要コンポーネントが含まれています:
ディスパッチャー(Dispatcher) :ロードバランサーからイベントを受け取る イベントを適切なインボーカーに転送する インボーカー(Invoker) :トリガーロジックを処理する 各METのトリガーハンドラーを作成する イベントタイプごとのトリガーセットを維持する トリガールールが満たされているかを確認し、関数を呼び出す ディスパッチャーとインボーカーはブローカーレスのパブ/サブメッセージング機構を使用 インボーカーは処理するトリガールール内のイベントタイプに基づいてディスパッチャーのイベントをサブスクライブ マルチノード、シングルマシン構成の分散デプロイメントをサポート 追加のインボーカーをデプロイして処理可能なトリガー数を増加させる トリガー分割により処理能力をさらに向上させる 目標処理能力:高10万から低10万リクエスト/秒(AWS Lambda単一AZ負荷を参照) ネイティブプラットフォームサポート : マルチイベントロジックをトリガー機構に統合し、アプリケーション層ではなく状態管理の最適化 : トリガーエンジン内で状態を一元管理し、すべてのイベントで関数を呼び出すのを回避モジュール化アーキテクチャ : ディスパッチとインボーク機能を独立してスケーリング可能トリガー分割 : 分割により高い並行処理能力をサポートプログラミング言語 : Goでディスパッチャーとインボーカーを実装デプロイメントプラットフォーム : Kubernetesクラスタ(Google Kubernetes Engine)メッセージング : ZeroMQライブラリロードバランシング : Kubernetes LoadBalancerサービス関数プラットフォーム : HTTPをサポートする任意のFaaSプラットフォームユースケース : データセンターイベント検出アプリケーションセンサータイプ : 温度、パケット損失率、電力消費トリガールール : OR(AND(5:packetLoss, 1:temperature), 1:powerConsumption)ベースライン比較 : PostgreSQLデータベースを使用した手動状態管理負荷生成 : k6負荷生成器、30分間のテストハードウェア構成 :
シングルノード:c7i.2xlarge(8 vCPU、16 GiB) 4ノード:4×c7i.2xlarge 負荷生成器:c7i.16xlarge(64 vCPU、128 GiB) トリガールール : 3:a(3つのイベントごとに1回トリガー)負荷 : 1,024バイトのランダム文字ペイロードハードウェア : 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制限を受け、トリガールール確認の並列化により最適化可能 顕著な遅延改善 : METエンジンは手動状態管理方法と比較してイベント処理遅延を大幅に削減良好なスケーラビリティ : システムは優れた水平スケーリング能力を示す高スループット : 限定的なハードウェア上で大規模FaaSプラットフォームに必要な処理能力を達成並行制限 : シングルインボーカーの並行トリガー数にはCPU制限があるが、分割により緩和可能Crucial : 分散共有オブジェクト層Cloudburst : 統合自動スケーリングキー値ストアBoki : ログベースAPIの状態永続化Faasm : WebAssemblyランタイムのメモリ領域共有TriggerFlow : KnativeベースのカスタムワークフローエンジンFaaSFlow : FaaSワークノード間の分散ワークフロー調度DataFlower : データ可用性ベースの関数スケジューリング本論文のアプローチの独自性は、完全なトリガー条件が満たされた場合にのみ関数を呼び出すことにあり、不要な実行を削減し、競合状態のロック機構の必要性を回避します。
マルチイベントトリガーはFaaSプラットフォームのネイティブなファンイン支援の欠如を効果的に解決 METエンジンは呼び出し遅延を大幅に削減し、リソース消費を減少させる システムは大規模クラウド環境でのデプロイメントに必要な性能能力を備えている サーバーレスパラダイムの中核的利点(疎結合、自動スケーリング、最小限の運用オーバーヘッド)を維持 地理的分散の制限 : 現在の設計は単一データセンター内のマルチノード設定に焦点を当てており、地理的に分散したマルチイベントトリガーには適していないNOT条件のサポート不足 : 分散環境では特定のイベントクラスが受け取られていないことを保証できないため、NOT条件をサポートしないイベント同期の問題 : センサー故障によるイベント損失と同期の問題を解決する必要がある地理的分散サポート : 競合自由複製データ型(CRDT)を使用してイベントを追跡トリガータイプの拡張 : XORなどのより多くのトリガータイプをサポートフォールトトレランス機構 : イベント生存時間(TTL)機構を導入して期限切れイベントを処理プラットフォーム統合 : FaaSプラットフォームのロードバランシングなどの機能との深い統合問題識別の正確性 : FaaSプラットフォームの複雑なイベント処理における根本的な制限を正確に特定ソリューション設計の合理性 : METエンジンアーキテクチャはスケーラビリティと実用性を考慮して設計充分な実験 : 遅延、スループット、並行性など複数の次元から包括的に評価実用的価値の高さ : 実際のアプリケーションにおける痛点を解決し、強い実用的価値を持つ優れた性能 : 62.5%の遅延削減と毎秒30万以上のリクエスト処理能力がソリューションの有効性を証明地理的分散の制限 : グローバル分散アプリケーションシナリオへのサポートが不十分フォールトトレランス機構の簡潔さ : ネットワーク分割、ノード故障などの異常状況への対応機構が不完全トリガールール表現能力 : 現在のAND/OR組み合わせはすべての複雑なビジネスシナリオをカバーできない可能性がある既存プラットフォームとの統合 : 外部コンポーネントとしての統合により、プラットフォーム内部最適化を十分に活用できない可能性がある学術的貢献 : FaaS分野に新しい研究方向とソリューションを提供産業的価値 : 既存のFaaSプラットフォームに直接適用でき、複雑なイベント処理能力を向上させる標準化の可能性 : FaaSプラットフォームのマルチイベントトリガーの標準実装方式となる可能性がある再現可能性 : オープンソースプロトタイプ実装により良好な再現可能性を提供IoTデータ処理 : 複数のセンサーデータを集約する必要があるIoTアプリケーション複雑なイベント処理 : 金融取引監視、ネットワークセキュリティ検出など関連分析が必要なシナリオワークフロー編成 : 複数の前置タスク完了を待つ必要があるサーバーレスワークフローバッチ処理最適化 : 複数の小さなイベントを集約した後にバッチ処理して効率を向上させる論文は34篇の関連文献を引用しており、主に以下をカバーしています:
FaaSプラットフォームとトリガー機構研究 サーバーレスワークフロー編成 状態管理と複雑なイベント処理 性能評価とベンチマークテスト 主要な参考文献にはAWS Lambdaアーキテクチャ分析、サーバーレスコンピューティング総説、および関連するワークフロー編成システムなどが含まれます。
本論文はFaaSプラットフォームの重要な制限に対して革新的なソリューションを提案しており、強い理論的価値と実用的価値を持っています。METエンジンの設計は性能とスケーラビリティのバランスを取っており、実験評価はソリューションの有効性を十分に検証しています。地理的分散とフォールトトレランスの面でまだ改善の余地がありますが、全体的には高品質の研究成果です。