spinny:~/writing $ vim serverless-aws-lambda-vercel-cloudflare.md
1~2Serverless 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.3~4In dit artikel vergelijken we ze met echte voorbeelden, prestatie-overwegingen en prijsanalyses.5~6## Hoe Serverless Werkt7~8```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```15~16Je 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)21~22## Platformoverzicht23~24### AWS Lambda25~26Het originele serverless platform (gelanceerd in 2014). Het meest volwassen en functierijk, met diepe integratie in het AWS-ecosysteem.27~28```javascript29// AWS Lambda handler30export const handler = async (event) => {31 const body = JSON.parse(event.body);32~33 const result = await processData(body);34~35 return {36 statusCode: 200,37 headers: { 'Content-Type': 'application/json' },38 body: JSON.stringify(result),39 };40};41```42~43### Vercel Serverless Functions44~45Strak geintegreerd met Next.js en de frontend deployment workflow. Functies worden samen met je frontend gedeployed zonder configuratie.46~47```typescript48// app/api/hello/route.ts (Next.js App Router)49import { NextResponse } from 'next/server';50~51export async function GET(request: Request) {52 const { searchParams } = new URL(request.url);53 const name = searchParams.get('name') || 'World';54~55 return NextResponse.json({ message: `Hello, ${name}!` });56}57```58~59### Cloudflare Workers60~61Draait 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.62~63```javascript64// Cloudflare Worker65export default {66 async fetch(request, env) {67 const url = new URL(request.url);68 const name = url.searchParams.get('name') || 'World';69~70 return new Response(71 JSON.stringify({ message: `Hello, ${name}!` }),72 { headers: { 'Content-Type': 'application/json' } }73 );74 },75};76```77~78## Functievergelijking79~80| 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 |91~92## Cold Starts93~94Cold start is de tijd die nodig is om een nieuwe functie-instantie te initialiseren. Dit is de grootste prestatie-zorg bij serverless.95~96```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 end104~105 subgraph "Warm Invocation"106 F[Request] --> G[Execute Function]107 end108```109~110| 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 |116~117Cloudflare Workers wint cold starts met een enorme marge omdat het V8 isolates gebruikt in plaats van containers.118~119## Prijsvergelijking120~121### Gratis niveau122~123| 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 |128~129### Op schaal (10M verzoeken/maand, gemiddelde duur 50ms)130~131| 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) |136~137Voor 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.138~139## Praktijkvoorbeelden140~141### AWS Lambda: Best voor142~143- **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 runtimes147~148```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```157~158### Vercel Functions: Best voor159~160- **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 API164~165```typescript166// app/api/subscribe/route.ts167import { NextResponse } from 'next/server';168~169export async function POST(request: Request) {170 const { email } = await request.json();171~172 // Validate173 if (!email || !email.includes('@')) {174 return NextResponse.json(175 { error: 'Invalid email' },176 { status: 400 }177 );178 }179~180 // Save to database181 await db.subscribers.create({ email });182~183 return NextResponse.json({ success: true });184}185```186~187### Cloudflare Workers: Best voor188~189- **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 D1193~194```javascript195// Edge-side A/B test196export default {197 async fetch(request, env) {198 const url = new URL(request.url);199~200 // Assign user to variant201 const cookie = request.headers.get('Cookie') || '';202 let variant = cookie.includes('ab=b') ? 'b' : 'a';203~204 if (!cookie.includes('ab=')) {205 variant = Math.random() < 0.5 ? 'a' : 'b';206 }207~208 // Fetch the appropriate version209 const response = await fetch(`${url.origin}/variants/${variant}`);210 const newResponse = new Response(response.body, response);211~212 // Set cookie for consistent experience213 newResponse.headers.set('Set-Cookie', `ab=${variant}; Path=/; Max-Age=86400`);214~215 return newResponse;216 },217};218```219~220## Wanneer welke kiezen221~222### 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)227~228### 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 wilt233~234### 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 case239~240## Kun je ze combineren?241~242Absoluut. Een veelvoorkomende architectuur:243~244```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```252~253- **Cloudflare Workers**: edge routing, caching, beveiliging254- **Vercel Functions**: frontend API routes, SSR255- **AWS Lambda**: zware backend verwerking, geplande taken, event pipelines256~257## Conclusie258~259Serverless is aanzienlijk volwassen geworden. In 2026 hangt de keuze tussen AWS Lambda, Vercel Functions en Cloudflare Workers af van je stack en prioriteiten:260~261- **Eenvoudigste ontwikkelaarservaring**: Vercel262- **Krachtigst en meest flexibel**: AWS Lambda263- **Beste prestaties en prijzen**: Cloudflare Workers264~265Alle drie zijn productie-klaar en beproefd. Begin met degene die bij je huidige stack past, en breid uit naarmate je behoeften groeien.266~
NORMAL · serverless-aws-lambda-vercel-cloudflare.md [readonly]266 lines · :q to close