spinny:~/writing $ vim serverless-aws-lambda-vercel-cloudflare.md
1~2Serverless computing pozwala uruchamiac kod bez zarzadzania serwerami. Piszesz funkcje, wdrazasz je, a platforma zajmuje sie skalowaniem, dostepnoscia i infrastruktura. W 2026 roku trzy platformy dominuja w swiecie serverless: **AWS Lambda**, **Vercel Serverless Functions** i **Cloudflare Workers**. Kazda ma inne mocne strony i kompromisy.3~4W tym artykule porownujemy je z prawdziwymi przykladami, zagadnieniami wydajnosci i analiza cen.5~6## Jak dziala Serverless7~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~16Wdrazasz funkcje. Gdy nadchodzi zadanie, platforma:171. Uruchamia srodowisko wykonawcze (lub wykorzystuje juz rozgrzane)182. Uruchamia Twoja funkcje193. Zwraca odpowiedz204. Skaluje do zera w stanie bezczynnosci (nie placisz za czas bezczynnosci)21~22## Przeglad platform23~24### AWS Lambda25~26Oryginalna platforma serverless (uruchomiona w 2014). Najbardziej dojrzala i bogata w funkcje, z gleboka integracja w ekosystem AWS.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~45Scisle zintegrowane z Next.js i procesem wdrazania frontendu. Funkcje sa wdrazane razem z frontendem bez zadnej konfiguracji.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~61Dziala w sieci edge Cloudflare w ponad 300 miastach na calym swiecie. Uzywa silnika V8 (tego samego co Chrome) zamiast Node.js, co oznacza niezwykle szybkie cold starty.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## Porownanie funkcji79~80| Funkcja | 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| **Maks. czas wykonania** | 15 minut | 60s (Hobby), 300s (Pro) | 30s (darmowy), 15min (platny) |84| **Pamiec** | 128MB - 10GB | 1024MB - 3008MB | 128MB |85| **Cold start** | 100-500ms | 100-300ms | < 5ms |86| **Lokalizacja wdrozenia** | Pojedynczy region (lub multi z wysilkiem) | Wiele regionow | 300+ lokalizacji edge |87| **Maks. payload** | 6MB (synchroniczny), 256KB (asynchroniczny) | 4.5MB | 100MB |88| **Wbudowane przechowywanie** | Nie (uzyj DynamoDB, S3) | Nie (uzyj zewnetrznej bazy) | KV, D1 (SQLite), R2 (kompatybilny z S3) |89| **Model cenowy** | Za zapytanie + czas trwania | Wliczone w plan | Za zapytanie + czas trwania |90| **Darmowy poziom** | 1M zapytan/miesiac | 100K/miesiac (Hobby) | 100K zapytan/dzien |91~92## Cold Start93~94Cold start to czas potrzebny na zainicjalizowanie nowej instancji funkcji. To najwiekszy problem wydajnosciowy w 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| Platforma | Typowy Cold Start | Dlaczego |111|----------|-------------------|-----|112| **Cloudflare Workers** | < 5ms | Izolaty V8, pelny runtime niepotrzebny |113| **Vercel Functions** | 100-300ms | Runtime Node.js na edge lub regionalny |114| **AWS Lambda** | 100-500ms | Pelna inicjalizacja kontenera |115| **AWS Lambda (Java)** | 1-5 sekund | Narzut uruchamiania JVM |116~117Cloudflare Workers wygrywa w cold startach z ogromna przewaga, poniewaz uzywa izolatow V8 zamiast kontenerow.118~119## Porownanie cen120~121### Darmowy poziom122~123| Platforma | Darmowe zapytania | Darmowe obliczenia |124|----------|--------------|--------------|125| **AWS Lambda** | 1M/miesiac | 400 000 GB-sekund |126| **Vercel** | 100K/miesiac | Wliczone w plan Hobby |127| **Cloudflare Workers** | 100K/dzien (~3M/miesiac) | 10ms CPU na wywolanie |128~129### Na skale (10M zapytan/miesiac, sredni czas 50ms)130~131| Platforma | Szacunkowy koszt miesieczny |132|----------|----------------------|133| **AWS Lambda** | ~$2,50 (zapytania) + ~$4,15 (obliczenia) = **~$6,65** |134| **Vercel** | **$20/miesiac** (plan Pro, zawiera funkcje) |135| **Cloudflare Workers** | **$5/miesiac** (plan platny, zawiera 10M zapytan) |136~137Dla wiekszosci przypadkow uzycia Cloudflare Workers jest najtanszy. Cennik Vercel jest prosty, ale obejmuje cala platforme (hosting, CDN, analityka). AWS Lambda ma najbardziej szczegolowy cennik.138~139## Zastosowania w praktyce140~141### AWS Lambda: Najlepszy do142~143- **Zlozonych procesow backendowych** - step functions, architektury oparte na zdarzeniach144- **Integracji z uslugami AWS** - triggery S3, strumienie DynamoDB, kolejki SQS145- **Dlugo trwajacych zadan** - do 15 minut czasu wykonania146- **Zespolow wielojezycznych** - wspiera najszerszy zakres srodowisk wykonawczych147~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: Najlepszy do159~160- **Aplikacji Next.js** - trasy API bez konfiguracji161- **Zespolow zorientowanych na frontend** - wdrazaj frontend i backend razem162- **Szybkiego prototypowania** - git push do wdrozenia163- **Architektur Jamstack** - statyczny 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: Najlepszy do188~189- **API o niskim opoznieniu** - kod dziala w ponad 300 lokalizacjach na swiecie190- **Edge computing** - transformacja odpowiedzi, testy A/B, personalizacja191- **API o duzym ruchu** - najtanszy na skale z hojnym darmowym poziomem192- **Aplikacji globalnych** - dane blisko uzytkownikow z KV i 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## Kiedy wybrac ktora221~222### Wybierz AWS Lambda jesli:223- Juz inwestujesz w ekosystem AWS224- Potrzebujesz dlugo dzialajacych funkcji (do 15 minut)225- Potrzebujesz zlozonych architektur opartych na zdarzeniach226- Potrzebujesz srodowisk wykonawczych poza JavaScript (Python, Go, Rust, Java)227~228### Wybierz Vercel Functions jesli:229- Budujesz z Next.js lub frameworkiem frontendowym230- Chcesz najprostszego doswiadczenia wdrazania (git push)231- Twoj zespol jest zorientowany na frontend232- Chcesz hosting + funkcje + CDN na jednej platformie233~234### Wybierz Cloudflare Workers jesli:235- Potrzebujesz najnizszego mozliwego opoznienia globalnie236- Chcesz najtansza opcje na skale237- Potrzebujesz mozliwosci edge computing238- Czas cold start jest krytyczny dla Twojego przypadku uzycia239~240## Czy mozna je laczyc?241~242Zdecydowanie. Popularna architektura: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**: routing na edge, cache, bezpieczenstwo254- **Vercel Functions**: frontendowe trasy API, SSR255- **AWS Lambda**: ciezkie przetwarzanie backendowe, zaplanowane zadania, potoki zdarzen256~257## Podsumowanie258~259Serverless znaczaco dojrzal. W 2026 roku wybor miedzy AWS Lambda, Vercel Functions a Cloudflare Workers zalezy od Twojego stosu i priorytetow:260~261- **Najprostsze doswiadczenie programisty**: Vercel262- **Najpotezniejszy i najbardziej elastyczny**: AWS Lambda263- **Najlepsza wydajnosc i ceny**: Cloudflare Workers264~265Wszystkie trzy sa gotowe do produkcji i sprawdzone w boju. Zacznij od tego, ktory pasuje do Twojego obecnego stosu, i rozszerzaj w miare wzrostu potrzeb.266~
NORMAL · serverless-aws-lambda-vercel-cloudflare.md [readonly]266 lines · :q to close