Layered Architecture - Kiến trúc Phân lớp
Kiến trúc phân lớp chia ứng dụng thành các tầng (layer) riêng biệt, mỗi tầng đảm nhiệm một nhóm chức năng có liên quan. Đây là một phong cách kiến trúc cổ điển, xuất phát từ mô hình 3-tier:
- Presentation Layer (Trình bày): xử lý hiển thị & tương tác người dùng (UI).
- Business Logic Layer (Nghiệp vụ): chứa logic kinh doanh/cốt lõi.
- Data Access Layer (Truy cập dữ liệu): làm việc với DB/hệ thống lưu trữ.
Mục tiêu chính là Separation of Concerns: mỗi tầng giải quyết một khía cạnh, tầng trên chỉ tương tác với tầng ngay dưới qua một giao diện nhất định, chi tiết thực hiện được che giấu.
✅ Lợi ích
- Dễ định vị code (biết đặt logic X ở tầng nào theo trách nhiệm).
- Đổi công nghệ ở một tầng ít ảnh hưởng tầng khác (đổi MySQL → MongoDB ở Data Layer, không sửa nghiệp vụ).
- Kiểm thử độc lập từng tầng.
⚠️ Rủi ro của phân lớp truyền thống
- “Rò rỉ logic” giữa các tầng: code nghiệp vụ viết nhầm ở controller, hoặc business đi thẳng xuống DB bỏ qua data layer. Không có cơ chế tự động ngăn - phụ thuộc kỷ luật đội ngũ.
- “Mã lasagna”: quá nhiều lớp chồng chéo khiến theo dấu luồng xử lý phức tạp.
→ Cần chọn đúng số lượng tầng và xác định rõ vai trò từng tầng.
🏛️ Biến thể hiện đại (hướng DDD)
Sách áp dụng biến thể hiện đại chia thành 3 tầng, coi giao diện người dùng là lớp ngoài cùng:
- Tầng Domain (miền nghiệp vụ) - trái tim
- Tầng Application (ứng dụng) - điều phối use case
- Tầng Infrastructure (hạ tầng) - kết nối bên ngoài
Điểm nhấn: đưa domain làm trọng tâm, tách khỏi hạ tầng, tuân thủ Dependency Rule - Quy tắc phụ thuộc một chiều. Mô hình này gần với Clean Architecture / Onion Architecture và là tiền đề của Hexagonal Architecture - Ports and Adapters.
Liên quan
- Tầng Domain · Tầng Application · Tầng Infrastructure
- Dependency Rule - Quy tắc phụ thuộc một chiều - luật xương sống
- Hexagonal Architecture - Ports and Adapters - bước tiến hóa tiếp theo
- Separation of Concerns