spinny:~/writing $ less serverless-aws-lambda-vercel-cloudflare.md
12Pengkomputeran serverless membolehkan anda menjalankan kod tanpa mengurus pelayan. Anda menulis fungsi, men-deploy-nya dan platform mengendalikan penskalaan, ketersediaan dan infrastruktur. Pada 2026, tiga platform mendominasi landskap serverless: **AWS Lambda**, **Vercel Serverless Functions** dan **Cloudflare Workers**. Setiap satu mempunyai kekuatan dan pertukaran yang berbeza.34Dalam artikel ini, kami membandingkannya dengan contoh sebenar, pertimbangan prestasi dan analisis harga.56## Bagaimana Serverless Berfungsi78```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```1516Anda men-deploy fungsi. Apabila permintaan tiba, platform:171. Memulakan persekitaran pelaksanaan (atau menggunakan semula yang sudah panas)182. Menjalankan fungsi anda193. Mengembalikan respons204. Mengecilkan ke sifar apabila tidak aktif (anda tidak membayar untuk masa tidak aktif)2122## Gambaran Keseluruhan Platform2324### AWS Lambda2526Platform serverless yang asal (dilancarkan 2014). Paling matang dan kaya ciri, dengan integrasi mendalam ke dalam ekosistem AWS.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 Functions4445Bersepadu rapat dengan Next.js dan aliran kerja deployment frontend. Fungsi di-deploy bersama frontend anda tanpa konfigurasi.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 Workers6061Berjalan di rangkaian edge Cloudflare di lebih 300 bandar di seluruh dunia. Menggunakan enjin V8 (sama seperti Chrome) dan bukannya Node.js, yang bermakna cold start yang sangat pantas.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## Perbandingan Ciri7980| Ciri | 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| **Masa pelaksanaan maks** | 15 minit | 60s (Hobby), 300s (Pro) | 30s (percuma), 15min (berbayar) |84| **Memori** | 128MB - 10GB | 1024MB - 3008MB | 128MB |85| **Cold start** | 100-500ms | 100-300ms | < 5ms |86| **Lokasi deploy** | Rantau tunggal (atau pelbagai dengan usaha) | Pelbagai rantau | 300+ lokasi edge |87| **Payload maks** | 6MB (segerak), 256KB (tak segerak) | 4.5MB | 100MB |88| **Storan terbina** | Tidak (gunakan DynamoDB, S3) | Tidak (gunakan DB luaran) | KV, D1 (SQLite), R2 (serasi S3) |89| **Model harga** | Setiap permintaan + tempoh | Termasuk dalam pelan | Setiap permintaan + tempoh |90| **Peringkat percuma** | 1M permintaan/bulan | 100K/bulan (Hobby) | 100K permintaan/hari |9192## Cold Start9394Cold start ialah masa yang diperlukan untuk memulakan instance fungsi baharu. Ini adalah kebimbangan prestasi terbesar dengan 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 | Cold Start Biasa | Mengapa |111|----------|-------------------|-----|112| **Cloudflare Workers** | < 5ms | Pengasingan V8, runtime penuh tidak diperlukan |113| **Vercel Functions** | 100-300ms | Runtime Node.js di edge atau serantau |114| **AWS Lambda** | 100-500ms | Permulaan kontena penuh |115| **AWS Lambda (Java)** | 1-5 saat | Beban permulaan JVM |116117Cloudflare Workers menang dalam cold start dengan margin yang besar kerana menggunakan pengasingan V8 dan bukannya kontena.118119## Perbandingan Harga120121### Peringkat Percuma122123| Platform | Permintaan Percuma | Pengiraan Percuma |124|----------|--------------|--------------|125| **AWS Lambda** | 1M/bulan | 400,000 GB-saat |126| **Vercel** | 100K/bulan | Termasuk dalam pelan Hobby |127| **Cloudflare Workers** | 100K/hari (~3M/bulan) | 10ms CPU setiap panggilan |128129### Pada Skala (10M permintaan/bulan, tempoh purata 50ms)130131| Platform | Anggaran Kos Bulanan |132|----------|----------------------|133| **AWS Lambda** | ~$2.50 (permintaan) + ~$4.15 (pengiraan) = **~$6.65** |134| **Vercel** | **$20/bulan** (pelan Pro, termasuk fungsi) |135| **Cloudflare Workers** | **$5/bulan** (pelan berbayar, termasuk 10M permintaan) |136137Untuk kebanyakan kes penggunaan, Cloudflare Workers adalah yang paling murah. Harga Vercel mudah tetapi merangkumi keseluruhan platform (hosting, CDN, analitik). AWS Lambda mempunyai harga yang paling terperinci.138139## Kes Penggunaan Sebenar140141### AWS Lambda: Terbaik Untuk142143- **Aliran kerja backend yang kompleks** - step functions, seni bina berasaskan peristiwa144- **Integrasi dengan perkhidmatan AWS** - pencetus S3, aliran DynamoDB, baris gilir SQS145- **Tugas berjalan lama** - sehingga 15 minit masa pelaksanaan146- **Pasukan berbilang bahasa** - menyokong julat runtime yang paling luas147148```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: Terbaik Untuk159160- **Aplikasi Next.js** - laluan API tanpa konfigurasi161- **Pasukan berorientasikan frontend** - deploy frontend dan backend bersama162- **Prototaip pantas** - git push untuk deploy163- **Seni bina Jamstack** - frontend statik + API serverless164165```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: Terbaik Untuk188189- **API kependaman rendah** - kod berjalan di 300+ lokasi di seluruh dunia190- **Edge computing** - mengubah respons, ujian A/B, pemperibadian191- **API volum tinggi** - paling murah pada skala dengan peringkat percuma yang murah hati192- **Aplikasi global** - data dekat dengan pengguna dengan KV dan 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## Bila Untuk Memilih Yang Mana221222### Pilih AWS Lambda jika:223- Anda sudah melabur dalam ekosistem AWS224- Anda memerlukan fungsi berjalan lama (sehingga 15 minit)225- Anda memerlukan seni bina berasaskan peristiwa yang kompleks226- Anda memerlukan runtime selain JavaScript (Python, Go, Rust, Java)227228### Pilih Vercel Functions jika:229- Anda membina dengan Next.js atau rangka kerja frontend230- Anda mahukan pengalaman deploy yang paling mudah (git push)231- Pasukan anda berorientasikan frontend232- Anda mahukan hosting + fungsi + CDN dalam satu platform233234### Pilih Cloudflare Workers jika:235- Anda memerlukan kependaman serendah mungkin secara global236- Anda mahukan pilihan paling murah pada skala237- Anda memerlukan keupayaan edge computing238- Masa cold start kritikal untuk kes penggunaan anda239240## Bolehkah Anda Menggabungkannya?241242Sudah tentu. Seni bina yang biasa: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**: penghalaan edge, caching, keselamatan254- **Vercel Functions**: laluan API frontend, SSR255- **AWS Lambda**: pemprosesan backend berat, tugas berjadual, saluran paip peristiwa256257## Kesimpulan258259Serverless telah matang dengan ketara. Pada 2026, pilihan antara AWS Lambda, Vercel Functions dan Cloudflare Workers bergantung pada stack dan keutamaan anda:260261- **Pengalaman pembangun paling mudah**: Vercel262- **Paling berkuasa dan fleksibel**: AWS Lambda263- **Prestasi dan harga terbaik**: Cloudflare Workers264265Ketiga-tiganya sedia untuk pengeluaran dan telah diuji dalam pertempuran. Mulakan dengan yang sesuai dengan stack semasa anda, dan kembangkan apabila keperluan anda bertambah.266
:Serverless dalam Amalan: AWS Lambda vs Vercel Functions vs Cloudflare Workerslines 1-266 (END) — press q to close