Tất cả bài viết
01
Kiến trúc thường chết vì con người, không phải vì code

Kiến trúc đẹp trên giấy thường sụp đổ trong thực tế vì team không hiểu nó, không theo nó, hoặc không có ai enforce nó.

architectureteamengineering-culture
02
Microservices không phải level up tự động từ Monolith

Microservices giải quyết vấn đề của scale và team autonomy — không phải vấn đề của code xấu. Chuyển sang microservices khi chưa sẵn sàng là tự làm khổ mình.

architecturemicroservicesmonolith
03
Refactor kiến trúc không phải là viết lại — là chỉnh hướng dần dần

Big bang rewrite thất bại 90% thời gian. Kiến trúc tốt được xây dựng bằng cách di chuyển dần — từng boundary một — không phải bắt đầu từ đầu.

architecturerefactoringmigration
04
Framework là công cụ, không phải nền móng

Khi toàn bộ business logic phụ thuộc vào Spring Boot — bạn không có kiến trúc, bạn có một Spring Boot app. Và khi Spring thay đổi, mọi thứ thay đổi.

architectureframeworkclean-architecture
05
Fat Controller, Fat Service — dấu hiệu kiến trúc đang sai

Service 2000 dòng là triệu chứng, không phải bệnh. Bệnh là không có ranh giới rõ ràng giữa các responsibility trong hệ thống.

architectureanti-patternsrefactoring
06
DTO vs Entity vs Domain Model — ba thứ khác nhau, và mày cần cả ba

Dùng Entity làm DTO, hay Domain Model làm Entity — đây là sai lầm phổ biến nhất trong Spring Boot và nó phá vỡ boundary một cách thầm lặng.

architectureDTOdomain-modelspring-boot
07
Use Case mới là trái tim thật sự của hệ thống

Không phải database, không phải framework, không phải API. Use case — hành động người dùng thực hiện — là thứ hệ thống thật sự tồn tại để phục vụ.

architectureuse-caseclean-architecture
08
Domain logic không được biết database tồn tại

Khi domain model import JPA annotation — kiến trúc đã bị vi phạm. Business rule không nên biết data được lưu ở đâu hay như thế nào.

architecturedomain-driven-designclean-architecture
09
Sai boundary một ly, hệ thống đi một dặm

Boundary là ranh giới giữa các phần của hệ thống. Vẽ sai một lần — mọi thứ build lên trên đó đều sai theo.

architectureboundariesclean-architecture
10
Business logic đặt sai chỗ — hệ thống sẽ trả giá

Business logic nằm trong Controller, trong SQL query, hay trong UI — đó là technical debt không thể tránh khỏi. Và nó tích lũy theo thời gian.

architecturebusiness-logicclean-architecture
11
Layered Architecture không phải lúc nào cũng đúng

Layered architecture giải quyết một vấn đề cụ thể. Khi bạn dùng nó cho bài toán khác — bạn đang tạo ra vấn đề thay vì giải quyết nó.

architecturelayered-architecturedesign
12
Tại sao Controller/Service/Repository thối theo thời gian

Pattern 3 layer quen thuộc này không sai — nhưng nếu không hiểu đúng mục đích, nó sẽ biến thành nơi chứa mọi thứ và không ai dọn được.

architecturelayered-architecturespring-boot