spinny:~/writing $ vim serverless-aws-lambda-vercel-cloudflare.md
1~2Serverless computing later dig kora kod utan att hantera servrar. Du skriver funktioner, deployar dem och plattformen hanterar skalning, tillganglighet och infrastruktur. 2026 dominerar tre plattformar serverless-landskapet: **AWS Lambda**, **Vercel Serverless Functions** och **Cloudflare Workers**. Var och en har olika styrkor och avvagningar.3~4I den har artikeln jamfor vi dem med verkliga exempel, prestandaovervaganden och prisanalyser.5~6## Hur Serverless Fungerar7~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~16Du deployar en funktion. Nar en forfragan ankommmer, gor plattformen foljande:171. Startar en exekveringsmiljo (eller ateranvander en redan uppvarmd)182. Kor din funktion193. Returnerar svaret204. Skalar ner till noll vid inaktivitet (du betalar inte for inaktiv tid)21~22## Plattformsoversikt23~24### AWS Lambda25~26Den ursprungliga serverless-plattformen (lanserad 2014). Den mest mogna och funktionsrika, med djup integration i AWS-ekosystemet.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~45Tatt integrerat med Next.js och frontend-deployment-arbetsfloden. Funktioner deployeas tillsammans med din frontend utan konfiguration.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~61Kor pa Cloudflares edge-natverk i over 300 stader varlden over. Anvander V8-motorn (samma som Chrome) istallet for Node.js, vilket innebar extremt snabba cold starts.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## Funktionsjamforelse79~80| Funktion | 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 exekveringstid** | 15 minuter | 60s (Hobby), 300s (Pro) | 30s (gratis), 15min (betald) |84| **Minne** | 128MB - 10GB | 1024MB - 3008MB | 128MB |85| **Cold start** | 100-500ms | 100-300ms | < 5ms |86| **Deploy-plats** | Enskild region (eller multi med anstrangning) | Flera regioner | 300+ edge-platser |87| **Max payload** | 6MB (synkron), 256KB (asynkron) | 4.5MB | 100MB |88| **Inbyggd lagring** | Nej (anvand DynamoDB, S3) | Nej (anvand extern DB) | KV, D1 (SQLite), R2 (S3-kompatibel) |89| **Prismodell** | Per forfragan + varaktighet | Ingaer i planen | Per forfragan + varaktighet |90| **Gratis niva** | 1M forfragningar/manad | 100K/manad (Hobby) | 100K forfragningar/dag |91~92## Cold Starts93~94Cold start ar den tid det tar att initialisera en ny funktionsinstans. Detta ar det storsta prestandaproblemet med 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| Plattform | Typisk Cold Start | Varfor |111|----------|-------------------|-----|112| **Cloudflare Workers** | < 5ms | V8-isoleringar, ingen full runtime behovs |113| **Vercel Functions** | 100-300ms | Node.js runtime pa edge eller regionalt |114| **AWS Lambda** | 100-500ms | Full containerinitialisering |115| **AWS Lambda (Java)** | 1-5 sekunder | JVM-startoverhead |116~117Cloudflare Workers vinner cold starts med enorm marginal eftersom de anvander V8-isoleringar istallet for containrar.118~119## Prisjamforelse120~121### Gratis niva122~123| Plattform | Gratis forfragningar | Gratis berakning |124|----------|--------------|--------------|125| **AWS Lambda** | 1M/manad | 400 000 GB-sekunder |126| **Vercel** | 100K/manad | Ingaer i Hobby-planen |127| **Cloudflare Workers** | 100K/dag (~3M/manad) | 10ms CPU per anrop |128~129### I skala (10M forfragningar/manad, genomsnittlig varaktighet 50ms)130~131| Plattform | Uppskattad manadskostnad |132|----------|----------------------|133| **AWS Lambda** | ~$2,50 (forfragningar) + ~$4,15 (berakning) = **~$6,65** |134| **Vercel** | **$20/manad** (Pro-plan, inkluderar funktioner) |135| **Cloudflare Workers** | **$5/manad** (betald plan, inkluderar 10M forfragningar) |136~137For de flesta anvandningsfall ar Cloudflare Workers billigast. Vercels prissattning ar enkel men inkluderar hela plattformen (hosting, CDN, analys). AWS Lambda har den mest detaljerade prissattningen.138~139## Verkliga Anvandningsfall140~141### AWS Lambda: Bast for142~143- **Komplexa backend-arbetsfloden** - step functions, handelsedrivna arkitekturer144- **Integration med AWS-tjanster** - S3-triggers, DynamoDB-strommer, SQS-koer145- **Langvariga uppgifter** - upp till 15 minuters exekveringstid146- **Flersprakiga team** - stoder det bredaste utbudet av 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: Bast for159~160- **Next.js-applikationer** - API-rutter utan konfiguration161- **Frontend-fokuserade team** - deploya frontend och backend tillsammans162- **Snabb prototypning** - git push for att deploya163- **Jamstack-arkitekturer** - statisk 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: Bast for188~189- **API:er med lag latens** - kod kor pa 300+ platser varlden over190- **Edge computing** - transformera svar, A/B-testning, personalisering191- **Hogvolyms-API:er** - billigast i skala med generos gratis niva192- **Globala applikationer** - data nara anvandare med KV och 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## Nar man ska valja vilken221~222### Valj AWS Lambda om:223- Du redan ar investerad i AWS-ekosystemet224- Du behover langvariga funktioner (upp till 15 minuter)225- Du behover komplexa handelsedrivna arkitekturer226- Du behover runtimes bortom JavaScript (Python, Go, Rust, Java)227~228### Valj Vercel Functions om:229- Du bygger med Next.js eller ett frontend-ramverk230- Du vill ha den enklaste deploy-upplevelsen (git push)231- Ditt team ar frontend-fokuserat232- Du vill ha hosting + funktioner + CDN i en plattform233~234### Valj Cloudflare Workers om:235- Du behover lagsta mojliga latens globalt236- Du vill ha det billigaste alternativet i skala237- Du behover edge computing-kapacitet238- Cold start-tid ar kritisk for ditt anvandningsfall239~240## Kan man kombinera dem?241~242Absolut. En vanlig arkitektur: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, sakerhet254- **Vercel Functions**: frontend API-rutter, SSR255- **AWS Lambda**: tung backend-bearbetning, schemalagda uppgifter, handelse-pipelines256~257## Slutsats258~259Serverless har mognat avsevart. 2026 beror valet mellan AWS Lambda, Vercel Functions och Cloudflare Workers pa din stack och dina prioriteringar:260~261- **Enklaste utvecklarupplevelsen**: Vercel262- **Mest kraftfull och flexibel**: AWS Lambda263- **Basta prestanda och priser**: Cloudflare Workers264~265Alla tre ar produktionsklara och stridstestade. Borja med den som passar din nuvarande stack och expandera nar dina behov vaxer.266~
NORMAL · serverless-aws-lambda-vercel-cloudflare.md [readonly]266 lines · :q to close