Fermyon è una piattaforma che offre un ambiente per lo sviluppo, la distribuzione e la gestione di app WebAssembly (WASM) basate sul cloud. È progettata al fine di semplificare il processo di sviluppo e distribuzione delle applicazioni, sfruttando le potenzialità di WebAssembly per ottenere efficienza, portabilità e sicurezza ai massimi livelli.
Spin 2.0 è un framework parte integrante della piattaforma Fermyon che aiuta a costruire rapidamente applicazioni serverless sfruttando le funzionalità offerte da WebAssembly. Quest’ultima, come abbiamo spiegato in altri approfondimenti, è una tecnologia che consente di compilare il codice in un formato binario leggero e veloce. WebAssembly è supportato in tutti i browser Web: perché non sfruttarlo con intelligenza per creare app che possano operare in modo efficiente e scalabile?
Gli sviluppatori di Spin 2.0 hanno introdotto il concetto di componenti, oggetti che fungono da “involucro” attorno ai moduli core WASM (in un altro articolo abbiamo visto cos’è WASM e perché sta rivoluzionando le applicazioni Web). I componenti possono comunicare reciprocamente all’interno di un unico file binario .wasm, senza ricorrere a chiamate API.
Con Spin 2.0 è possibile unire diversi componenti andandone a formare uno più grande. Lo schema proposto favorisce un migliore isolamento tra componenti consentendo le comunicazioni tramite interfacce predefinite.
I vantaggi di Spin 2.0 per la costruzione di app WebAssembly
Già da queste prime righe, chi è abituato a sviluppare per il Web, avrà già intuito i vantaggi di Spin 2.0. La tecnologia WASM sta guadagnando terreno in numerosi settori informatici. Spin consente di costruire applicazioni Web, software full-stack e programmi dotati di abilità di intelligenza artificiale come componenti WebAssembly.
Le applicazioni ottenibili ricorrendo all’uso di Spin sono:
- di dimensioni nettamente inferiori rispetto alle immagini dei classici container;
- completamente portabili su diversi sistemi operativi e architetture (CPU diverse per ISA, Instruction Set Architecture);
- capaci di garantire una latenza in avvio incredibilmente bassa;
- in grado di gestire decine di migliaia di richieste al secondo;
- capaci di funzionare ovunque, dai dispositivi più piccoli come i single-board computer Raspberry Pi, a Docker Desktop, passando per Kubernetes, Nomad e Fermyon Cloud.
Spin guida gli utenti nella creazione, compilazione, distribuzione ed esecuzione di applicazioni lato server con WebAssembly. Grazie a semplici comandi come spin new
, spin build
e spin up
, è possibile iniziare il percorso di sviluppo senza alcun attrito.
Capacità e prestazioni di Spin 2.0
Durante lo sviluppo delle applicazioni WebAssembly, gli sviluppatori possono sfruttare un ampio ventaglio di funzionalità, con la possibilità di comunicare anche con sistemi esterni.
Servizi di persistenza sono direttamente integrati in Spin 2.0: ciò significa che l’ambiente di esecuzione delle applicazioni WebAssembly consente alle applicazioni stesse di salvare e recuperare dati in varie forme senza dover installare o configurare servizi esterni. Con la soluzione di archiviazione incorporata, ad esempio quella basata su SQLite, si possono salvare e leggere dati nel formato chiave-valore. È comunque assicurato il supporto per database esterni come MySQL e PostgreSQL.
Vault è la funzionalità di gestione e archiviazione delle variabili dinamiche usate da ciascuna applicazione. Il sistema, anch’esso integrato nel framework Spin 2.0, offre un’infrastruttura sicura e centralizzata per la gestione delle variabili dell’applicazione, spesso utilizzate per configurazioni sensibili, memorizzazione di credenziali, chiavi di accesso e altri dati critici.
I componenti WASM sviluppabili con Spin 2.0, possono inoltre comunicare con sistemi esterni tramite API HTTP. Inoltre, è previsto il supporto diretto per le operazioni di intelligenza artificiale, come inferenze sui modelli di linguaggio di grandi dimensioni (LLM) e la generazione di contenuti in linguaggio naturale.
Per installare Spin 2.0 è sufficiente seguire le indicazioni per Linux, macOS e Windows riportate nella pagina Installing Spin.
Come creare un nuovo progetto WebAssembly
Il comando spin new
permette di avviare la creazione di un nuovo progetto o applicazione all’interno dell’ambiente di sviluppo di Spin 2.0. È utilizzabile per generare la struttura di base del progetto, predisponendo i file, le cartelle e le altre risorse essenziali.
Spin 2.0 presenta diversi modelli predefiniti, ciascuno sviluppato con un linguaggio di programmazione differente. Il framework supporta diversi linguaggi, tra cui JavaScript/TypeScript, Python, .NET, Rust e Go. Aderisce inoltre allo standard WASI, il che significa che decine di linguaggi che supportano WASM possono essere compilati, costruiti ed eseguiti direttamente.
WebAssembly System Interface (WASI) è uno standard che mira a definire un’interfaccia standardizzata tra i programmi WebAssembly e l’host in cui vengono eseguiti. WASI fornisce un set di API e specifiche per consentire a WebAssembly di interagire, ad esempio, con le varie risorse di sistema come file system, rete e via dicendo.
I passaggi successivi sono piuttosto intuitivi e prevedono di assegnare un nome e una descrizione all’applicazione in corso di sviluppo. L’impostazione HTTP path corrisponde al percorso che consente di richiamare l’applicazione e i componenti WASM che la compongono.
Digitando cd
seguito dal nome del percorso contenente il modello dell’applicazione, è possibile verificare tutti i file generati da Spin 2.0. Supponendo di usare Visual Studio Code come editor, basta digitare code .
per aprire automaticamente tutti i file presenti nella cartella.
Il file manifest spin.toml
Ogni singola applicazione creata con Spin 2.0 contiene un file chiamato spin.toml
: ospita le informazioni identificative dell’app, l’elenco delle azioni che deve avviare in risposta a specifici trigger, i moduli WASM utilizzati insieme con le relative configurazioni.
Verificando il codice sorgente dell’applicazione, ci si rende subito conto di ciò che fa ciascun modulo di esempio creato con il comando spin new
. Nell’esempio, vediamo semplice codice Rust che risponde con il messaggio Hello World! a qualunque richiesta di connessione in ingresso pervenuta via HTTP.
Digitando quindi i comandi spin build
e spin up
è infine possibile compilare l’applicazione in WebAssembly quindi avviarla in locale.
Collegandosi da browser con l’indirizzo localhost indicato, si ottiene in questo caso – come risposta – proprio la stringa Hello World!
Pubblicazione sul cloud con Fermyon
Finora abbiamo visto tre semplici comandi che consentono di creare, modificare, compilare ed eseguire applicazioni WebAssembly in locale partendo da codice realizzato in qualsiasi linguaggio di programmazione. Con un quarto comando, ossia spin deploy
, si ha la possibilità di pubblicare l’app sviluppata sul cloud rendendola accessibile da qualunque sistema remoto.
Fermyon Cloud permette di gestire gratis fino a 5 applicazioni WASM con altrettanti domini personalizzati. Consente inoltre di elaborare fino a 100.000 richieste mensili. Offre anche 5 GB di spazio SQLite per memorizzare i propri database e 1 GB di storage chiave-valore. Il tutto senza sborsare nemmeno un centesimo.
Nel giro di pochi istanti, usando il semplice comando spin deploy
, l’applicazione realizzata con Spin 2.0 sarà pubblicata sul cloud e resa accessibile all’indirizzo mnemonico indicato (liberamente personalizzabile, come evidenziato in precedenza).