spinny:~/writing $ vim serverless-aws-lambda-vercel-cloudflare.md
1~2محاسبات serverless به شما امکان میدهد بدون مدیریت سرور کد اجرا کنید. شما توابع مینویسید، آنها را دیپلوی میکنید و پلتفرم مقیاسپذیری، دسترسپذیری و زیرساخت را مدیریت میکند. در سال 2026، سه پلتفرم بر دنیای serverless تسلط دارند: **AWS Lambda**، **Vercel Serverless Functions** و **Cloudflare Workers**. هر کدام نقاط قوت و مصالحههای متفاوتی دارند.3~4در این مقاله، آنها را با مثالهای واقعی، ملاحظات عملکردی و تحلیل قیمت مقایسه میکنیم.5~6## Serverless چگونه کار میکند7~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~16شما یک تابع را دیپلوی میکنید. وقتی درخواستی میرسد، پلتفرم:171. یک محیط اجرا راهاندازی میکند (یا از یک محیط گرم قبلی استفاده مجدد میکند)182. تابع شما را اجرا میکند193. پاسخ را برمیگرداند204. در حالت بیکاری به صفر مقیاس میشود (برای زمان بیکاری هزینهای نمیپردازید)21~22## نمای کلی پلتفرمها23~24### AWS Lambda25~26پلتفرم serverless اصلی (در سال 2014 راهاندازی شد). بالغترین و غنیترین از نظر ویژگیها، با یکپارچگی عمیق در اکوسیستم 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~45به صورت تنگاتنگ با Next.js و جریان کاری دیپلوی فرانتاند یکپارچه شده است. توابع بدون هیچ پیکربندی همراه با فرانتاند شما دیپلوی میشوند.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~61روی شبکه edge کلودفلر در بیش از 300 شهر در سراسر جهان اجرا میشود. از موتور V8 (همان موتور Chrome) به جای Node.js استفاده میکند، که به معنای cold start بسیار سریع است.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## مقایسه ویژگیها79~80| ویژگی | AWS Lambda | Vercel Functions | Cloudflare Workers |81|---------|-----------|-----------------|-------------------|82| **محیط اجرا** | Node.js, Python, Go, Rust, Java, .NET | Node.js, Python, Go, Ruby | V8 Isolates (JS/TS, Rust via WASM) |83| **حداکثر زمان اجرا** | 15 دقیقه | 60 ثانیه (Hobby)، 300 ثانیه (Pro) | 30 ثانیه (رایگان)، 15 دقیقه (پولی) |84| **حافظه** | 128MB - 10GB | 1024MB - 3008MB | 128MB |85| **Cold start** | 100-500ms | 100-300ms | < 5ms |86| **محل دیپلوی** | منطقه واحد (یا چندگانه با تلاش) | مناطق متعدد | 300+ مکان edge |87| **حداکثر بار** | 6MB (همزمان)، 256KB (ناهمزمان) | 4.5MB | 100MB |88| **ذخیرهسازی داخلی** | خیر (از DynamoDB، S3 استفاده کنید) | خیر (از DB خارجی استفاده کنید) | KV، D1 (SQLite)، R2 (سازگار با S3) |89| **مدل قیمتگذاری** | به ازای هر درخواست + مدت | شامل در طرح | به ازای هر درخواست + مدت |90| **سطح رایگان** | 1 میلیون درخواست/ماه | 100 هزار/ماه (Hobby) | 100 هزار درخواست/روز |91~92## Cold Start93~94Cold start زمانی است که برای مقداردهی اولیه یک نمونه تابع جدید لازم است. این بزرگترین نگرانی عملکردی در 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| پلتفرم | Cold Start معمول | چرا |111|----------|-------------------|-----|112| **Cloudflare Workers** | < 5ms | ایزولههای V8، نیازی به محیط اجرای کامل نیست |113| **Vercel Functions** | 100-300ms | محیط اجرای Node.js در edge یا منطقهای |114| **AWS Lambda** | 100-500ms | مقداردهی اولیه کامل کانتینر |115| **AWS Lambda (Java)** | 1-5 ثانیه | سربار راهاندازی JVM |116~117Cloudflare Workers در cold start با اختلاف بسیار زیاد برنده است زیرا از ایزولههای V8 به جای کانتینرها استفاده میکند.118~119## مقایسه قیمتها120~121### سطح رایگان122~123| پلتفرم | درخواستهای رایگان | محاسبات رایگان |124|----------|--------------|--------------|125| **AWS Lambda** | 1 میلیون/ماه | 400,000 GB-ثانیه |126| **Vercel** | 100 هزار/ماه | شامل در طرح Hobby |127| **Cloudflare Workers** | 100 هزار/روز (~3 میلیون/ماه) | 10ms CPU به ازای هر فراخوانی |128~129### در مقیاس بزرگ (10 میلیون درخواست/ماه، میانگین مدت 50ms)130~131| پلتفرم | هزینه ماهانه تخمینی |132|----------|----------------------|133| **AWS Lambda** | ~$2.50 (درخواستها) + ~$4.15 (محاسبات) = **~$6.65** |134| **Vercel** | **$20/ماه** (طرح Pro، شامل توابع) |135| **Cloudflare Workers** | **$5/ماه** (طرح پولی، شامل 10 میلیون درخواست) |136~137برای بیشتر موارد استفاده، Cloudflare Workers ارزانترین است. قیمتگذاری Vercel ساده است اما شامل کل پلتفرم (میزبانی، CDN، تحلیل) میشود. AWS Lambda دقیقترین قیمتگذاری را دارد.138~139## موارد استفاده واقعی140~141### AWS Lambda: بهترین برای142~143- **جریانهای کاری پیچیده بکاند** - step functions، معماریهای مبتنی بر رویداد144- **یکپارچگی با سرویسهای AWS** - تریگرهای S3، استریمهای DynamoDB، صفهای SQS145- **وظایف طولانی مدت** - تا 15 دقیقه زمان اجرا146- **تیمهای چندزبانه** - گستردهترین محدوده محیطهای اجرا را پشتیبانی میکند147~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: بهترین برای159~160- **برنامههای Next.js** - مسیرهای API بدون پیکربندی161- **تیمهای متمرکز بر فرانتاند** - دیپلوی فرانتاند و بکاند با هم162- **نمونهسازی سریع** - git push برای دیپلوی163- **معماریهای Jamstack** - فرانتاند استاتیک + 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: بهترین برای188~189- **API با تاخیر کم** - کد در بیش از 300 مکان در سراسر جهان اجرا میشود190- **محاسبات لبهای** - تبدیل پاسخها، تست A/B، شخصیسازی191- **API با حجم بالا** - ارزانترین در مقیاس بزرگ با سطح رایگان سخاوتمندانه192- **برنامههای جهانی** - دادهها نزدیک به کاربران با KV و 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## چه زمانی کدام را انتخاب کنیم221~222### AWS Lambda را انتخاب کنید اگر:223- قبلا در اکوسیستم AWS سرمایهگذاری کردهاید224- به توابع طولانی مدت نیاز دارید (تا 15 دقیقه)225- به معماریهای پیچیده مبتنی بر رویداد نیاز دارید226- به محیطهای اجرا فراتر از JavaScript نیاز دارید (Python، Go، Rust، Java)227~228### Vercel Functions را انتخاب کنید اگر:229- با Next.js یا فریمورک فرانتاند توسعه میدهید230- سادهترین تجربه دیپلوی را میخواهید (git push)231- تیم شما بر فرانتاند متمرکز است232- میزبانی + توابع + CDN در یک پلتفرم میخواهید233~234### Cloudflare Workers را انتخاب کنید اگر:235- به کمترین تاخیر ممکن در سطح جهان نیاز دارید236- ارزانترین گزینه در مقیاس بزرگ را میخواهید237- به قابلیتهای محاسبات لبهای نیاز دارید238- زمان cold start برای مورد استفاده شما حیاتی است239~240## آیا میتوان آنها را ترکیب کرد؟241~242قطعا. یک معماری رایج: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، کش کردن، امنیت254- **Vercel Functions**: مسیرهای API فرانتاند، SSR255- **AWS Lambda**: پردازش سنگین بکاند، وظایف زمانبندی شده، خطوط لوله رویداد256~257## نتیجهگیری258~259Serverless به طور قابل توجهی بالغ شده است. در سال 2026، انتخاب بین AWS Lambda، Vercel Functions و Cloudflare Workers به استک و اولویتهای شما بستگی دارد:260~261- **سادهترین تجربه توسعهدهنده**: Vercel262- **قدرتمندترین و انعطافپذیرترین**: AWS Lambda263- **بهترین عملکرد و قیمت**: Cloudflare Workers264~265هر سه آماده تولید و آزموده در میدان نبرد هستند. با آنچه به استک فعلی شما میخورد شروع کنید و با رشد نیازهایتان گسترش دهید.266~
NORMAL · serverless-aws-lambda-vercel-cloudflare.md [readonly]266 lines · :q to close