© 2026 Laravel

Clean Architecture trong Laravel – Tổ chức code cho hệ thống lớn

3 phút đọc 29 lượt xem
#laravel #clean architecture #system design #architecture

Khi project Laravel lớn dần, bạn sẽ gặp vấn đề:

  • Controller quá to
  • Model chứa quá nhiều logic
  • Code khó test
  • Khó scale team

Đây là lúc bạn cần Clean Architecture.

#Clean Architecture là gì?

Là cách tổ chức code theo layer, tách biệt trách nhiệm rõ ràng.

Mục tiêu:

  • Dễ maintain
  • Dễ test
  • Dễ mở rộng

#Các layer cơ bản

#Controller (Interface Layer)

  • Nhận request
  • Trả response

Không chứa business logic

#Service (Application Layer)

  • Xử lý business logic
  • Orchestrate flow

#Domain (Core)

  • Business rules
  • Entity logic

Quan trọng nhất

#Infrastructure

  • Database
  • External API

#Flow chuẩn

Controller → Service → Domain → Repository → DB

Dependency chỉ đi một chiều.

#Dependency Rule (cốt lõi)

Layer ngoài phụ thuộc layer trong, không ngược lại

❌ Sai:

  • Domain gọi Controller

✅ Đúng:

  • Controller gọi Service
  • Service gọi Domain

#So sánh với MVC truyền thống

MVC Clean Architecture
Model chứa logic Tách Domain riêng
Controller lớn Controller mỏng
Khó test Dễ test

#Ví dụ thực tế

#MVC truyền thống

class UserController
{
    public function register()
    {
        $user = User::create(...);
        Mail::send(...);
    }
}

#Clean Architecture

class UserController
{
    public function register(UserService $service)
    {
        $service->register(...);
    }
}
class UserService
{
    public function register($data)
    {
        // logic
    }
}

#Real Case Production

#Case: Order System

  • Controller: nhận request
  • Service: xử lý order
  • Domain: validate business rule
  • Repository: lưu DB

Tách rõ ràng → dễ scale

#Anti-pattern

  • Fat Controller Chứa toàn bộ logic

  • Fat Model Model làm quá nhiều việc

  • Over-engineering Quá nhiều layer không cần thiết

#Khi nào nên dùng Clean Architecture?

#Nên dùng khi

  • Project lớn
  • Team nhiều người
  • Business logic phức tạp

#Không cần khi

  • Project nhỏ
  • CRUD đơn giản

#Performance Tips

  • Không lạm dụng abstraction
  • Giữ flow đơn giản

#Mindset Senior

Junior:

Code chạy là được

Senior:

Code phải dễ maintain và scale lâu dài

#Câu hỏi thường gặp (Interview)

1. Clean Architecture là gì?

Là cách tổ chức code theo layer để tách biệt trách nhiệm

2. Dependency rule là gì?

Layer ngoài phụ thuộc layer trong, không ngược lại

3. Tại sao không nên dùng fat controller?

Khó maintain, khó test

4. Clean Architecture khác MVC thế nào?

Tách domain và business logic rõ ràng hơn

5. Khi nào không nên dùng Clean Architecture?

Khi project nhỏ, đơn giản

#Kết luận

Clean Architecture giúp bạn:

  • Tổ chức code rõ ràng
  • Dễ test
  • Dễ scale hệ thống

Đây là bước tiến từ developer → architect.