spinny:~/writing $ less serverless-aws-lambda-vercel-cloudflare.md
12Il serverless computing ti permette di eseguire codice senza gestire server. Scrivi funzioni, le distribuisci e la piattaforma gestisce scalabilita, disponibilita e infrastruttura. Nel 2026, tre piattaforme dominano il panorama serverless: **AWS Lambda**, **Vercel Serverless Functions** e **Cloudflare Workers**. Ognuna ha punti di forza e compromessi differenti.34In questo articolo, le confrontiamo con esempi reali, considerazioni sulle prestazioni e analisi dei prezzi.56## Come Funziona il Serverless78```mermaid9graph LR10 User -- "HTTP Request" --> Gateway[API Gateway / Edge]11 Gateway -- "Invoke" --> Function[Serverless Function]12 Function -- "Response" --> User13 Function -- "Read/Write" --> DB[(Database)]14```1516Distribuisci una funzione. Quando arriva una richiesta, la piattaforma:171. Avvia un ambiente di esecuzione (o riutilizza uno gia attivo)182. Esegue la tua funzione193. Restituisce la risposta204. Scala a zero quando inattiva (non paghi per il tempo di inattivita)2122## Panoramica delle Piattaforme2324### AWS Lambda2526La piattaforma serverless originale (lanciata nel 2014). La piu matura e ricca di funzionalita, con integrazione profonda nell'ecosistema AWS.2728```javascript29// AWS Lambda handler30export const handler = async (event) => {31 const body = JSON.parse(event.body);3233 const result = await processData(body);3435 return {36 statusCode: 200,37 headers: { 'Content-Type': 'application/json' },38 body: JSON.stringify(result),39 };40};41```4243### Vercel Serverless Functions4445Strettamente integrato con Next.js e il workflow di deployment frontend. Le funzioni vengono distribuite insieme al tuo frontend senza configurazione.4647```typescript48// app/api/hello/route.ts (Next.js App Router)49import { NextResponse } from 'next/server';5051export async function GET(request: Request) {52 const { searchParams } = new URL(request.url);53 const name = searchParams.get('name') || 'World';5455 return NextResponse.json({ message: `Hello, ${name}!` });56}57```5859### Cloudflare Workers6061Eseguito sulla rete edge di Cloudflare in oltre 300 citta nel mondo. Utilizza il motore V8 (lo stesso di Chrome) invece di Node.js, il che significa cold start estremamente veloci.6263```javascript64// Cloudflare Worker65export default {66 async fetch(request, env) {67 const url = new URL(request.url);68 const name = url.searchParams.get('name') || 'World';6970 return new Response(71 JSON.stringify({ message: `Hello, ${name}!` }),72 { headers: { 'Content-Type': 'application/json' } }73 );74 },75};76```7778## Confronto delle Funzionalita7980| Funzionalita | AWS Lambda | Vercel Functions | Cloudflare Workers |81|---------|-----------|-----------------|-------------------|82| **Runtime** | Node.js, Python, Go, Rust, Java, .NET | Node.js, Python, Go, Ruby | V8 Isolates (JS/TS, Rust via WASM) |83| **Tempo massimo di esecuzione** | 15 minuti | 60s (Hobby), 300s (Pro) | 30s (gratuito), 15min (a pagamento) |84| **Memoria** | 128MB - 10GB | 1024MB - 3008MB | 128MB |85| **Cold start** | 100-500ms | 100-300ms | < 5ms |86| **Posizione di deploy** | Singola regione (o multi con impegno) | Regioni multiple | 300+ posizioni edge |87| **Payload massimo** | 6MB (sincrono), 256KB (asincrono) | 4.5MB | 100MB |88| **Storage incluso** | No (usa DynamoDB, S3) | No (usa DB esterno) | KV, D1 (SQLite), R2 (compatibile S3) |89| **Modello di prezzo** | Per richiesta + durata | Incluso nel piano | Per richiesta + durata |90| **Livello gratuito** | 1M richieste/mese | 100K/mese (Hobby) | 100K richieste/giorno |9192## Cold Start9394Il cold start e il tempo necessario per inizializzare una nuova istanza della funzione. Questa e la principale preoccupazione prestazionale del serverless.9596```mermaid97graph LR98 subgraph "Cold Start"99 A[Request] --> B[Provision Environment]100 B --> C[Load Code]101 C --> D[Initialize Runtime]102 D --> E[Execute Function]103 end104105 subgraph "Warm Invocation"106 F[Request] --> G[Execute Function]107 end108```109110| Piattaforma | Cold Start Tipico | Perche |111|----------|-------------------|-----|112| **Cloudflare Workers** | < 5ms | Isolate V8, nessun runtime completo necessario |113| **Vercel Functions** | 100-300ms | Runtime Node.js su edge o regionale |114| **AWS Lambda** | 100-500ms | Inizializzazione completa del container |115| **AWS Lambda (Java)** | 1-5 secondi | Overhead di avvio della JVM |116117Cloudflare Workers vince nei cold start con un margine enorme perche utilizza isolate V8 invece di container.118119## Confronto Prezzi120121### Livello Gratuito122123| Piattaforma | Richieste Gratuite | Calcolo Gratuito |124|----------|--------------|--------------|125| **AWS Lambda** | 1M/mese | 400.000 GB-secondi |126| **Vercel** | 100K/mese | Incluso nel piano Hobby |127| **Cloudflare Workers** | 100K/giorno (~3M/mese) | 10ms CPU per invocazione |128129### Su Scala (10M richieste/mese, durata media 50ms)130131| Piattaforma | Costo Mensile Stimato |132|----------|----------------------|133| **AWS Lambda** | ~$2,50 (richieste) + ~$4,15 (calcolo) = **~$6,65** |134| **Vercel** | **$20/mese** (piano Pro, include le funzioni) |135| **Cloudflare Workers** | **$5/mese** (piano a pagamento, include 10M richieste) |136137Per la maggior parte dei casi d'uso, Cloudflare Workers e il piu economico. Il prezzo di Vercel e semplice ma include l'intera piattaforma (hosting, CDN, analytics). AWS Lambda ha i prezzi piu granulari.138139## Casi d'Uso Reali140141### AWS Lambda: Ideale Per142143- **Workflow backend complessi** - step functions, architetture event-driven144- **Integrazione con servizi AWS** - trigger S3, stream DynamoDB, code SQS145- **Task a lunga durata** - fino a 15 minuti di tempo di esecuzione146- **Team multi-linguaggio** - supporta la piu ampia gamma di runtime147148```mermaid149graph TD150 S3[S3 Upload] --> Lambda1[Process Image]151 Lambda1 --> SQS[SQS Queue]152 SQS --> Lambda2[Generate Thumbnails]153 Lambda2 --> DDB[DynamoDB]154 DDB --> Lambda3[Send Notification]155 Lambda3 --> SNS[SNS / Email]156```157158### Vercel Functions: Ideale Per159160- **Applicazioni Next.js** - API routes senza configurazione161- **Team orientati al frontend** - distribuisci frontend e backend insieme162- **Prototipazione rapida** - git push per il deploy163- **Architetture Jamstack** - frontend statico + API serverless164165```typescript166// app/api/subscribe/route.ts167import { NextResponse } from 'next/server';168169export async function POST(request: Request) {170 const { email } = await request.json();171172 // Validate173 if (!email || !email.includes('@')) {174 return NextResponse.json(175 { error: 'Invalid email' },176 { status: 400 }177 );178 }179180 // Save to database181 await db.subscribers.create({ email });182183 return NextResponse.json({ success: true });184}185```186187### Cloudflare Workers: Ideale Per188189- **API a bassa latenza** - il codice viene eseguito in oltre 300 posizioni nel mondo190- **Edge computing** - trasformazione delle risposte, A/B testing, personalizzazione191- **API ad alto volume** - il piu economico su scala con un generoso livello gratuito192- **Applicazioni globali** - dati vicini agli utenti con KV e D1193194```javascript195// Edge-side A/B test196export default {197 async fetch(request, env) {198 const url = new URL(request.url);199200 // Assign user to variant201 const cookie = request.headers.get('Cookie') || '';202 let variant = cookie.includes('ab=b') ? 'b' : 'a';203204 if (!cookie.includes('ab=')) {205 variant = Math.random() < 0.5 ? 'a' : 'b';206 }207208 // Fetch the appropriate version209 const response = await fetch(`${url.origin}/variants/${variant}`);210 const newResponse = new Response(response.body, response);211212 // Set cookie for consistent experience213 newResponse.headers.set('Set-Cookie', `ab=${variant}; Path=/; Max-Age=86400`);214215 return newResponse;216 },217};218```219220## Quando Scegliere Quale221222### Scegli AWS Lambda se:223- Sei gia investito nell'ecosistema AWS224- Hai bisogno di funzioni a lunga durata (fino a 15 minuti)225- Hai bisogno di architetture event-driven complesse226- Hai bisogno di runtime oltre JavaScript (Python, Go, Rust, Java)227228### Scegli Vercel Functions se:229- Stai sviluppando con Next.js o un framework frontend230- Vuoi l'esperienza di deploy piu semplice (git push)231- Il tuo team e focalizzato sul frontend232- Vuoi hosting + funzioni + CDN in un'unica piattaforma233234### Scegli Cloudflare Workers se:235- Hai bisogno della latenza piu bassa possibile a livello globale236- Vuoi l'opzione piu economica su scala237- Hai bisogno di capacita di edge computing238- Il tempo di cold start e critico per il tuo caso d'uso239240## Si Possono Combinare?241242Assolutamente. Un'architettura comune:243244```mermaid245graph TD246 User --> CF[Cloudflare Workers\nEdge caching, routing, A/B tests]247 CF --> Vercel[Vercel\nNext.js frontend + API routes]248 Vercel --> Lambda[AWS Lambda\nHeavy processing, background jobs]249 Lambda --> S3[S3 Storage]250 Lambda --> DB[(Database)]251```252253- **Cloudflare Workers**: routing edge, caching, sicurezza254- **Vercel Functions**: API routes frontend, SSR255- **AWS Lambda**: elaborazione backend pesante, task pianificati, pipeline di eventi256257## Conclusione258259Il serverless e maturato significativamente. Nel 2026, la scelta tra AWS Lambda, Vercel Functions e Cloudflare Workers dipende dal tuo stack e dalle tue priorita:260261- **Esperienza sviluppatore piu semplice**: Vercel262- **Piu potente e flessibile**: AWS Lambda263- **Migliori prestazioni e prezzi**: Cloudflare Workers264265Tutte e tre sono pronte per la produzione e testate sul campo. Inizia con quella che si adatta al tuo stack attuale e amplia man mano che le tue esigenze crescono.266
:Serverless in Pratica: AWS Lambda vs Vercel Functions vs Cloudflare Workerslines 1-266 (END) — press q to close