[ ENTRY 0x03 · FRONTEND ]
Mọi production system đều có một bí mật bẩn. Nó nằm im suốt nhiều tháng — cho đến khi traffic tăng gấp đôi, hoặc một developer junior xóa nhầm một index.
Tại sao kiến trúc quan trọng?
Một ứng dụng nhỏ không cần kiến trúc. Một ứng dụng lớn không thể sống thiếu. Vấn đề là không ai biết chính xác ranh giới đó nằm ở đâu, cho đến khi nó đã đi qua từ rất lâu rồi.
namespace App\Services; class UserService { public function findActive(): Collection { return $this->repo->activeUsers(limit: 100); } }
Dependency Inversion thực chiến
Quy tắc: high-level module không phụ thuộc vào low-level module. Cả hai đều phụ thuộc vào abstraction.
“The best code is the code that's easy to delete.” — Production lessons, chapter 9.
Cache như một boundary
Cache không phải là một optimization. Cache là một quyết định kiến trúc. Mỗi key cache trong Redis là một promise bạn vừa ký với future-you.
Khi nào nên dừng lại
Mọi kiến trúc đều có chi phí. Architecture phục vụ con người — không phải ngược lại.
“Bạn không cần một hệ thống hoàn hảo. Bạn cần một hệ thống dám sai và sửa được nhanh.”