Quay lại danh sách case study
Tái cấu trúc hệ thống Callback Hell thành Clean Async Architecture
Refactor codebase Node.js cũ với hàng nghìn dòng callback lồng nhau sang mô hình bất đồng bộ hiện đại và dễ bảo trì.
Bối cảnh
Một sản phẩm startup lâu năm có codebase Node.js sử dụng callback thuần túy, dẫn đến việc bảo trì cực kỳ khó khăn, tỷ lệ bug cao và thời gian onboarding nhân sự mới kéo dài.
Vấn đề cần xử lý
Mã nguồn bị lỗi callback hell, khó xử lý ngoại lệ tập trung, logic nghiệp vụ phân tán và không có kiểm thử tự động.
Hướng xử lý đề xuất
Thực hiện refactor toàn bộ sang Async/Await, chuẩn hóa tầng Service/Repository, tích hợp TypeScript để tăng tính an toàn kiểu dữ liệu và viết unit test phủ rộng.
Câu trả lời mẫu khi phỏng vấn
Dự án cũ gặp vấn đề trầm trọng về nợ kỹ thuật với cấu trúc callback hell. Từng bước một, tôi lập kế hoạch refactor không làm đứt gãy hệ thống hiện tại. Đầu tiên, chúng tôi chuyển đổi từng module sang Promise và Async/Await, sau đó áp dụng TypeScript để kiểm soát chặt chẽ kiểu dữ liệu đầu vào ra. Chúng tôi cũng chuẩn hóa lại tầng Service và Controller. Quá trình này được bảo vệ bởi việc viết integration test trước khi tiến hành thay đổi code ở mỗi module.
Trade-off
Tốn kém thời gian và nguồn lực của team trong ngắn hạn, tạm dừng việc phát triển tính năng mới để tập trung trả nợ kỹ thuật.
Kết quả kỳ vọng
Giảm 70% số lượng bug phát sinh trên production liên quan đến lỗi logic bất đồng bộ, tốc độ phát triển tính năng mới tăng gấp đôi sau 3 tháng.
Bài học khi trả lời phỏng vấn
Việc đầu tư tái cấu trúc kỹ thuật cần được thực hiện cuốn chiếu và có kế hoạch kiểm thử rõ ràng, tránh việc viết lại toàn bộ từ đầu gây rủi ro lớn.