Quay lại danh sách case study
Di chuyển Monolith sang Microservices
Tách một ứng dụng Monolith lớn thành các service độc lập bằng Node.js và gRPC.
Bối cảnh
Hệ thống quản lý vận tải phát triển lớn, codebase phức tạp khiến việc triển khai tính năng mới rất chậm.
Vấn đề cần xử lý
Thời gian build và deploy lâu, lỗi ở một module có thể làm sập toàn bộ ứng dụng.
Hướng xử lý đề xuất
Phân rã hệ thống thành các domain nghiệp vụ nhỏ, dùng gRPC để giao tiếp nội bộ tốc độ cao và API Gateway làm điểm vào.
Câu trả lời mẫu khi phỏng vấn
Chúng tôi áp dụng mô hình Domain-Driven Design để xác định ranh giới giữa các service. Việc giao tiếp giữa các service chuyển từ HTTP REST sang gRPC nhờ giao thức Protocol Buffers, giúp giảm đáng kể kích thước gói tin và tăng tốc độ xử lý.
Trade-off
Độ phức tạp hệ thống tăng lên, việc phân tán log và debug khó khăn hơn, đòi hỏi phải đầu tư hệ thống Centralized Logging như ELK.
Kết quả kỳ vọng
Thời gian deploy giảm từ 45 phút xuống còn 5 phút cho từng service riêng lẻ, đội ngũ phát triển làm việc độc lập và hiệu quả hơn.
Bài học khi trả lời phỏng vấn
Không nên đập đi xây lại toàn bộ mà cần tách dần dần từng module độc lập theo chiến lược Strangler Fig Pattern.