Bỏ qua đến nội dung
DevOps Lab

Cloud Run vs Lambda — so sánh & use cases

GCP Cloud Run vs AWS Lambda: so sánh 7 tầng, use-cases nên dùng cái nào, và decision guide nhanh.

DevOps · Serverless

Cloud Run vs Lambda

So sánh GCP Cloud Run và AWS Lambda theo 7 tầng, kèm use-cases và decision guide nhanh để chọn đúng nền tảng serverless.

GCP Cloud Run vs AWS Lambda

Tiêu chí Cloud Run GCP Lambda AWS
⬛ Infrastructure Layer
Runtime isolation Container-based, OCI image. Tự build image → full control môi trường Micro-VM (Firecracker). AWS quản lý runtime, bạn chỉ pack code + deps
Concurrency model 1 instance xử lý nhiều request đồng thời (mặc định 80, max 1000). Giảm cold start đáng kể 1 instance = 1 request. Scale out tuyến tính → nhiều cold start hơn
Cold start Thấp hơn vì instance được tái dùng nhiều. Min instances = 0 cold start Cao hơn ở workload burst. SnapStart (Java) giảm được nhưng chỉ một số runtime
Timeout Max 60 phút (HTTP request timeout). Phù hợp long-running jobs Max 15 phút. Không phù hợp với task dài
Resource limits CPU: 8 vCPU, RAM: 32GB. Cấu hình linh hoạt hơn CPU: 6 vCPU, RAM: 10GB. Đủ cho hầu hết use case
VPC & networking Direct VPC egress. Cấu hình đơn giản hơn VPC Lambda, nhưng lịch sử có vấn đề về cold start khi attach VPC (đã cải thiện nhiều)
📦 Application Layer
Deployment unit Docker image. Giống hệt local dev → production. Không bị lock vào runtime version ZIP package hoặc container. ZIP đơn giản hơn nhưng kém linh hoạt
Global state / in-memory cache Tận dụng được vì một instance phục vụ nhiều request. Connection pool, cache sống lâu hơn Có thể dùng global scope nhưng không đảm bảo được reuse. Khó predictable
Concurrency config Tùy chỉnh được (1 → 1000). Muốn Lambda behavior thì set --concurrency=1 Không thể config concurrency per-instance. Chỉ có reserved concurrency ở function level
HTTP/gRPC native Native HTTP server. Bất kỳ web framework nào cũng chạy được không cần adapter Cần Lambda adapter hoặc API Gateway mapping. Thêm một layer phức tạp
Dependency size Không giới hạn (image-based). Build image bao nhiêu cũng được 250MB unzipped (ZIP), 10GB nếu dùng container image
🔗 Event & Integration Layer
Trigger ecosystem HTTP trigger, Pub/Sub, Eventarc. Ít native trigger hơn S3, SQS, SNS, DynamoDB Streams, Kinesis, EventBridge, API Gateway... Rất phong phú
Event-driven patterns Cần thêm Pub/Sub hoặc Eventarc. Thêm hop Event source mapping native. SQS → Lambda không cần middleware
Async invocation Qua Pub/Sub hoặc Task Queue Native async invoke với retry, DLQ, destination
📊 Observability Layer
Logging Cloud Logging auto. Stdout/stderr → log tự động CloudWatch Logs auto. Cấu hình retention cần làm thủ công
Metrics Cloud Monitoring: request count, latency, instance count. Nhưng ít granular hơn CloudWatch: invocations, duration, errors, throttles, concurrent executions. Chi tiết hơn
Tracing Cloud Trace tích hợp. OpenTelemetry dễ setup X-Ray tích hợp. Nhưng cấu hình phức tạp hơn OTel
Alerting Cloud Monitoring alerting. Tích hợp với PagerDuty, Slack qua Notification Channels CloudWatch Alarms. Kết hợp SNS → Lambda → bất kỳ target nào
Cost observability GCP Cost Management. Ít granular hơn theo function Cost Explorer tag theo function. Dễ track cost per workload hơn
💰 Cost Layer
Billing unit CPU + RAM × thời gian xử lý thực tế. Concurrency → ít instance hơn → rẻ hơn Request count + GB-seconds. Scale out nhiều → tổng GB-seconds cao hơn
Free tier 2M requests/tháng, 360,000 vCPU-seconds, 180,000 GB-seconds 1M requests/tháng, 400,000 GB-seconds
Idle cost Min instances = 0 → không tốn khi idle. Min > 0 thì tốn ít hơn Lambda warm instances Provisioned concurrency tốn tiền ngay cả khi idle
🔒 Security Layer
IAM model Service Account + Cloud IAM. Khá tương đồng IAM Role + resource policy. Hai lớp → flexible nhưng phức tạp hơn
Auth built-in Cloud IAP tích hợp sẵn. Dễ restrict access không cần custom code Cần API Gateway + Cognito hoặc custom authorizer
Secret management Secret Manager mount as env hoặc volume Secrets Manager hoặc SSM Parameter Store
🛠 DevOps / Operations Layer
Local dev experience Docker container → chạy local y chang production. Không cần emulator SAM local hoặc LocalStack. Không hoàn toàn giống production
CI/CD Push image → deploy. Cloud Deploy hoặc bất kỳ pipeline nào SAM/CDK/Serverless Framework. Nhiều lựa chọn nhưng thêm tooling
Rollback Container tag → rollback bằng cách point lại image cũ Lambda version + alias. Cần quản lý thêm
Ecosystem & tooling Nhỏ hơn. Ít third-party tooling hơn Powertools, Lambda Layers, Extensions, SAR. Ecosystem rất trưởng thành
Tổng kết ✓ Thắng rõ về execution model, cost, dev experience ✓ Thắng về event ecosystem, tooling maturity
Dùng Cloud Run khi...
Cloud Run

