Serverless và microservices — không phải trận knock-out

Chúng trả lời hai câu hỏi khác nhau. Chọn constraint chi phí và latency, rồi ghép — đừng đập K8s vì hóa đơn AWS một tháng.

11views

0

Sự tương phản nóng và lạnh giữa cụm microservices điềm tĩnh và serverless bùng nổ tức thì

Họp kiến trúc, chiều thứ Sáu. Một người muốn Lambda hết vì “trả theo request”. Người vừa dựng xong cụm Kubernetes nhìn trần nhà. Tester chỉ muốn cuối tuần không on-call.

Đó không phải cuộc chiến “một mất một còn”. Đó là hai lớp: cách cắt hệ thống và cách chạy hệ thống. Trộn chúng thành một câu hỏi RFP là cách ra ADR dở.

Hai câu hỏi, đừng gộp

Microservices trả lời: logic và team cắt thế nào? Auth, payment, notification — ranh giới, deploy độc lập, blast radius. Có thể chạy trên VM, container, hoặc function. Cắt service ≠ chọn bill.

Serverless (ở đây: FaaS / managed run — Lambda, Cloud Run kiểu scale-to-zero) trả lời: ai giữ máy, scale, và meter? Bạn viết hàm; vendor giữ node. Cược: ops rẻ lúc traffic thưa. Giá: cold start, timeout, giới hạn runtime, vendor lock-in.

Bạn có thể cắt microservices rồi triển khai từng service bằng function. Chúng không bài xích nhau. Blog “Serverless vs microservices” thường so sánh hàm với K8s — hai tầng khác nhau, cùng một slide.

Constraint “core phải latency thấp, traffic đều 24/7” → container / service dài hạn là mặc định.
Constraint “chạy ít, nổ theo sự kiện, chấp nhận cold start” → function là mặc định.

Thuê nhà vs gọi xe

Ẩn dụ đủ dùng trong phòng họp — đừng biến thành chiến lược duy nhất:

Container / K8s (service dài hạn) Function / scale-to-zero
Bill Trả nền dù đêm vắng Trả khi chạy (và khi bị tính nhầm concurrency)
Ops Cluster, network, identity, limit Ít node — nhiều ràng buộc platform
Scale Theo policy, có trễ Nhanh từ 0 — đến khi quota và cold start
Đau Trả tiền lúc vắng; YAML; on-call cluster Cold start; timeout; lock-in; debug phân tán

Cái bẫy “dùng bao nhiêu trả bấy nhiêu”

Burst, campaign, job đêm không ai gọi: function hợp. Traffic về gần 0 thì bill cũng gần 0 — nếu bạn không để provisioned concurrency “cho chắc”.

Traffic cao và đều (core thanh toán, catalog luôn nóng): meter theo request dễ đắt hơn một fleet container bạn đã trả cố định. Điểm hòa vốn là số của workload bạn, không phải slide vendor.

Cost
 ^
 |              /  functions, always-on equivalent
 |             /
 |            /   <-- measure here, don't guess
 |-----------x----------------  reserved capacity
 |          /
 +---------------------------------> traffic

Bài học field: cái quảng cáo rẻ lúc ít request không tự rẻ lúc luôn request.

Ghép, đừng knock-out

Team trưởng thành ít khi chọn một phía đến chết:

  1. Core ổn định, latency thấp — service dài hạn (container). Payment, session, API khách đợi.
  2. Sự kiện, batch, không đồng bộ — function: xuất PDF tháng một lần, resize ảnh theo event object storage, fan-out mail.

Đó là ADR, không phải slogan “nâng tầm công nghệ”. Số 30% hóa đơn trên slide nội bộ không thay được đo 30 ngày thật.

Takeaway

Microservices là ranh giới. Serverless (FaaS) là mô hình chạy và meter. Hỏi sếp “dùng cái nào?” thì trả constraint: core đều thì đừng đập cluster vì một hóa đơn; sự kiện thưa thì đừng nuôi replica lúc 3 giờ sáng.

Hai tool trong một hộp. Knock-out trên slide là cách nuôi hai nền tảng… và vẫn thức on-call.

Found this insightful? Like or share with your team:

Spread good engineering craft & architecture lessons.

11views

0

Comments

Email is not published. Keep it professional.

  1. No comments yet.