EC2 در مقابل Lambda
EC2 یک ماشین مجازی همیشه-روشن است که کنترل کامل روی سیستمعامل و منابع آن دارید و هزینهاش بر اساس زمان روشن بودن سرور محاسبه میشود؛ Lambda یک تابع serverless است که تنها هنگام فراخوانی اجرا میشود، بهصورت خودکار مقیاس مییابد و هزینهاش صرفاً بر اساس زمان اجرای واقعی است.
| ویژگی | EC2 | Lambda |
|---|---|---|
| مدل اجرا | سرور همیشه-روشن | تابع رویدادمحور و بدون سرور |
| مدل هزینه | بر اساس زمان روشن بودن | بر اساس تعداد فراخوانی و زمان اجرا |
| مقیاسپذیری | دستی یا Auto Scaling Group | خودکار و آنی |
| محدودیت زمان اجرا | ندارد | حداکثر ۱۵ دقیقه در هر فراخوانی |
کِی از EC2 استفاده کنیم؟
برای برنامههای long-running، وابسته به state محلی یا با بار پیوسته و قابل پیشبینی (مثل یک وبسرور پرترافیک با کنترل کامل بر تنظیمات)، از EC2 استفاده کنید.
کِی از Lambda استفاده کنیم؟
برای پردازشهای رویدادمحور و کوتاهمدت (پردازش یک فایل آپلودشده، webhook یا API با ترافیک نامنظم) که نیاز به مقیاسپذیری خودکار و صفر-هزینه در زمان بیکاری دارید، از Lambda استفاده کنید.
مثال EC2
aws ec2 run-instances --image-id ami-0abcdef --instance-type t3.micro --key-name my-key --security-groups my-sg
# Instance runs continuously; you pay per hour whether it's busy or idle
مثال Lambda
def handler(event, context):
file_key = event['Records'][0]['s3']['object']['key']
process_file(file_key)
return {"statusCode": 200}
# Runs only when triggered (e.g. S3 upload), scales to zero when idle
اشتباه رایج
استفاده از Lambda برای وظایف long-running یا CPU-heavy پیوسته که به محدودیت زمان اجرا (حداکثر ۱۵ دقیقه) و هزینه بالاتر نسبت به یک EC2 پیوسته میخورد؛ در طرف مقابل، نگهداشتن یک EC2 همیشه-روشن فقط برای اجرای گاهبهگاه یک اسکریپت ساده، هزینه بیخودی برای زمان بیکاری ایجاد میکند.
جمعبندی
بار پیوسته و قابل پیشبینی با کنترل کامل → EC2؛ رویدادمحور، کوتاهمدت و نامنظم → Lambda.
