System-Design

Kiến trúc phần mềm: Monolith, Microservices và cái bẫy Distributed Monolith

Kiến trúc phần mềm: Monolith, Microservices và cái bẫy Distributed Monolith

Nhiều lập trình viên Backend trẻ thường có xu hướng xem các mô hình kiến trúc phần mềm như một tôn giáo hoặc thước đo trình độ. Microservices thường được tôn sùng như đỉnh cao công nghệ, Monolith bị gán nhãn lạc hậu, còn Distributed Monolith - trạng thái tệ hại nhất - lại thường bị nhầm lẫn với vi dịch vụ thực thụ.

Đọc thêm
MySQL vs PostgreSQL dưới góc nhìn phỏng vấn: Read/Write-Heavy và cơ chế MVCC

MySQL vs PostgreSQL dưới góc nhìn phỏng vấn: Read/Write-Heavy và cơ chế MVCC

MySQL vs PostgreSQL là chủ đề kinh điển trong các buổi phỏng vấn backend engineer. Người phỏng vấn hỏi câu này không phải để nghe bạn liệt kê các tính năng bề nổi như “Postgres hỗ trợ JSON tốt hơn” hay “MySQL phổ biến hơn”. Họ muốn đánh giá mức độ hiểu biết sâu sắc của bạn về mặt kiến trúc lưu trữ, cơ chế kiểm soát giao dịch và cách hệ thống vận hành dưới các loại tải thực tế (High Load).

Đọc thêm
Agent = Model + Harness: Đừng mang động cơ F1 lắp vào xe bus không phanh

Agent = Model + Harness: Đừng mang động cơ F1 lắp vào xe bus không phanh

Hồi cuối năm ngoái, mình có tự chế một con bot chạy ngầm để tự động đọc menu của các đối tác quán ăn gửi về dưới dạng PDF/Excel, rồi parse qua struct Go để nạp vào DB của hệ thống Menu Service.

Đọc thêm
Khi nào nên dùng cache (và khi nào không)

Khi nào nên dùng cache (và khi nào không)

Có một bug production mà đến giờ mình vẫn nhớ như in: user A hủy đơn hàng, nhưng app vẫn hiển thị “đang giao” trong 10 phút tiếp theo. Support nhận 30 ticket trong 1 buổi sáng. Nguyên nhân: cache TTL 10 phút, nhưng không ai invalidate khi order status thay đổi.

Đọc thêm