REST / gRPC API backend

Framework bất kỳ (FastAPI, Express, Go HTTP). Container chạy thẳng, không cần adapter. Concurrency cao → ít instance → rẻ hơn.

Cloud Run

ML inference / AI serving

Model load 1 lần vào memory, phục vụ nhiều request. Lambda thì load lại mỗi instance → chậm, tốn tiền.

Cloud Run

Long-running task (> 15 phút)

Export dữ liệu lớn, generate report nặng, video processing. Lambda bị giới hạn 15 phút cứng.

Cloud Run

Connection pooling

DB connection pool sống xuyên suốt instance. Lambda scale out → N instance = N connection riêng → dễ exhausted pool.

Cloud Run

Migrate từ container / K8s

App đang chạy Docker/K8s → deploy Cloud Run gần như không đổi code. Lambda đòi refactor sang handler pattern.

Cloud Run

High-throughput, cost-sensitive

Traffic cao liên tục. Concurrency model → ít instance hơn Lambda → tổng chi phí thấp hơn rõ rệt.

Dùng Lambda khi...
Lambda

Event-driven AWS native

Trigger từ S3, SQS, DynamoDB Streams, Kinesis, SNS. Không cần thêm bất kỳ middleware nào. Glue của AWS ecosystem.

Lambda

Sporadic, unpredictable traffic

Traffic cực thưa, không đều. Lambda scale từ 0 không cần warm instance. Cloud Run vẫn làm được nhưng cấu hình phức tạp hơn.

Lambda

AWS-heavy stack đã có sẵn

Đang dùng Step Functions, EventBridge, API Gateway, Cognito. Lambda tích hợp native, ít configuration hơn.

Lambda

Strict isolation requirement

Multi-tenant code execution, mỗi request phải hoàn toàn cô lập memory. Untrusted code, third-party plugin runtime.

Lambda

Scheduled jobs đơn giản

Cron job nhỏ, chạy vài phút, triggered bởi EventBridge. Lambda + EventBridge Rule là combo gọn nhất.

Lambda

Cần cost granularity cao

Track chi phí chính xác theo từng function/team bằng tag. CloudWatch + Cost Explorer granular hơn Cloud Monitoring.

Cả hai đều ổn
Cả hai

Webhook handler

GitHub, Stripe, Slack webhook. Traffic thưa, latency không cực kỳ critical. Cả hai giải quyết tốt như nhau.

Cả hai

Light data transformation

Parse, validate, transform payload đơn giản. Không phụ thuộc framework phức tạp. Chọn theo cloud đang dùng.

Cả hai

Notification service

Gửi email, push notification, SMS. Logic đơn giản, stateless. Cả hai fit tốt — quyết định bởi cloud stack hiện tại.

Decision guide nhanh
Tự hỏi những câu này trước khi chọn
Stack đang là AWS và cần trigger native (S3, SQS...)? Lambda

App chạy bằng Docker / muốn port từ K8s? Cloud Run

Task chạy lâu hơn 15 phút? Cloud Run (bắt buộc)

Cần connection pool DB bền vững? Cloud Run

ML model load một lần, serve nhiều request? Cloud Run

Greenfield, chưa lock-in cloud nào? Cloud Run (default choice)

Cần isolation tuyệt đối giữa các request? Lambda