Bài viết về: Backend

Bài viết về: Backend

Feature flag thực chiến: Phát hành tính năng an toàn không cần deploy lại

Feature flag thực chiến: Phát hành tính năng an toàn không cần deploy lại

Feature flag tách thời điểm deploy code khỏi thời điểm phát hành tính năng. Nhóm phát triển có thể đưa code lên production ở trạng thái tắt, mở cho nhân viên, tăng dần tỷ lệ người dùng và tắt nhanh khi có sự cố mà không cần build lại. Nhưng nếu thiếu vòng đời, flag sẽ trở thành cấu hình sống vĩnh viễn và làm mọi nhánh code khó hiểu hơn.

Đọc tiếp →
Refresh token rotation thực chiến: Thiết kế đăng nhập an toàn cho API

Refresh token rotation thực chiến: Thiết kế đăng nhập an toàn cho API

Access token ngắn hạn giảm thời gian kẻ tấn công có thể sử dụng token bị lộ, nhưng refresh token lại là thông tin đăng nhập dài hạn có khả năng tạo access token mới. Nếu backend chấp nhận một refresh token nhiều lần, bản sao bị đánh cắp có thể duy trì phiên gần như âm thầm. Refresh token rotation giải quyết vấn đề bằng cách thay token sau mỗi lần sử dụng và phát hiện token cũ bị phát lại.

Đọc tiếp →
API Rate Limiting thực chiến với Redis: Thuật toán, thiết kế và vận hành

API Rate Limiting thực chiến với Redis: Thuật toán, thiết kế và vận hành

Rate limiting không chỉ để chặn bot. Nó bảo vệ database và dịch vụ phụ thuộc khỏi traffic burst, phân chia tài nguyên công bằng giữa tenant, kiểm soát chi phí API và giúp hệ thống suy giảm có kiểm soát khi quá tải. Một limiter thiết kế sai lại có thể khóa nhầm hàng nghìn người dùng sau NAT hoặc trở thành điểm lỗi mới.

Đọc tiếp →
Transactional Outbox thực chiến: Phát sự kiện đáng tin cậy sau transaction

Transactional Outbox thực chiến: Phát sự kiện đáng tin cậy sau transaction

Một request tạo đơn hàng thường phải làm hai việc: lưu đơn vào database và phát sự kiện OrderCreated sang message broker. Nếu commit database trước rồi publish thất bại, hệ thống có đơn hàng nhưng kho hoặc email không biết. Nếu publish trước rồi transaction rollback, consumer lại xử lý một đơn không tồn tại. Đây là bài toán dual write.

Đọc tiếp →
Database migration không downtime: Expand, Migrate, Contract từ A đến Z

Database migration không downtime: Expand, Migrate, Contract từ A đến Z

Một câu ALTER TABLE chạy thành công chưa có nghĩa là deployment an toàn. Trong production, phiên bản ứng dụng cũ và mới thường cùng tồn tại trong vài phút hoặc lâu hơn. Một migration khóa bảng, đổi tên cột ngay lập tức hoặc backfill hàng triệu bản ghi trong một transaction có thể làm request chậm, cạn connection pool và khiến rollback trở nên bất khả thi.

Đọc tiếp →