Serverless — Cheat Sheet

Tag: serverless, aws, lambda, faas, cloud

Livello: intermedio

TL;DR: Il modello serverless permette di eseguire codice senza gestire l'infrastruttura, delegando scalabilità e manutenzione al cloud provider. Si paga esclusivamente per il tempo di esecuzione e il numero di invocazioni.

Concetti chiave

-

FaaS (Function as a Service): unità di calcolo effimere ed event-driven.

-

Stateless design: le funzioni non conservano stato locale; l'archiviazione avviene su database o storage esterni.

-

Cold Start: la latenza iniziale che si verifica quando una funzione inattiva viene invocata e necessita di avviare un nuovo container.

-

Event-driven architecture: le funzioni reagiscono a trigger come richieste HTTP, code di messaggi o variazioni nello storage.

-

BaaS (Backend as a Service): utilizzo combinato di servizi gestiti di terze parti per database, autenticazione e storage.

-

Pay-as-you-go: fatturazione granulare basata sui millisecondi di esecuzione reale.

-

Vendor Lock-in: rischio architetturale legato alla forte dipendenza da API e servizi proprietari del cloud provider.

-

Concorrenza: le funzioni scalano orizzontalmente in modo automatico per gestire picchi di traffico.

Domande tipiche e risposte pronte

-

Q: Come affronti il problema del Cold Start nelle funzioni serverless?R: Ottimizzo il pacchetto di deploy riducendo le dipendenze, scelgo runtime leggeri o configuro la Provisioned Concurrency per mantenere container caldi in AWS Lambda.

-

Q: Quali sono le differenze principali tra un'infrastruttura a container (es. Kubernetes) e un approccio Serverless puro?R: Kubernetes mi dà controllo totale sull'ambiente ma richiede manutenzione dei nodi; con serverless delego l'operatività al provider e sfrutto lo scale-to-zero per ottimizzare i costi.

Insidie e errori comuni

-

Progettare funzioni monolitiche invece di suddividere la logica in microfunzioni focalizzate.

-

Non impostare correttamente i timeout, causando esecuzioni pendenti all'infinito e picchi di fatturazione.

-

Esaurire i connection pool del database relazionale a causa della rapida scalabilità orizzontale delle funzioni.

-

Sottovalutare la complessità di monitoring e debugging distribuito in sistemi pesantemente event-driven.

Snippet e comandi

# Serverless Framework - Deploy del servizio completo
sls deploy

# Deploy di una singola funzione per velocizzare i cicli di sviluppo
sls deploy function -f authHandler

# Visualizzare i log di una funzione in streaming
sls logs -f authHandler -t

Da ripassare

-

[ ] Pattern di integrazione asincrona (SQS, SNS, EventBridge).

-

[ ] Strategie di gestione degli errori e configurazione delle Dead Letter Queues (DLQ).

-

[x] Principi di calcolo stateless.

Riferimenti

-

AWS Lambda Best Practices

-

Serverless Framework Documentation

-

AWS Well-Architected Framework: Serverless Lens

Jarvis Interviews
Jarvis