spinny:~/writing $ vim serverless-aws-lambda-vercel-cloudflare.md
1~2Komputasi serverless memungkinkan Anda menjalankan kode tanpa mengelola server. Anda menulis fungsi, men-deploy-nya, dan platform menangani penskalaan, ketersediaan, dan infrastruktur. Di tahun 2026, tiga platform mendominasi lanskap serverless: **AWS Lambda**, **Vercel Serverless Functions**, dan **Cloudflare Workers**. Masing-masing memiliki kekuatan dan kompromi yang berbeda.3~4Dalam artikel ini, kami membandingkannya dengan contoh nyata, pertimbangan performa, dan rincian harga.5~6## Cara Kerja 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~16Anda men-deploy sebuah fungsi. Ketika permintaan tiba, platform:171. Memulai lingkungan eksekusi (atau menggunakan kembali yang sudah aktif)182. Menjalankan fungsi Anda193. Mengembalikan respons204. Menskalakan ke nol saat idle (Anda tidak membayar untuk waktu idle)21~22## Gambaran Platform23~24### AWS Lambda25~26Platform serverless yang pertama (diluncurkan 2014). Paling matang dan kaya fitur, dengan integrasi mendalam ke dalam ekosistem 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~45Terintegrasi erat dengan Next.js dan alur kerja deployment frontend. Fungsi di-deploy bersama frontend Anda tanpa konfigurasi.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~61Berjalan di jaringan edge Cloudflare di lebih dari 300 kota di seluruh dunia. Menggunakan mesin V8 (sama seperti Chrome) alih-alih Node.js, yang berarti cold start yang sangat cepat.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## Perbandingan Fitur79~80| Fitur | 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| **Waktu eksekusi maks** | 15 menit | 60s (Hobby), 300s (Pro) | 30s (gratis), 15min (berbayar) |84| **Memori** | 128MB - 10GB | 1024MB - 3008MB | 128MB |85| **Cold start** | 100-500ms | 100-300ms | < 5ms |86| **Lokasi deploy** | Region tunggal (atau multi dengan usaha) | Beberapa region | 300+ lokasi edge |87| **Payload maks** | 6MB (sinkron), 256KB (asinkron) | 4.5MB | 100MB |88| **Penyimpanan bawaan** | Tidak (gunakan DynamoDB, S3) | Tidak (gunakan DB eksternal) | KV, D1 (SQLite), R2 (kompatibel S3) |89| **Model harga** | Per permintaan + durasi | Termasuk dalam paket | Per permintaan + durasi |90| **Tier gratis** | 1M permintaan/bulan | 100K/bulan (Hobby) | 100K permintaan/hari |91~92## Cold Start93~94Cold start adalah waktu yang dibutuhkan untuk menginisialisasi instance fungsi baru. Ini adalah masalah performa terbesar dengan 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 | Cold Start Tipikal | Mengapa |111|----------|-------------------|-----|112| **Cloudflare Workers** | < 5ms | Isolate V8, tidak perlu runtime penuh |113| **Vercel Functions** | 100-300ms | Runtime Node.js di edge atau regional |114| **AWS Lambda** | 100-500ms | Inisialisasi container penuh |115| **AWS Lambda (Java)** | 1-5 detik | Overhead startup JVM |116~117Cloudflare Workers menang dalam cold start dengan selisih besar karena menggunakan isolate V8 alih-alih container.118~119## Perbandingan Harga120~121### Tier Gratis122~123| Platform | Permintaan Gratis | Komputasi Gratis |124|----------|--------------|--------------|125| **AWS Lambda** | 1M/bulan | 400.000 GB-detik |126| **Vercel** | 100K/bulan | Termasuk dalam paket Hobby |127| **Cloudflare Workers** | 100K/hari (~3M/bulan) | 10ms CPU per pemanggilan |128~129### Dalam Skala (10M permintaan/bulan, durasi rata-rata 50ms)130~131| Platform | Estimasi Biaya Bulanan |132|----------|----------------------|133| **AWS Lambda** | ~$2,50 (permintaan) + ~$4,15 (komputasi) = **~$6,65** |134| **Vercel** | **$20/bulan** (paket Pro, termasuk fungsi) |135| **Cloudflare Workers** | **$5/bulan** (paket berbayar, termasuk 10M permintaan) |136~137Untuk sebagian besar kasus penggunaan, Cloudflare Workers adalah yang termurah. Harga Vercel sederhana tetapi mencakup seluruh platform (hosting, CDN, analytics). AWS Lambda memiliki harga yang paling terperinci.138~139## Kasus Penggunaan Dunia Nyata140~141### AWS Lambda: Terbaik Untuk142~143- **Alur kerja backend yang kompleks** - step functions, arsitektur berbasis event144- **Integrasi dengan layanan AWS** - trigger S3, stream DynamoDB, antrian SQS145- **Tugas berjalan lama** - hingga 15 menit waktu eksekusi146- **Tim multi-bahasa** - mendukung jangkauan runtime terluas147~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: Terbaik Untuk159~160- **Aplikasi Next.js** - rute API tanpa konfigurasi161- **Tim yang berfokus pada frontend** - deploy frontend dan backend bersama162- **Prototyping cepat** - git push untuk deploy163- **Arsitektur Jamstack** - frontend statis + API serverless164~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: Terbaik Untuk188~189- **API latensi rendah** - kode berjalan di 300+ lokasi di seluruh dunia190- **Edge computing** - transformasi respons, pengujian A/B, personalisasi191- **API volume tinggi** - termurah dalam skala dengan tier gratis yang murah hati192- **Aplikasi global** - data dekat dengan pengguna dengan KV dan 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## Kapan Memilih Yang Mana221~222### Pilih AWS Lambda jika:223- Anda sudah berinvestasi di ekosistem AWS224- Anda membutuhkan fungsi berjalan lama (hingga 15 menit)225- Anda membutuhkan arsitektur berbasis event yang kompleks226- Anda membutuhkan runtime selain JavaScript (Python, Go, Rust, Java)227~228### Pilih Vercel Functions jika:229- Anda membangun dengan Next.js atau framework frontend230- Anda menginginkan pengalaman deploy paling sederhana (git push)231- Tim Anda berfokus pada frontend232- Anda menginginkan hosting + fungsi + CDN dalam satu platform233~234### Pilih Cloudflare Workers jika:235- Anda membutuhkan latensi serendah mungkin secara global236- Anda menginginkan opsi termurah dalam skala237- Anda membutuhkan kemampuan edge computing238- Waktu cold start sangat penting untuk kasus penggunaan Anda239~240## Bisakah Anda Menggabungkannya?241~242Tentu saja. Arsitektur yang umum: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 edge, caching, keamanan254- **Vercel Functions**: rute API frontend, SSR255- **AWS Lambda**: pemrosesan backend berat, tugas terjadwal, pipeline event256~257## Kesimpulan258~259Serverless telah matang secara signifikan. Di tahun 2026, pilihan antara AWS Lambda, Vercel Functions, dan Cloudflare Workers bergantung pada stack dan prioritas Anda:260~261- **Pengalaman developer paling sederhana**: Vercel262- **Paling powerful dan fleksibel**: AWS Lambda263- **Performa dan harga terbaik**: Cloudflare Workers264~265Ketiganya siap produksi dan teruji dalam pertempuran. Mulai dengan yang sesuai dengan stack Anda saat ini, dan perluas seiring kebutuhan Anda bertumbuh.266~
NORMAL · serverless-aws-lambda-vercel-cloudflare.md [readonly]266 lines · :q to close