Migliorare i trasferimenti di dati nel computing serverless
Un nuovo metodo per condividere dati in modo efficiente tra le funzioni cloud.
― 6 leggere min
Indice
Il computing senza server è un modo popolare per far girare applicazioni nel cloud. Permette ai programmatori di concentrarsi sulla scrittura del codice senza doversi preoccupare di gestire i server. In questo modello, le applicazioni sono composte da piccoli pezzi di codice chiamati funzioni che possono lavorare insieme per portare a termine un compito. Queste funzioni possono chiamarsi a vicenda e condividere dati, ma ci sono alcune sfide quando si tratta di trasferire dati tra di loro in modo efficiente.
Attualmente, quando le funzioni devono condividere dati, hanno due opzioni principali. La prima opzione è inviare i dati insieme alla richiesta che attiva un'altra funzione. Questo metodo è veloce e diretto, ma ha un limite su quanti dati possono essere inviati-di solito solo alcuni megabyte. La seconda opzione è memorizzare i dati in un sistema di archiviazione di terze parti prima di inviare un riferimento a quei dati alla funzione successiva. Anche se questo approccio consente di gestire quantità maggiori di dati, può essere lento e costoso perché comporta la lettura e la scrittura di dati su servizi esterni.
Questo articolo presenta una nuova soluzione chiamata Trasferimenti Dati Accelerati (XDT) che consente alle funzioni di condividere i dati in modo più efficace. Utilizzando un approccio diretto, XDT migliora la velocità e riduce i costi, rendendo più facile per gli sviluppatori costruire applicazioni cloud efficienti.
La Necessità di un Trasferimento Dati Efficiente
Con il crescente utilizzo del computing senza server, aumenta la domanda di trasferimenti dati più rapidi ed economici tra le funzioni. Le applicazioni che elaborano grandi quantità di dati-come l'elaborazione video, l'apprendimento automatico e l'analisi dei dati-richiedono spesso una comunicazione fluida tra più funzioni. Tuttavia, i metodi attuali per trasferire dati affrontano importanti limitazioni.
Metodi Attuali di Trasferimento Dati
Trasferimenti Inline: Questo metodo invia i dati insieme alla richiesta di attivazione della funzione. È veloce ma limitato in dimensione, generalmente consentendo l'invio di solo pochi MB di dati. Ad esempio, AWS Lambda ha limiti specifici su quanti dati possono essere trasferiti in questo modo.
Trasferimenti Basati su Archiviazione: Questo approccio salva prima i dati su un servizio di archiviazione, come AWS S3, prima di inviare un riferimento a quei dati all'interno della chiamata della funzione. Questo metodo consente trasferimenti di dati molto più grandi, ma introduce latenza e costi più elevati perché le funzioni devono leggere e scrivere su archiviazione esterna.
Entrambi i metodi hanno i loro pro e contro, ma nessuno affronta completamente le esigenze delle moderne applicazioni intensive di dati. Pertanto, è necessaria una nuova soluzione.
Introduzione ai Trasferimenti Dati Accelerati (XDT)
XDT è un nuovo metodo per trasferire dati direttamente tra funzioni senza server. Mira a fornire una comunicazione efficiente eliminando la necessità di servizi di archiviazione di terze parti, pur funzionando all'interno dell'architettura senza server esistente.
Come Funziona XDT
Il concetto alla base di XDT è semplice. Quando una funzione ha bisogno di inviare dati a un'altra funzione, invece di inviare i dati direttamente o memorizzarli in un servizio di terze parti, mantiene i dati nella sua memoria. La funzione mittente fornisce quindi un riferimento sicuro a quei dati che la funzione ricevente può usare per recuperarli.
- Buffering dei Dati: La funzione mittente tiene i dati nella sua memoria temporaneamente.
- Riferimento Sicuro: Un riferimento sicuro ai dati viene passato insieme alla richiesta per attivare la funzione destinataria.
- Recupero Dati: La funzione destinataria usa questo riferimento per tirare i dati direttamente dalla memoria della funzione mittente.
Vantaggi di XDT
- Alto Livello di Prestazioni: Riduce la latenza evitando servizi di archiviazione intermedi.
- Efficienza dei costi: Riduce i costi eliminando la necessità di archiviazione di terze parti, che può essere costosa.
- Scalabilità: Funziona senza problemi con l'infrastruttura senza server esistente, consentendo una scalabilità automatica in base alla domanda.
Applicazioni Pratiche di XDT
Diverse applicazioni nel mondo reale possono trarre vantaggio da XDT. Queste applicazioni spesso coinvolgono flussi di lavoro che richiedono a più funzioni di comunicare rapidamente ed efficientemente.
Analisi Video
Nell'analisi video, le funzioni lavorano insieme per elaborare i dati video in tempo reale. Ad esempio, una funzione potrebbe trasmettere i dati video, mentre un'altra decodifica i fotogrammi e un'altra identifica oggetti all'interno di quei fotogrammi. XDT consente una comunicazione rapida tra queste funzioni, riducendo il tempo speso nei trasferimenti di dati e migliorando le prestazioni complessive.
Apprendimento Automatico
Le applicazioni di apprendimento automatico richiedono spesso di addestrare modelli con grandi dataset. Le funzioni che preparano i dati, addestrano il modello e convalidano i risultati devono comunicare in modo efficace. XDT rende questa comunicazione più veloce, contribuendo a migliorare la velocità di addestramento del modello e ridurre i costi di esecuzione.
Flussi di Lavoro di Elaborazione Dati
Le applicazioni che eseguono elaborazione dati, come i compiti MapReduce, coinvolgono più funzioni che condividono grandi quantità di dati. Con XDT, queste operazioni possono essere più efficienti, accelerando il tempo di elaborazione e minimizzando i costi associati.
Valutazione delle Prestazioni
Per capire quanto bene funzioni XDT rispetto ai metodi esistenti, sono state condotte valutazioni delle prestazioni utilizzando specifici benchmark.
Approccio al Benchmarking
Il benchmarking ha coinvolto il test di vari scenari di trasferimento dati utilizzando XDT rispetto ai metodi tradizionali di trasferimenti inline e basati su archiviazione. Le metriche chiave valutate includevano latenza, larghezza di banda e costi.
Risultati
- Latenza: XDT ha mostrato costantemente una latenza inferiore rispetto ai metodi inline e basati su archiviazione, soprattutto quando si trasferivano oggetti più grandi.
- Larghezza di Banda: La larghezza di banda effettiva ottenuta con XDT era significativamente più alta rispetto a quella degli altri metodi, dimostrando la sua capacità di gestire trasferimenti di dati più grandi in modo efficiente.
- Risparmi sui Costi: XDT ha ridotto significativamente il costo complessivo dei trasferimenti dati rispetto all'uso di opzioni di archiviazione, rendendolo una scelta allettante per gli sviluppatori.
Conclusione
XDT presenta una soluzione innovativa alle sfide del trasferimento di dati nel computing senza server. Abilitando una comunicazione diretta tra funzioni, migliora le prestazioni e riduce i costi, rendendolo ideale per applicazioni intensive di dati. Man mano che la tecnologia senza server continua a evolversi, soluzioni come XDT giocheranno un ruolo cruciale nella definizione di pratiche di computing cloud efficienti.
In sintesi, XDT migliora l'esperienza senza server semplificando la comunicazione dei dati, fondamentale per costruire applicazioni veloci ed economiche nel cloud. Gli sviluppatori possono beneficiare di questo avanzamento, permettendo loro di concentrarsi sulla creazione di soluzioni impattanti senza essere appesantiti da metodi di gestione dei dati inefficaci.
Titolo: Expedited Data Transfers for Serverless Clouds
Estratto: Serverless computing has emerged as a popular cloud deployment paradigm. In serverless, the developers implement their application as a set of chained functions that form a workflow in which functions invoke each other. The cloud providers are responsible for automatically scaling the number of instances for each function on demand and forwarding the requests in a workflow to the appropriate function instance. Problematically, today's serverless clouds lack efficient support for cross-function data transfers in a workflow, preventing the efficient execution of data-intensive serverless applications. In production clouds, functions transmit intermediate, i.e., ephemeral, data to other functions either as part of invocation HTTP requests (i.e., inline) or via third-party services, such as AWS S3 storage or AWS ElastiCache in-memory cache. The former approach is restricted to small transfer sizes, while the latter supports arbitrary transfers but suffers from performance and cost overheads. This work introduces Expedited Data Transfers (XDT), an API-preserving high-performance data communication method for serverless that enables direct function-to-function transfers. With XDT, a trusted component of the sender function buffers the payload in its memory and sends a secure reference to the receiver, which is picked by the load balancer and autoscaler based on the current load. Using the reference, the receiver instance pulls the transmitted data directly from the sender's memory. XDT is natively compatible with existing autoscaling infrastructure, preserves function invocation semantics, is secure, and avoids the cost and performance overheads of using an intermediate service for data transfers. We prototype our system in vHive/Knative deployed on a cluster of AWS EC2 nodes, showing that XDT improves latency, bandwidth, and cost over AWS S3 and ElasticCache.
Autori: Dmitrii Ustiugov, Shyam Jesalpura, Mert Bora Alper, Michal Baczun, Rustem Feyzkhanov, Edouard Bugnion, Boris Grot, Marios Kogias
Ultimo aggiornamento: 2023-09-26 00:00:00
Lingua: English
URL di origine: https://arxiv.org/abs/2309.14821
Fonte PDF: https://arxiv.org/pdf/2309.14821
Licenza: https://creativecommons.org/licenses/by/4.0/
Modifiche: Questa sintesi è stata creata con l'assistenza di AI e potrebbe presentare delle imprecisioni. Per informazioni accurate, consultare i documenti originali collegati qui.
Si ringrazia arxiv per l'utilizzo della sua interoperabilità ad accesso aperto.