DevOps restart pod không hỏi, nên mất dữ liệu rồi đó anh!

DevOps restart pod, mất hết state của em!
– Nhưng backend lưu state vào memory, không persist vào DB.

Backend réo DevOps vì mất dữ liệu sau rolling update, nhưng audit thấy code lưu state trong memory, không dùng DB hay volume. DevOps chỉ làm đúng quy trình update.

Backend khi lưu state trong memory và DevOps restart pod!


Phân tích: Ai là thủ phạm?

Backend: Lưu state trong memory, không persist vào DB/volume.  
DevOps: Thực hiện rolling update đúng quy trình, không biết state ở memory.  
Hệ quả: Mất dữ liệu, khách hàng gặp lỗi, team hoảng loạn.

Phân xử

Backend sai vì thiết kế stateful trên môi trường stateless. DevOps vô tội vì update theo quy trình.

Giải pháp

Backend: Persist state vào DB (Redis, RDS) hoặc volume (EFS).  
DevOps: Thông báo trước khi rolling update, dù không bắt buộc.  
Cả hai: Document state management rõ ràng.

Ví dụ: Lưu state vào Redis:

await redis.set('user:123:state', JSON.stringify(state));

🎯 Tóm lại: Backend sai thiết kế stateful (8 điểm lỗi), DevOps vô tội (2 điểm). Persist state và document rõ để tránh mất dữ liệu.

Post a Comment

Mới hơn Cũ hơn