Mỗi đội kỹ thuật đều từng đứng trước cám dỗ của công nghệ mới. Một hàng đợi thông điệp phân tán, một cơ sở dữ liệu đồ thị, một lớp điều phối container đầy hứa hẹn. Chúng tôi cũng vậy. Nhưng sau ba năm vận hành, điều giữ cho hệ thống ổn định lại là những lựa chọn mà nhiều người gọi là nhàm chán.
Một cơ sở dữ liệu, nhiều vai trò
PostgreSQL không chỉ lưu dữ liệu quan hệ. Nó xử lý tìm kiếm toàn văn, lưu JSON, khoá tư vấn cho các tác vụ nền và cả hàng đợi đơn giản. Mỗi khi định thêm một dịch vụ mới, chúng tôi tự hỏi: Postgres đã làm được điều này đủ tốt chưa? Câu trả lời thường là có.
Độ phức tạp là một khoản vay. Lãi suất được trả bằng thời gian của kỹ sư lúc ba giờ sáng.
Đơn khối không có nghĩa là lộn xộn
Chúng tôi tổ chức mã theo miền nghiệp vụ: mỗi ứng dụng Django sở hữu mô hình, dịch vụ và chính sách phân quyền của riêng mình. Ranh giới rõ ràng bên trong một tiến trình mang lại phần lớn lợi ích của microservices mà không phải trả giá bằng mạng và tính nhất quán phân tán.
- Dịch vụ nghiệp vụ là hàm Python thuần, dễ kiểm thử.
- View chỉ điều phối: xác thực đầu vào, gọi dịch vụ, trả về phản hồi.
- Tác vụ nặng chuyển sang Celery, không chặn yêu cầu HTTP.
Khi nào nên tách?
Chỉ khi có bằng chứng: một phần hệ thống cần mở rộng độc lập, có nhịp phát hành khác biệt, hoặc một đội riêng sở hữu nó. Cho đến lúc đó, sự nhàm chán chính là lợi thế cạnh tranh.
Danh sách kiểm tra trước khi thêm hạ tầng mới
- Vấn đề có thật và đo được chưa?
- Công cụ hiện tại đã thử hết chưa?
- Ai sẽ trực khi nó hỏng?