spinny:~/writing $ less serverless-aws-lambda-vercel-cloudflare.md
12Serverless computing laat je code draaien zonder servers te beheren. Je schrijft functies, deployt ze, en het platform handelt schaling, beschikbaarheid en infrastructuur af. In 2026 domineren drie platformen het serverless landschap: **AWS Lambda**, **Vercel Serverless Functions** en **Cloudflare Workers**. Elk heeft verschillende sterktes en afwegingen.34In dit artikel vergelijken we ze met echte voorbeelden, prestatie-overwegingen en prijsanalyses.56## Hoe Serverless Werkt78```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```1516Je deployt een functie. Wanneer een verzoek binnenkomt, doet het platform het volgende:171. Start een uitvoeringsomgeving (of hergebruikt een al opgewarmde)182. Draait je functie193. Retourneert de respons204. Schaalt naar nul wanneer inactief (je betaalt niet voor inactieve tijd)2122## Platformoverzicht2324### AWS Lambda2526Het originele serverless platform (gelanceerd in 2014). Het meest volwassen en functierijk, met diepe integratie in het AWS-ecosysteem.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 Functions4445Strak geintegreerd met Next.js en de frontend deployment workflow. Functies worden samen met je frontend gedeployed zonder configuratie.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 Workers6061Draait op Cloudflare's edge-netwerk in meer dan 300 steden wereldwijd. Gebruikt de V8-engine (dezelfde als Chrome) in plaats van Node.js, wat extreem snelle cold starts betekent.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## Functievergelijking7980| Functie | 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| **Max uitvoertijd** | 15 minuten | 60s (Hobby), 300s (Pro) | 30s (gratis), 15min (betaald) |84| **Geheugen** | 128MB - 10GB | 1024MB - 3008MB | 128MB |85| **Cold start** | 100-500ms | 100-300ms | < 5ms |86| **Deploy locatie** | Enkele regio (of multi met moeite) | Meerdere regio's | 300+ edge-locaties |87| **Max payload** | 6MB (synchroon), 256KB (asynchroon) | 4.5MB | 100MB |88| **Ingebouwde opslag** | Nee (gebruik DynamoDB, S3) | Nee (gebruik externe DB) | KV, D1 (SQLite), R2 (S3-compatibel) |89| **Prijsmodel** | Per verzoek + duur | Inbegrepen in plan | Per verzoek + duur |90| **Gratis niveau** | 1M verzoeken/maand | 100K/maand (Hobby) | 100K verzoeken/dag |9192## Cold Starts9394Cold start is de tijd die nodig is om een nieuwe functie-instantie te initialiseren. Dit is de grootste prestatie-zorg bij 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| Platform | Typische Cold Start | Waarom |111|----------|-------------------|-----|112| **Cloudflare Workers** | < 5ms | V8 isolates, geen volledige runtime nodig |113| **Vercel Functions** | 100-300ms | Node.js runtime op edge of regionaal |114| **AWS Lambda** | 100-500ms | Volledige containerinitialisatie |115| **AWS Lambda (Java)** | 1-5 seconden | JVM opstartoverhead |116117Cloudflare Workers wint cold starts met een enorme marge omdat het V8 isolates gebruikt in plaats van containers.118119## Prijsvergelijking120121### Gratis niveau122123| Platform | Gratis verzoeken | Gratis compute |124|----------|--------------|--------------|125| **AWS Lambda** | 1M/maand | 400.000 GB-seconden |126| **Vercel** | 100K/maand | Inbegrepen in Hobby plan |127| **Cloudflare Workers** | 100K/dag (~3M/maand) | 10ms CPU per aanroep |128129### Op schaal (10M verzoeken/maand, gemiddelde duur 50ms)130131| Platform | Geschatte maandelijkse kosten |132|----------|----------------------|133| **AWS Lambda** | ~$2,50 (verzoeken) + ~$4,15 (compute) = **~$6,65** |134| **Vercel** | **$20/maand** (Pro plan, inclusief functies) |135| **Cloudflare Workers** | **$5/maand** (betaald plan, inclusief 10M verzoeken) |136137Voor de meeste use cases is Cloudflare Workers het goedkoopst. Vercel's prijzen zijn eenvoudig maar omvatten het hele platform (hosting, CDN, analytics). AWS Lambda heeft de meest gedetailleerde prijzen.138139## Praktijkvoorbeelden140141### AWS Lambda: Best voor142143- **Complexe backend workflows** - step functions, event-driven architecturen144- **Integratie met AWS-diensten** - S3 triggers, DynamoDB streams, SQS queues145- **Langlopende taken** - tot 15 minuten uitvoertijd146- **Meertalige teams** - ondersteunt het breedste scala aan runtimes147148```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: Best voor159160- **Next.js applicaties** - zero-config API routes161- **Frontend-gerichte teams** - deploy frontend en backend samen162- **Snel prototypen** - git push om te deployen163- **Jamstack architecturen** - statische frontend + serverless API164165```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: Best voor188189- **Low-latency API's** - code draait op 300+ locaties wereldwijd190- **Edge computing** - respons transformeren, A/B testen, personalisatie191- **High-volume API's** - goedkoopst op schaal met royaal gratis niveau192- **Globale applicaties** - data dicht bij gebruikers met KV en 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## Wanneer welke kiezen221222### Kies AWS Lambda als:223- Je al geinvesteerd bent in het AWS-ecosysteem224- Je langlopende functies nodig hebt (tot 15 minuten)225- Je complexe event-driven architecturen nodig hebt226- Je runtimes buiten JavaScript nodig hebt (Python, Go, Rust, Java)227228### Kies Vercel Functions als:229- Je bouwt met Next.js of een frontend framework230- Je de eenvoudigste deploy-ervaring wilt (git push)231- Je team frontend-gericht is232- Je hosting + functies + CDN in een platform wilt233234### Kies Cloudflare Workers als:235- Je de laagst mogelijke latency wereldwijd nodig hebt236- Je de goedkoopste optie op schaal wilt237- Je edge computing mogelijkheden nodig hebt238- Cold start tijd kritisch is voor jouw use case239240## Kun je ze combineren?241242Absoluut. Een veelvoorkomende architectuur: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**: edge routing, caching, beveiliging254- **Vercel Functions**: frontend API routes, SSR255- **AWS Lambda**: zware backend verwerking, geplande taken, event pipelines256257## Conclusie258259Serverless is aanzienlijk volwassen geworden. In 2026 hangt de keuze tussen AWS Lambda, Vercel Functions en Cloudflare Workers af van je stack en prioriteiten:260261- **Eenvoudigste ontwikkelaarservaring**: Vercel262- **Krachtigst en meest flexibel**: AWS Lambda263- **Beste prestaties en prijzen**: Cloudflare Workers264265Alle drie zijn productie-klaar en beproefd. Begin met degene die bij je huidige stack past, en breid uit naarmate je behoeften groeien.266
:Serverless in de Praktijk: AWS Lambda vs Vercel Functions vs Cloudflare Workerslines 1-266 (END) — press q to close