Database architecture
Bốn câu hỏi cần tách: database dùng engine/model nào, cần failover thế nào, cần scale đọc thế nào và cần khôi phục dữ liệu ra sao. Multi-AZ, Read Replica, snapshot và PITR không phải các từ đồng nghĩa.
Bài tập
Thiết kế order database và reporting database path. Đánh dấu private subnet, SG, secret, encryption, backup/PITR, Multi-AZ và replica. Viết một scenario mà Read Replica không giải quyết được, và một scenario mà Multi-AZ không giải quyết được.
Bài giảng chuyên sâu
Tách HA, read scaling và recovery của database
Order system cần transaction và failover; reporting cần read scaling; compliance cần khôi phục về thời điểm trước. Multi-AZ là availability/failover pattern, không phải read scaling. Read Replica phục vụ đọc/replication với lag và semantics riêng, không thay backup. Automated backup/PITR phục vụ recovery, snapshot phục vụ copy/restore theo workflow khác.
Database nên ở private subnet group, SG chỉ cho app role/SG cần thiết, secret không nằm trong code, encryption và backup phải có owner. Connection pooling và retry phải chịu failover; application cần biết endpoint/behavior sau chuyển primary. Aurora/RDS chọn theo engine, compatibility, scaling và operational requirement, không chỉ theo tên managed.
Failure drill: primary/AZ lỗi, replica lag, xóa nhầm row và reporting làm quá tải primary. Ghi expected state, evidence, RTO/RPO và hành động. Nếu đề hỏi tiếp tục phục vụ khi AZ lỗi, ưu tiên HA; nếu hỏi tăng read throughput, mới xét replica/cache.