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.
Function-as-a-Service (FaaS) è un modello di calcolo cloud serverless guidato da eventi, in cui piccole funzioni stateless vengono invocate in risposta a eventi (come richieste HTTP, nuove voci di database o messaggi). Le piattaforme FaaS attuali presuppongono che ogni invocazione di funzione corrisponda a un singolo evento. Tuttavia, dal punto di vista applicativo, è desiderabile che le funzioni rispondano a insiemi di diversi tipi di eventi o vengano invocate solo ogni n-esimo evento. Per realizzare ciò, le funzioni richiedono una gestione dello stato aggiuntiva (come database) e logica personalizzata per determinare se le condizioni di attivazione sono soddisfatte. Questo articolo propone i multi-event triggers (attivatori multi-evento), che consentono di specificare condizioni di invocazione complesse per le funzioni. I risultati della valutazione mostrano che nel caso d'uso di rilevamento degli eventi, questo approccio riduce la latenza evento-invocazione del 62,5% e il sistema può gestire oltre 300.000 richieste/secondo su hardware limitato.
Le piattaforme FaaS attuali presentano una limitazione fondamentale: ogni invocazione di funzione può rispondere solo a un singolo evento. Tuttavia, le applicazioni reali spesso richiedono modelli di attivazione più complessi:
Modelli Fan-in/Join: Necessità di raccogliere più eventi di diversi tipi prima di attivare una funzione
Attivazione per Conteggio: Attivare una funzione solo dopo aver ricevuto n eventi
Attivazione con Condizioni Complesse: Basate su combinazioni AND/OR di tipi e quantità di eventi
L'implementazione attuale di multi-event triggers richiede:
Mantenimento dello stato all'interno della funzione, necessitando di database esterni
Invocazione della funzione per ogni evento, ma la maggior parte delle invocazioni serve solo ad aggiornare lo stato anziché eseguire la logica di business
Conseguente spreco di risorse, aumento della latenza e incremento dei costi
Violazione del principio di progettazione secondo cui la piattaforma FaaS dovrebbe gestire la distribuzione degli eventi e l'invocazione delle funzioni
Per mantenere i vantaggi del modello di programmazione FaaS (accoppiamento lasco, scalabilità automatica, facilità di sviluppo), è necessario integrare la logica multi-evento nel meccanismo di attivazione della piattaforma FaaS, piuttosto che lasciare che gli sviluppatori di applicazioni la gestiscano manualmente.
Proposizione del Concetto di Multi-Event Triggers: Estensione del meccanismo di attivazione delle funzioni FaaS per supportare condizioni di attivazione complesse basate su insiemi di eventi
Progettazione dell'Architettura del Motore MET: Proposta di un design del motore multi-event trigger integrabile nelle piattaforme FaaS esistenti
Sviluppo di un Sistema Prototipale: Implementazione di un prototipo proof-of-concept che dimostra la fattibilità del design
Valutazione delle Prestazioni: Verifica del potenziale e delle prestazioni dei multi-event triggers nel caso d'uso di rilevamento degli eventi
I multi-event triggers consentono agli sviluppatori di definire regole di attivazione complesse, specificando quando una funzione deve essere invocata al verificarsi di specifiche combinazioni di eventi. Le regole di attivazione sono composte da tipi di evento e quantità corrispondenti, supportando combinazioni di condizioni AND e OR.
Supporto Nativo della Piattaforma: Integrazione della logica multi-evento nel meccanismo di attivazione, non a livello applicativo
Ottimizzazione della Gestione dello Stato: Gestione centralizzata dello stato nel motore di attivazione, evitando l'invocazione della funzione per ogni evento
Architettura Modulare: Supporto per la scalabilità indipendente dei componenti di dispatch e invocazione
Partizionamento dei Trigger: Supporto per capacità di elaborazione concorrente più elevate attraverso il partizionamento
Miglioramento Significativo della Latenza: Il motore MET riduce significativamente la latenza di elaborazione degli eventi rispetto al metodo di gestione dello stato manuale
Buona Scalabilità: Il sistema dimostra buone capacità di scalabilità orizzontale
Alto Throughput: Raggiunge la capacità di elaborazione richiesta dalle grandi piattaforme FaaS su hardware limitato
Limitazioni di Concorrenza: Il numero di trigger concorrenti per un singolo invoker presenta limitazioni dovute alla CPU, ma può essere mitigato attraverso il partizionamento
L'unicità di questo approccio risiede nel fatto che le funzioni vengono invocate solo quando le condizioni di attivazione complete sono soddisfatte, riducendo le esecuzioni non necessarie ed evitando la necessità di meccanismi di blocco per le condizioni di gara.
Limitazioni di Distribuzione Geografica: Il design attuale si concentra su configurazioni multi-nodo in un singolo data center, non adatto per multi-event triggers geograficamente distribuiti
Mancanza di Supporto per Condizioni NOT: A causa dell'impossibilità di garantire che una classe di eventi non sia stata ricevuta in ambienti distribuiti, le condizioni NOT non sono supportate
Problemi di Sincronizzazione degli Eventi: Necessità di affrontare la perdita di eventi e i problemi di sincronizzazione causati da guasti dei sensori
Identificazione Accurata del Problema: Identificazione precisa della limitazione fondamentale delle piattaforme FaaS nell'elaborazione di eventi complessi
Design della Soluzione Razionale: L'architettura del motore MET è progettata considerando la scalabilità e la praticità
Valutazione Completa: Valutazione complessiva da molteplici dimensioni: latenza, throughput e concorrenza
Alto Valore Pratico: Risolve i problemi critici nelle applicazioni reali con forte valore pratico
Prestazioni Eccellenti: La riduzione della latenza del 62,5% e la capacità di elaborazione di oltre 300.000 richieste/secondo dimostrano l'efficacia della soluzione
Limitazioni di Distribuzione Geografica: Supporto insufficiente per scenari di applicazioni distribuite globalmente
Meccanismi di Tolleranza ai Guasti Semplici: Gestione incompleta di situazioni anomale come partizioni di rete e guasti dei nodi
Capacità Espressiva delle Regole di Attivazione: Le combinazioni AND/OR attuali potrebbero non coprire tutti gli scenari di business complessi
Integrazione con Piattaforme Esistenti: Come componente esterno integrato, potrebbe non sfruttare completamente le ottimizzazioni interne della piattaforma
Elaborazione di Dati IoT: Applicazioni IoT che richiedono l'aggregazione di dati da più sensori
Elaborazione di Eventi Complessi: Monitoraggio delle transazioni finanziarie, rilevamento di anomalie di sicurezza di rete e altri scenari che richiedono analisi correlate
Orchestrazione di Flussi di Lavoro: Flussi di lavoro serverless che richiedono l'attesa del completamento di più attività precedenti
Ottimizzazione dell'Elaborazione in Batch: Aggregazione di più piccoli eventi per l'elaborazione batch al fine di migliorare l'efficienza
L'articolo cita 34 riferimenti correlati, coprendo principalmente:
Ricerca su piattaforme FaaS e meccanismi di attivazione
Orchestrazione di flussi di lavoro serverless
Gestione dello stato ed elaborazione di eventi complessi
Valutazione delle prestazioni e benchmark
I riferimenti chiave includono analisi dell'architettura di AWS Lambda, rassegne del calcolo serverless e sistemi correlati di orchestrazione dei flussi di lavoro.
Questo articolo propone una soluzione innovativa a una limitazione importante delle piattaforme FaaS, con forte valore teorico e pratico. Il design del motore MET bilancia prestazioni e scalabilità, e la valutazione sperimentale verifica completamente l'efficacia della soluzione. Sebbene vi sia spazio per miglioramenti nella distribuzione geografica e nella tolleranza ai guasti, nel complesso è un lavoro di ricerca di alta qualità.