spinny:~/writing $ vim serverless-aws-lambda-vercel-cloudflare.md
1~2Serverless computing cho phep ban chay code ma khong can quan ly server. Ban viet cac ham, trien khai chung va nen tang se xu ly viec mo rong, kha dung va ha tang. Trong nam 2026, ba nen tang thong tri boi canh serverless: **AWS Lambda**, **Vercel Serverless Functions** va **Cloudflare Workers**. Moi nen tang co nhung the manh va danh doi khac nhau.3~4Trong bai viet nay, chung toi so sanh chung voi cac vi du thuc te, cac can nhac ve hieu suat va phan tich gia.5~6## Serverless hoat dong nhu the nao7~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~16Ban trien khai mot ham. Khi mot yeu cau den, nen tang se:171. Khoi tao moi truong thuc thi (hoac tai su dung mot moi truong da san sang)182. Chay ham cua ban193. Tra ve phan hoi204. Thu nho ve khong khi khong hoat dong (ban khong tra phi cho thoi gian nghi)21~22## Tong quan nen tang23~24### AWS Lambda25~26Nen tang serverless dau tien (ra mat nam 2014). Chin muoi nhat va giau tinh nang nhat, voi tich hop sau vao he sinh thai 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~45Tich hop chat che voi Next.js va quy trinh trien khai frontend. Cac ham duoc trien khai cung voi frontend cua ban ma khong can cau hinh.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~61Chay tren mang edge cua Cloudflare tai hon 300 thanh pho tren toan the gioi. Su dung V8 engine (giong nhu Chrome) thay vi Node.js, co nghia la cold start cuc ky nhanh.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## So sanh tinh nang79~80| Tinh nang | 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| **Thoi gian thuc thi toi da** | 15 phut | 60s (Hobby), 300s (Pro) | 30s (mien phi), 15 phut (tra phi) |84| **Bo nho** | 128MB - 10GB | 1024MB - 3008MB | 128MB |85| **Cold start** | 100-500ms | 100-300ms | < 5ms |86| **Vi tri trien khai** | Mot vung (hoac nhieu vung voi no luc) | Nhieu vung | 300+ vi tri edge |87| **Payload toi da** | 6MB (dong bo), 256KB (bat dong bo) | 4.5MB | 100MB |88| **Luu tru tich hop** | Khong (su dung DynamoDB, S3) | Khong (su dung DB ben ngoai) | KV, D1 (SQLite), R2 (tuong thich S3) |89| **Mo hinh gia** | Theo yeu cau + thoi luong | Bao gom trong goi | Theo yeu cau + thoi luong |90| **Goi mien phi** | 1M yeu cau/thang | 100K/thang (Hobby) | 100K yeu cau/ngay |91~92## Cold Start93~94Cold start la thoi gian can de khoi tao mot instance ham moi. Day la moi quan tam lon nhat ve hieu suat voi 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| Nen tang | Cold Start dien hinh | Ly do |111|----------|-------------------|-----|112| **Cloudflare Workers** | < 5ms | V8 isolate, khong can runtime day du |113| **Vercel Functions** | 100-300ms | Runtime Node.js tren edge hoac vung |114| **AWS Lambda** | 100-500ms | Khoi tao container day du |115| **AWS Lambda (Java)** | 1-5 giay | Chi phi khoi dong JVM |116~117Cloudflare Workers thang cold start voi khoang cach lon vi su dung V8 isolate thay vi container.118~119## So sanh gia120~121### Goi mien phi122~123| Nen tang | Yeu cau mien phi | Tinh toan mien phi |124|----------|--------------|--------------|125| **AWS Lambda** | 1M/thang | 400,000 GB-giay |126| **Vercel** | 100K/thang | Bao gom trong goi Hobby |127| **Cloudflare Workers** | 100K/ngay (~3M/thang) | 10ms CPU moi lan goi |128~129### O quy mo lon (10M yeu cau/thang, thoi luong trung binh 50ms)130~131| Nen tang | Chi phi hang thang uoc tinh |132|----------|----------------------|133| **AWS Lambda** | ~$2.50 (yeu cau) + ~$4.15 (tinh toan) = **~$6.65** |134| **Vercel** | **$20/thang** (goi Pro, bao gom ham) |135| **Cloudflare Workers** | **$5/thang** (goi tra phi, bao gom 10M yeu cau) |136~137Voi hau het cac truong hop su dung, Cloudflare Workers la re nhat. Gia cua Vercel don gian nhung bao gom toan bo nen tang (hosting, CDN, analytics). AWS Lambda co gia chi tiet nhat.138~139## Truong hop su dung thuc te140~141### AWS Lambda: Tot nhat cho142~143- **Quy trinh backend phuc tap** - step functions, kien truc huong su kien144- **Tich hop voi dich vu AWS** - S3 trigger, DynamoDB stream, SQS queue145- **Tac vu chay lau** - len den 15 phut thoi gian thuc thi146- **Nhom da ngon ngu** - ho tro pham vi runtime rong nhat147~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: Tot nhat cho159~160- **Ung dung Next.js** - API route khong can cau hinh161- **Nhom tap trung frontend** - trien khai frontend va backend cung nhau162- **Tao mau nhanh** - git push de trien khai163- **Kien truc Jamstack** - frontend tinh + 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: Tot nhat cho188~189- **API do tre thap** - code chay tai hon 300 vi tri tren toan the gioi190- **Edge computing** - chuyen doi phan hoi, A/B testing, ca nhan hoa191- **API luu luong cao** - re nhat o quy mo lon voi goi mien phi hao phong192- **Ung dung toan cau** - du lieu gan nguoi dung voi KV va 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## Khi nao chon cai nao221~222### Chon AWS Lambda neu:223- Ban da dau tu vao he sinh thai AWS224- Ban can ham chay lau (len den 15 phut)225- Ban can kien truc huong su kien phuc tap226- Ban can runtime ngoai JavaScript (Python, Go, Rust, Java)227~228### Chon Vercel Functions neu:229- Ban dang xay dung voi Next.js hoac framework frontend230- Ban muon trai nghiem trien khai don gian nhat (git push)231- Nhom cua ban tap trung vao frontend232- Ban muon hosting + ham + CDN trong mot nen tang233~234### Chon Cloudflare Workers neu:235- Ban can do tre thap nhat co the tren toan cau236- Ban muon lua chon re nhat o quy mo lon237- Ban can kha nang edge computing238- Thoi gian cold start rat quan trong cho truong hop su dung cua ban239~240## Co the ket hop chung khong?241~242Chac chan. Mot kien truc pho bien: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**: dinh tuyen edge, caching, bao mat254- **Vercel Functions**: API route frontend, SSR255- **AWS Lambda**: xu ly backend nang, tac vu dinh ky, pipeline su kien256~257## Ket luan258~259Serverless da truong thanh dang ke. Trong nam 2026, lua chon giua AWS Lambda, Vercel Functions va Cloudflare Workers phu thuoc vao stack va uu tien cua ban:260~261- **Trai nghiem nha phat trien don gian nhat**: Vercel262- **Manh me va linh hoat nhat**: AWS Lambda263- **Hieu suat va gia tot nhat**: Cloudflare Workers264~265Ca ba deu san sang cho san xuat va da duoc thu nghiem thuc te. Bat dau voi cai phu hop voi stack hien tai cua ban va mo rong khi nhu cau cua ban tang len.266~
NORMAL · serverless-aws-lambda-vercel-cloudflare.md [readonly]266 lines · :q to close