Các quyết định kiến trúc phía sau core ví và hệ thống vệ tinh của một ví điện tử top đầu Việt Nam — và những gì chúng tôi sẽ làm lại.
"Microservices" thường bị hiểu là chia nhỏ mọi thứ. Trong thực tế, giá trị không nằm ở số lượng service mà ở việc vẽ đúng đường biên — quanh năng lực nghiệp vụ, không phải quanh sơ đồ tổ chức.
Khi xây core ví và các hệ thống vệ tinh cho một ví điện tử quy mô quốc gia, chúng tôi xử lý hàng triệu giao dịch với yêu cầu khắt khe về tính nhất quán, bảo mật và khả năng mở rộng. Dưới đây là vài bài học còn lại sau khi hệ thống lên production.
1. Đường biên service đi theo nghiệp vụ
Service nên sở hữu một năng lực nghiệp vụ trọn vẹn và dữ liệu của nó. Nếu hai service phải đổi cùng lúc mỗi lần có thay đổi, đó là dấu hiệu đường biên sai — chúng nên là một.
2. Event-driven cho việc không cần đồng bộ tức thì
- Giao dịch tiền cần nhất quán mạnh — xử lý đồng bộ, có cơ chế idempotency.
- Thông báo, đối soát, phân tích — đẩy qua event, xử lý bất đồng bộ để không chặn luồng chính.
- Mỗi event là một sự thật đã xảy ra, không phải một lệnh — giúp thêm consumer mới mà không sửa producer.
3. API-first và hợp đồng rõ ràng
Định nghĩa hợp đồng API trước khi code giúp các đội làm song song và giảm tích hợp đau đớn về cuối. Mỗi thay đổi hợp đồng được version hóa, không phá vỡ consumer cũ.
Microservices không cho bạn tốc độ miễn phí — chúng đổi độ phức tạp trong code lấy độ phức tạp trong vận hành. Chỉ trả giá đó khi quy mô thật sự cần.
Chúng tôi sẽ làm lại điều gì
Bắt đầu với ít service hơn. Một monolith mô-đun hóa tốt, tách dần khi áp lực mở rộng xuất hiện, gần như luôn rẻ hơn việc chia nhỏ quá sớm rồi phải gộp lại. Hạ tầng quan sát (observability) phải có trước service thứ hai, không phải sau service thứ mười.