Quay lại danh sách case study
Di dời hệ thống Monolithic sang Microservices không gián đoạn
Chia nhỏ ứng dụng backend Monolith Node.js khổng lồ thành hệ thống Microservices theo phương pháp Strangler Fig Pattern.
Bối cảnh
Hệ thống thương mại điện tử cũ chứa hơn 500.000 dòng mã nguồn JavaScript, việc biên triển khai (deployment) mất tới 45 phút và thường xuyên xảy ra xung đột mã nguồn.
Vấn đề cần xử lý
Tính năng mới được triển khai chậm chạp, một lỗi nhỏ ở phân hệ giỏ hàng có thể làm sập toàn bộ hệ thống thanh toán.
Hướng xử lý đề xuất
Áp dụng Strangler Fig Pattern, đặt một Reverse Proxy (Nginx/API Gateway) ở tầng ngoài, dần bóc tách từng domain (như Quản lý sản phẩm, Giỏ hàng) thành các microservice độc lập bằng Node.js/TypeScript.
Câu trả lời mẫu khi phỏng vấn
Trong dự án này, tôi đóng vai trò kiến trúc sư định hướng chiến lược di dời không gián đoạn. Chúng tôi không đập đi xây lại mà dùng phương pháp Strangler Fig. Bắt đầu bằng việc tách phân hệ xem sản phẩm ra một service riêng, định tuyến lại traffic qua API Gateway. Dần dần chúng tôi tách tiếp các phần khác. Quan trọng nhất là việc duy trì tính nhất quán dữ liệu giữa database cũ và mới thông qua event streaming bằng Kafka.
Trade-off
Hệ thống trở nên phức tạp hơn về mặt vận hành, yêu cầu phải xây dựng hệ thống Distributed Tracing và CI/CD phức tạp hơn.
Kết quả kỳ vọng
Giảm thời gian deployment từ 45 phút xuống dưới 5 phút, các đội ngũ phát triển có thể làm việc độc lập và phóng thích tính năng nhanh gấp 4 lần.
Bài học khi trả lời phỏng vấn
Kiến trúc microservice chỉ thực sự phát huy hiệu quả khi năng lực tự động hóa hạ tầng và giám sát của đội ngũ đã sẵn sàng.