Vấn đề khi Core và Infrastructure trộn lẫn

Khi Core Code là gìInfrastructure Code là gì không được tách riêng, dự án sẽ gặp phải nhiều vấn đề tích tụ theo thời gian. Code kiểu này thường bị gọi là “mixed code” (trộn lẫn).

⚠️ Năm vấn đề phổ biến

  1. Khó nắm bắt logic nghiệp vụ. Đọc một đoạn code trộn lẫn truy cập DB, gọi API, xử lý HTTP request chung với tính toán nghiệp vụ, rất khó hiểu “câu chuyện chính” đang diễn ra. Chi tiết kỹ thuật che mờ ý nghĩa các bước nghiệp vụ.
  2. Phụ thuộc chặt vào công nghệ, khó thay đổi. Nếu code đơn hàng gọi trực tiếp SQL MySQL, việc đổi sang NoSQL (hoặc chỉ đổi loại DB) đòi hỏi sửa rất nhiều chỗ trong logic.
  3. Khó kiểm thử tự động. Code chứa nhiều phụ thuộc ngoài (DB, API, file) rất khó viết unit/automation test độc lập - môi trường test phải có sẵn DB, third party phải hoạt động… → test phức tạp, chậm, không ổn định.
  4. Không bảo đảm tính nhất quán dữ liệu. Logic và thao tác dữ liệu nằm rải rác → dễ ghi dữ liệu sai (email sai định dạng, số lượng âm) thẳng vào DB mà không qua khâu kiểm tra. Không có lớp đối tượng trung tâm bảo vệ tính nhất quán của domain.
  5. Bảo trì khó và dễ lỗi. Vi phạm Separation of Concerns: mỗi thay đổi nhỏ buộc sửa nhiều nơi (đổi schema DB phải tìm & sửa mọi câu SQL rải rác). Thiếu abstraction → lặp code, tăng sai sót.

💀 Hậu quả cuối cùng

Mã nguồn “bốc mùi” (code smell): khó đọc, khó hiểu, khó đổi mới, khó kiểm thử. Dự án rơi vào tình trạng “legacy” sớm - chỉ sau thời gian ngắn đã cồng kềnh, mỗi lần sửa lỗi hay thêm tính năng đều nơm nớp lo ảnh hưởng dây chuyền.

Liên quan