Rivet è una piattaforma serverless rilasciata sotto licenza open source e progettata per gli sviluppatori che desiderano realizzare delle applicazioni complesse, stateful e in tempo reale. Il tutto senza dover gestire direttamente l'infrastruttura sottostante. Scritto in linguaggio Rust, Rivet combina funzioni stateless, attori stateful e container isolati in un'unica architettura coerente con la garanzia di un livello di prestazioni elevato.
Come funziona Rivet
Alla base del progetto Rivet troviamo i cosiddetti Actors. Si tratta di componenti che mantengono lo stato in memoria con persistenza automatica su disco. Questa caratteristica permette di creare dei servizi a bassa latenza che sono ideali per le applicazioni collaborative, i giochi in multiplayer e gli agenti AI. Gli Actors possono ibernarsi quando sono inattivi e riattivarsi in modo istantaneo, ciò assicura dei tempi di risposta molto rapidi senza cold start.
Oltre agli Actors, Rivet supporta funzionalità stateless per API e microservizi nonché container in sandbox per i carichi di lavoro più intensivi o meno affidabili dal punto di vista della sicurezza. Tutti questi componenti possono essere distribuiti a livello globale, sfruttano infatti un'infrastruttura edge per minimizzare la latenza e migliorare l'esperienza in fase di utilizzo.
RPC integrato
La piattaforma offre anche un sistema di Remote Procedure Call (o semplicemente RPC) integrato che facilita la comunicazione tra client e servizi senza la necessità di dover fare affidamento su dei broker esterni. Inoltre, Rivet è compatibile con qualsiasi applicazione che possa essere eseguita all'interno di un container Docker. Ciò rimuove i limiti di tempo in fase di esecuzione e permette di supportare protocolli come HTTP, WebSocket, TCP e UDP.
Rivet fornisce strumenti per lo sviluppo on-premise e il testing locale, inclusa la possibilità di avviare un cluster completo con un singolo comando. È possibile scegliere tra l'utilizzo del servizio gestito Rivet Cloud o l'hosting autonomo su infrastrutture proprie.