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
Déclencheurs Multi-Événements pour l'Informatique sans Serveur
Function-as-a-Service (FaaS) est un modèle d'informatique en nuage sans serveur piloté par les événements, dans lequel de petites fonctions sans état sont invoquées en réponse à des événements (tels que des requêtes HTTP, de nouvelles entrées de base de données ou des messages). Les plateformes FaaS actuelles supposent que chaque invocation de fonction correspond à un seul événement. Cependant, du point de vue des applications, il est souhaitable que les fonctions puissent répondre à des ensembles d'événements de différents types ou être invoquées uniquement tous les n événements. Pour y parvenir, les fonctions nécessitent une gestion d'état supplémentaire (comme une base de données) et une logique personnalisée pour déterminer si les conditions de déclenchement sont satisfaites. Cet article propose les déclencheurs multi-événements (multi-event triggers), qui permettent de spécifier des conditions d'invocation de fonction complexes. Les résultats d'évaluation montrent que cette approche réduit la latence événement-invocation de 62,5% dans les cas d'utilisation de détection d'événements, et que le système peut traiter plus de 300 000 requêtes/seconde sur du matériel limité.
Les plateformes FaaS actuelles présentent une limitation fondamentale : chaque invocation de fonction ne peut répondre qu'à un seul événement. Cependant, les applications réelles nécessitent souvent d'implémenter des modèles de déclenchement plus complexes :
Modèles d'agrégation/convergence (Fan-in/Join): Nécessité de collecter plusieurs événements de types différents avant de déclencher une fonction
Déclenchement par comptage: Invocation de la fonction une fois tous les n événements
Déclenchement avec conditions complexes: Conditions AND/OR basées sur les types et quantités d'événements
L'implémentation actuelle de déclencheurs multi-événements nécessite :
La maintenance d'état dans la fonction, avec stockage dans une base de données externe
L'invocation de la fonction pour chaque événement, bien que la plupart des invocations ne servent qu'à mettre à jour l'état
Cela entraîne une consommation inutile de ressources, une augmentation de la latence et une hausse des coûts
Cela va à l'encontre de la philosophie de conception des plateformes FaaS, qui devraient gérer la distribution des événements et l'invocation des fonctions
Pour préserver les avantages du modèle de programmation FaaS (couplage faible, mise à l'échelle automatique, développement facile), il est nécessaire d'intégrer la logique de déclenchement multi-événements dans le mécanisme de déclenchement de la plateforme FaaS, plutôt que de laisser les développeurs d'applications la gérer manuellement.
Proposition du concept de déclencheurs multi-événements: Extension du mécanisme de déclenchement des fonctions FaaS pour supporter des conditions de déclenchement complexes basées sur des ensembles d'événements
Conception de l'architecture du moteur MET: Proposition d'une conception de moteur de déclenchement multi-événements intégrable aux plateformes FaaS existantes
Développement d'un système prototype: Implémentation d'un prototype de preuve de concept démontrant la faisabilité de la conception
Évaluation des performances: Validation du potentiel et des performances des déclencheurs multi-événements dans des cas d'utilisation de détection d'événements
Les déclencheurs multi-événements permettent aux développeurs de définir des règles de déclenchement complexes, spécifiant quand une fonction doit être invoquée en fonction de combinaisons d'événements spécifiques. Les règles de déclenchement sont composées de types d'événements et de quantités correspondantes, supportant des combinaisons de conditions AND et OR.
Support natif de la plateforme: Intégration de la logique multi-événements dans le mécanisme de déclenchement, plutôt qu'au niveau de l'application
Optimisation de la gestion d'état: Gestion centralisée de l'état dans le moteur de déclenchement, évitant l'invocation de fonction pour chaque événement
Architecture modulaire: Support de la mise à l'échelle indépendante des composants de répartition et d'invocation
Partitionnement des déclencheurs: Support d'une capacité de traitement concurrent plus élevée par partitionnement
Amélioration significative de la latence: Le moteur MET réduit considérablement la latence de traitement des événements par rapport aux méthodes de gestion d'état manuelle
Bonne extensibilité: Le système démontre une bonne capacité de mise à l'échelle horizontale
Débit élevé: Atteint la capacité de traitement requise par les grandes plateformes FaaS sur du matériel limité
Limitations de concurrence: Le nombre de déclencheurs concurrents d'un seul invocateur est limité par le CPU, mais peut être atténué par partitionnement
L'unicité de cette approche réside dans le fait que les fonctions ne sont invoquées que lorsque les conditions de déclenchement complètes sont satisfaites, réduisant les exécutions inutiles et évitant les mécanismes de verrouillage des conditions de course.
Limitations de distribution géographique: La conception actuelle se concentre sur les configurations multi-nœuds sur une seule zone, ne convenant pas aux déclencheurs multi-événements distribués géographiquement
Absence de support pour les conditions NOT: En raison de l'impossibilité de garantir qu'une classe d'événements n'a pas été reçue dans un environnement distribué, les conditions NOT ne sont pas supportées
Problèmes de synchronisation d'événements: Nécessité de résoudre les pertes d'événements et les problèmes de synchronisation causés par les défaillances de capteurs
Identification précise du problème: Identification précise des limitations fondamentales des plateformes FaaS dans le traitement d'événements complexes
Conception de solution raisonnable: La conception de l'architecture du moteur MET prend en compte l'extensibilité et la praticité
Évaluation complète: Évaluation complète sous plusieurs dimensions : latence, débit, concurrence
Valeur pratique élevée: Résout les problèmes critiques des applications réelles avec une forte valeur pratique
Performances excellentes: La réduction de latence de 62,5% et la capacité de traitement de plus de 300 000 requêtes/seconde démontrent l'efficacité de la solution
Limitations de distribution géographique: Support insuffisant pour les scénarios d'applications distribuées mondialement
Mécanismes de tolérance aux pannes simples: Gestion insuffisante des situations anormales telles que les partitions réseau et les défaillances de nœuds
Expressivité des règles de déclenchement: Les combinaisons AND/OR actuelles peuvent ne pas couvrir tous les scénarios métier complexes
Intégration aux plateformes existantes: En tant que composant externe, peut ne pas exploiter pleinement les optimisations internes de la plateforme
Traitement de données IoT: Applications IoT nécessitant l'agrégation de données de plusieurs capteurs
Traitement d'événements complexes: Surveillance des transactions financières, détection de menaces de sécurité réseau et autres scénarios nécessitant une analyse corrélée
Orchestration de flux de travail: Flux de travail sans serveur nécessitant l'attente de l'achèvement de plusieurs tâches préalables
Optimisation du traitement par lot: Agrégation de plusieurs petits événements pour traitement par lot afin d'améliorer l'efficacité
Recherche sur les plateformes FaaS et les mécanismes de déclenchement
Orchestration de flux de travail sans serveur
Gestion d'état et traitement d'événements complexes
Évaluation des performances et tests de référence
Les références clés incluent l'analyse de l'architecture AWS Lambda, les synthèses de l'informatique sans serveur, et les systèmes d'orchestration de flux de travail connexes.
Cet article propose une solution innovante à une limitation importante des plateformes FaaS, possédant une forte valeur théorique et pratique. La conception du moteur MET équilibre performance et extensibilité, et l'évaluation expérimentale valide complètement l'efficacité de la solution. Bien qu'il y ait de la place pour l'amélioration en matière de distribution géographique et de tolérance aux pannes, il s'agit globalement d'un travail de recherche de haute qualité.