Come realizzare una REST API Serverless: Fastify + Vercel

Riccardo Tartaglia
weBeetle
Published in
4 min readOct 20, 2021

Scopriamo cosa sono le funzioni Serverless e come possiamo realizzare un servizio API REST completamente Serverless grazie a Fastify e Vercel.

Photo by sendi gibran on Unsplash

In poche parole (un sunto per le persone pigre)

In questo articolo daremo uno sguardo generale al concetto di serverless e andremo poi ad applicarlo in un progetto Node grazie all’utilizzo di Fastify e Vercel (effettueremo infatti il deploy del nostro REST proprio su questa piattaforma).

Alla fine dell’articolo troverai anche il link alla repo con il codice prodotto.

Il perché di questo articolo

Come sempre la motivazione principale è approfondire dei concetti “sporcandoci” un po’ le mani.

In particolare, oltre alla tecnologia, approfondiremo un nuovo strumento online per il deploy di applicazioni: Vercel.

Analisi delle tecnologie e degli strumenti

Se consci già cosa sia Vercel e come funzioni un’architettura serverless, allora puoi saltare questa parte introduttiva e dirigerti verso la fine dell’articolo per vedere come effettuare un deploy. Se invece sei ancora qui, iniziamo subito con alcuni approfondimenti.

Cosa significa Serverless

Il significato letterale, ovvero “senza alcun server” (ma davvero?) non ci da una risposta esaustiva.

Per comprendere il vero vantaggio delle strutture serverless, bisogna fare un passo indietro e capire come funziona (in maniera classica) un normale provider cloud (AWS, Google Cloud, Azure, etc..).

In un modello standard, gli utenti pagano il provider per utilizzare delle risorse server.

L’utente è responsabile di aumentare la capacità del server durante i picchi di domanda e ridurla quando non occorre più.

L’infrastruttura cloud necessaria per l’esecuzione di un’applicazione rimane attiva anche quando quest’ultima non è in uso.

Con un’architettura serverless, invece, le nostre risorse vengono avviate solo quando necessario.

Quando un evento attiva l’esecuzione del codice, il provider di cloud pubblico assegna dinamicamente le risorse per tale codice e l’utente paga il servizio solo fino alla fine dell’esecuzione senza la necessità di pagare nessun costo ulteriore.

Questo è il fulcro del termine serverless.

Per farla comprensibile:

Scriviamo codice e lo mettiamo in una funzione richiamabile tramite eventi, la cui infrastruttura (compresa inizializzazione, gestione memoria, allocazione di risorse, etc.) è definita da un ente terzo e non dobbiamo pensare ad altro che invocarla.

Code, Build and Relax!

Cos’è Vercel

Dal sito ufficiale: https://vercel.com/docs

Vercel è una piattaforma di distribuzione e collaborazione per sviluppatori frontend.

Vercel mette al primo posto lo sviluppatore frontend, fornendo loro strumenti completi per creare siti Web e applicazioni ad alte prestazioni.

Vercel consente agli sviluppatori di ospitare siti Web e servizi Web che vengono distribuiti istantaneamente e scalabili automaticamente, il tutto senza alcuna configurazione.

Ora avrai sicuramente da obiettare su una cosa:

Vercel è focalizzato solo su sviluppo frontend, e tu ci vuoi pubblicare un backend Fastify?

La risposta è semplice: Vercel in realtà è focalizzato su un deploy immediato serverless per applicazioni Node!

Non ci resta che “piegarlo” ai nostri bisogni pubblicando un’applicazione backend scritta in Javascript.

Sarà facilissimo ci bastano 3 piccoli step!

1 — Creiamo il nostro progetto Fastify

Iniziamo con creare il nostro progetto Fastify, utilizzeremo fastify-cli per comodità.

Installiamo globalmente Fastify-CLI

npm install fastify-cli --global

Generiamo un nuovo progetto

fastify generate <yourapp>
cd <yourapp>
npm install

Arrivati a questo punto, il nostro progetto dovrebbe avere un albero simile a questo:

Si inizia

Prossimo step:

2 — Rendiamo Fastify “compatibile” con Vercel

Per proseguire dobbiamo rendere Fastify “compatibile” con Vercel.

Andiamo quindi a creare e modificare i file necessari nel nostro progetto:

api/serverless.js

Creiamo una cartella api e all’interno il nostro file serverless.js.

Questa è la nostra funzione JavaScript.

In poche parole inoltra la richiesta arrivata a Vercel all’interno della nostra app, includendola come un plugin Fastify.

Modifichiamo il package.json

Dobbiamo rimuovere i comandi di start, sostituendoli con dei comandi che ci permetteranno di testare la nostra app in locale.

vercel.json

Nella root del progetto creiamo il file vercel.json.

Rappresenta il file di configurazione di Vercel in cui andiamo a specificare il rewrite per la nostra funzione serverless.

3 — Deploy su Vercel

Ora non ci basta che effettuare il deploy del nostro codice su Vercel!

Io personalmente utilizzo la CLI di Vercel ma puoi anche banalmente caricare il codice su una repo Github e abilitare da Vercel il deploy.

Comunque, se hai seguito i passi correttamente dovresti avere il tuo progetto Fastify disponibile su un endpoint di Vercel.

Ecco il mio:

https://fastify-serverless.vercel.app/

Conclusioni

Se sei arrivato a questo punto hai già il tuo Fastify disponibile su Vercel, se hai trovato difficoltà ho realizzato una repo Github con tutto il codice.

Alla prossima!

--

--

Riccardo Tartaglia
weBeetle

Fullstack Web Developer 🦄 Aiuto i professionisti e le aziende a comprendere i meccanismi della digitalizzazione.