Product Management
Đăng nhập
ESC

Nhập từ khóa để tìm kiếm

↑↓ Di chuyển
Enter Mở
ESC Đóng

Bài 32 — Disaster Recovery — RTO, RPO, Strategy

Đã đọc 0/15 mục · còn khoảng 13 phút
Cách chúng tôi ghi nhận

Một mục được tính là đã đọc khi nó nằm giữa màn hình đủ lâu so với độ dài của nó (bảng và sơ đồ tính một nửa), bạn vẫn đang cuộn hoặc bấm phím, và bạn đã thấy tới cuối mục. Lướt nhanh hoặc để tab mở không được tính. Chúng tôi chỉ lưu thời gian đọc từng mục — không lưu gì khác.

Mở đầu — vì sao bài này quan trọng

Hãy tưởng tượng bạn là kỹ sư trực ca lúc 2 giờ sáng. Điện thoại rung liên tục. Toàn bộ hệ thống thanh toán của công ty vừa ngừng hoạt động vì một vùng dữ liệu (data center) của nhà cung cấp cloud gặp sự cố phần cứng. Sếp bạn hỏi hai câu duy nhất: "Bao lâu nữa hệ thống chạy lại?" và "Chúng ta có mất dữ liệu giao dịch nào không?". Nếu bạn không có câu trả lời rõ ràng, đó không phải lỗi của cá nhân bạn — đó là lỗi vì tổ chức chưa có một chiến lược Disaster Recovery (DR) đàng hoàng.

Disaster Recovery — khôi phục sau thảm họa — là tập hợp các quy trình, công cụ và cam kết giúp hệ thống của bạn sống lại sau một sự cố nghiêm trọng: cháy data center, xóa nhầm database, ransomware, đứt cáp, hay đơn giản là một lệnh DROP TABLE chạy nhầm trên production. Trong thời đại mọi doanh nghiệp đều "chạy trên phần mềm", một giờ downtime có thể tiêu tốn hàng trăm triệu đồng doanh thu và gây tổn hại uy tín khó phục hồi.

Điều khiến DR trở nên đặc biệt so với các chủ đề khác trong khóa học này là nó bắt buộc bạn phải suy nghĩ bằng con số cụ thể, không phải cảm tính. "Hệ thống của chúng ta rất ổn định" là một câu vô nghĩa với người làm DR. Thay vào đó, chúng ta nói: "Chúng ta chấp nhận tối đa 15 phút mất dữ liệu và cam kết khôi phục trong vòng 1 giờ." Hai con số đó chính là RPO và RTO — trái tim của toàn bộ bài học hôm nay. Nắm vững chúng, bạn sẽ biết cách chọn kiến trúc DR phù hợp túi tiền và mức độ quan trọng của hệ thống, thay vì đốt tiền vào những giải pháp đắt đỏ không cần thiết hoặc chủ quan với những hệ thống sống còn.

Khái niệm cốt lõi

RTO — Recovery Time Objective

RTO (Recovery Time Objective) trả lời câu hỏi: "Sau khi thảm họa xảy ra, chúng ta cần bao lâu để đưa hệ thống hoạt động trở lại?". Đây là mục tiêu về thời gian downtime tối đa mà doanh nghiệp chấp nhận được.

Ví dụ, nếu RTO = 4 giờ, nghĩa là từ thời điểm hệ thống sập đến lúc khôi phục hoàn toàn, bạn không được phép để quá 4 giờ trôi qua. Nếu quá con số này, doanh nghiệp coi như đã vi phạm cam kết — có thể vi phạm SLA với khách hàng, chịu phạt hợp đồng, hoặc mất doanh thu vượt ngưỡng chịu đựng.

RTO càng nhỏ thì chi phí càng lớn. Đưa hệ thống chạy lại trong 5 phút đòi hỏi hạ tầng dự phòng luôn sẵn sàng (hot standby), tốn kém hơn nhiều so với việc chấp nhận khôi phục trong 24 giờ bằng cách dựng lại từ bản backup.

RPO — Recovery Point Objective

RPO (Recovery Point Objective) trả lời câu hỏi: "Chúng ta chấp nhận mất bao nhiêu dữ liệu?". Đây là mục tiêu về lượng dữ liệu tối đa (đo bằng thời gian) mà doanh nghiệp sẵn sàng đánh mất khi thảm họa xảy ra.

Ví dụ, nếu RPO = 15 phút, nghĩa là bạn phải đảm bảo dữ liệu được sao lưu/nhân bản ít nhất mỗi 15 phút. Khi thảm họa ập tới, tệ nhất bạn cũng chỉ mất 15 phút dữ liệu gần nhất — những giao dịch phát sinh trong 15 phút cuối trước sự cố.

Cách dễ nhớ nhất: RPO nhìn về quá khứ (bạn quay ngược lại được đến điểm dữ liệu nào?), còn RTO nhìn về tương lai (bao lâu nữa hệ thống sống lại?). RPO gắn với tần suất backup/replication; RTO gắn với tốc độ phục hồi hạ tầng và ứng dụng.

Một minh họa trên trục thời gian

Hãy đặt hai khái niệm này lên cùng một dòng thời gian. Giả sử database của bạn được backup lúc 10:00. Đến 10:45, một sự cố xảy ra và hệ thống sập. Đội kỹ thuật khôi phục xong lúc 12:15.

  • Khoảng từ 10:00 (bản backup gần nhất) đến 10:45 (lúc sập) = 45 phút dữ liệu bị mất → đây là RPO thực tế bạn phải chịu.
  • Khoảng từ 10:45 (lúc sập) đến 12:15 (lúc chạy lại) = 90 phút downtime → đây là RTO thực tế.
Nếu cam kết của bạn là RPO ≤ 15 phút và RTO ≤ 60 phút, thì sự cố trên đã vi phạm cả hai. Bài học: bạn cần backup thường xuyên hơn (để thu hẹp RPO) và tự động hóa quá trình khôi phục (để thu hẹp RTO).

Các chiến lược DR phổ biến (theo AWS Well-Architected)

Có bốn mô hình DR kinh điển, sắp theo thứ tự chi phí và tốc độ tăng dần:

1. Backup & Restore — Rẻ nhất, chậm nhất. Bạn chỉ giữ các bản backup (snapshot database, ảnh máy ảo, dữ liệu trên object storage) và khi có sự cố thì dựng lại toàn bộ từ đầu. RTO thường tính bằng giờ đến ngày; RPO phụ thuộc tần suất backup. Phù hợp hệ thống ít quan trọng, chấp nhận downtime dài.

2. Pilot Light — Bạn duy trì một "ngọn lửa mồi": phần cốt lõi nhất (thường là database được nhân bản liên tục) luôn chạy ở vùng dự phòng, còn tầng ứng dụng thì tắt hoặc chạy tối thiểu. Khi có sự cố, bạn "thổi bùng ngọn lửa" bằng cách khởi động và mở rộng tầng ứng dụng. RTO tính bằng chục phút; RPO nhỏ vì database đã đồng bộ sẵn.

3. Warm Standby — Một bản sao thu nhỏ của toàn bộ hệ thống luôn chạy sẵn ở vùng dự phòng, đủ để nhận một phần lưu lượng. Khi thảm họa xảy ra, bạn chỉ cần scale up (mở rộng công suất) và chuyển toàn bộ lưu lượng sang. RTO tính bằng phút.

4. Multi-Site Active/Active (Hot Standby) — Đắt nhất, nhanh nhất. Hai (hoặc nhiều) vùng cùng chạy đầy đủ và cùng phục vụ lưu lượng thật. Khi một vùng chết, lưu lượng tự động dồn sang vùng còn lại gần như tức thì. RTO gần bằng 0, RPO gần bằng 0. Phù hợp ngân hàng, sàn giao dịch, hệ thống thanh toán.

DR không phải là High Availability

Một hiểu lầm rất phổ biến cần làm rõ ngay: High Availability (HA) xử lý các sự cố cục bộ, thường trong cùng một vùng (một máy chủ chết, một Availability Zone trục trặc) và diễn ra tự động, gần như không ai để ý. Disaster Recovery xử lý các thảm họa quy mô lớn — mất cả một vùng địa lý, mất toàn bộ dữ liệu — và thường liên quan đến việc chuyển sang một khu vực (region) khác. HA giúp bạn không sập; DR giúp bạn sống lại khi đã sập. Bài này tập trung vào DR; HA và Multi-AZ đã được bàn ở bài trước.

Tình huống thực tế

Tình huống 1 — Sàn thương mại điện tử Việt Nam trong ngày sale 12/12

Một sàn thương mại điện tử giả định tên "ChợViệt" đặt hạ tầng chính tại region Singapore của một nhà cung cấp cloud lớn. Trong ngày sale 12/12, lúc cao điểm 21:00, một sự cố mạng ở region này khiến toàn bộ dịch vụ database bị gián đoạn 40 phút.

Trước đó, ChợViệt chỉ dùng chiến lược Backup & Restore: database được snapshot mỗi 6 tiếng một lần, bản gần nhất lúc 18:00. Khi khôi phục, họ phải dựng lại database từ snapshot 18:00, mất toàn bộ đơn hàng và giao dịch phát sinh từ 18:00 đến 21:00 — đúng khung giờ vàng của đợt sale. RPO thực tế lên tới 3 tiếng, RTO là 40 phút chờ region hồi phục cộng thêm 2 tiếng restore. Thiệt hại ước tính hàng tỷ đồng doanh thu và vô số khiếu nại "tôi đặt đơn rồi mà giờ mất".

Bài học: Với hệ thống có dòng tiền liên tục như e-commerce trong mùa sale, RPO 6 tiếng là thảm họa. Sau sự cố, ChợViệt chuyển sang Pilot Light: database chính bật chế độ nhân bản liên tục (continuous replication) sang region Jakarta, đưa RPO xuống dưới 1 phút. Con số RPO không phải do IT tự nghĩ ra — nó phải xuất phát từ câu hỏi kinh doanh: "Mất 3 tiếng đơn hàng đáng giá bao nhiêu?".

Tình huống 2 — Fintech và cú xóa nhầm database

Một startup fintech ở TP.HCM (gọi là "PayNhanh") vận hành ví điện tử. Một kỹ sư mới, trong lúc dọn dẹp môi trường, đã chạy nhầm script xóa dữ liệu lên đúng database production thay vì staging. Trong vài giây, bảng số dư của hàng chục nghìn người dùng biến mất.

Điểm mấu chốt ở đây: đây không phải sự cố hạ tầng mà nhà cung cấp cloud có thể tự khắc phục. Multi-AZ hay replication cũng vô dụng — vì lệnh xóa được nhân bản y hệt sang mọi bản sao! May mắn, PayNhanh có bật Point-in-Time Recovery (PITR) trên database, cho phép khôi phục về đúng trạng thái tại một thời điểm bất kỳ trong 7 ngày gần nhất. Họ khôi phục về mốc "1 phút trước khi chạy script", đưa RPO thực tế xuống dưới 1 phút. RTO là 35 phút — thời gian phát hiện, xác định thời điểm cần rollback, và chờ database khôi phục.

Bài học: Thảm họa phổ biến nhất không phải thiên tai mà là lỗi con người và phần mềm độc hại. Replication bảo vệ bạn khỏi mất phần cứng, nhưng không bảo vệ khỏi lỗi logic — vì nó nhân bản cả lỗi. Backup có versioning và PITR mới là lớp phòng thủ cuối cùng. Đây cũng là lý do backup nên "bất biến" (immutable) và tách khỏi quyền truy cập thường ngày, để ransomware không thể mã hóa luôn cả bản backup.

Tình huống 3 — Doanh nghiệp SaaS cam kết SLA 99.99%

Một công ty SaaS phục vụ khối ngân hàng ở Đông Nam Á ký hợp đồng SLA cam kết uptime 99.99% (tương đương chỉ ~52 phút downtime mỗi năm). Họ triển khai kiến trúc Warm Standby: một bản sao thu nhỏ của hệ thống luôn chạy ở region thứ hai, database đồng bộ gần như realtime.

Khi region chính gặp sự cố kéo dài 25 phút, đội DevOps kích hoạt quy trình failover: chuyển bản ghi DNS (Route 53) trỏ sang region dự phòng, đồng thời scale up tầng ứng dụng ở đó. Toàn bộ quá trình mất 8 phút vì họ đã diễn tập (DR drill) hằng quý và có runbook chi tiết. RTO thực tế 8 phút, RPO gần như bằng 0. SLA năm đó vẫn được giữ vững.

Bài học: RTO thấp không đến từ việc mua giải pháp đắt tiền, mà đến từ luyện tập. Một kế hoạch DR chưa bao giờ được kiểm thử thì gần như chắc chắn sẽ thất bại đúng lúc cần nhất. Failover phải được tự động hóa và diễn tập đều đặn để biến thành phản xạ, không phải màn ứng biến hoảng loạn lúc 2 giờ sáng.

Hướng dẫn từng bước

Dưới đây là quy trình xây dựng một chiến lược DR bài bản cho một hệ thống điển hình.

Bước 1 — Phân loại hệ thống theo mức độ quan trọng. Liệt kê tất cả ứng dụng và dữ liệu, rồi gán mức độ: Tier 0 (sống còn — thanh toán, đăng nhập), Tier 1 (quan trọng), Tier 2 (có thể chịu downtime). Không phải mọi thứ đều cần RTO 5 phút.

Bước 2 — Xác định RTO và RPO cho từng tier, cùng bộ phận kinh doanh. Đây là bước quan trọng nhất và thường bị bỏ qua. Hỏi thẳng: "Nếu hệ thống này chết 1 giờ, thiệt hại là bao nhiêu?" và "Mất 30 phút dữ liệu cuối có chấp nhận được không?". Con số RTO/RPO phải do kinh doanh quyết, không phải IT tự áp.

Bước 3 — Chọn chiến lược DR phù hợp ngân sách và mục tiêu. Ánh xạ RTO/RPO đã chốt sang một trong bốn mô hình: Backup & Restore, Pilot Light, Warm Standby, hay Active/Active. Đừng dùng Active/Active cho một trang blog nội bộ; cũng đừng dùng Backup & Restore cho hệ thống thanh toán.

Bước 4 — Thiết lập backup và replication. Bật snapshot tự động theo lịch, kích hoạt cross-region replication cho dữ liệu quan trọng, và bật Point-in-Time Recovery cho database. Đảm bảo backup được lưu ở region khác và có bản bất biến chống ransomware.

Bước 5 — Viết runbook. Tài liệu hóa từng bước failover: ai làm gì, chạy lệnh nào, đổi DNS ra sao, kiểm tra tính đúng đắn thế nào. Runbook phải đủ chi tiết để một người trực ca chưa từng gặp sự cố này vẫn theo được.

Bước 6 — Diễn tập (DR drill) định kỳ. Ít nhất mỗi quý, thực sự kích hoạt failover trong môi trường kiểm soát, bấm đồng hồ đo RTO/RPO thực tế, rồi so với mục tiêu. Ghi lại điểm nghẽn và cải tiến.

Bước 7 — Đo lường và cải tiến liên tục. Sau mỗi lần drill hoặc sự cố thật, làm post-mortem: RTO/RPO thực đạt bao nhiêu, khác mục tiêu ra sao, cần đầu tư thêm ở đâu.

Lỗi thường gặp & mẹo

Lỗi 1 — Có backup nhưng chưa bao giờ thử restore. Rất nhiều đội tự tin vì "chúng ta backup hằng ngày", nhưng đến lúc cần mới phát hiện bản backup bị hỏng hoặc thiếu dữ liệu. Mẹo: Định kỳ thực hiện restore thử vào môi trường riêng. Một bản backup chưa từng được restore thành công thì coi như chưa tồn tại.

Lỗi 2 — Nhầm replication là backup. Replication nhân bản mọi thay đổi, kể cả lệnh xóa nhầm và mã hóa ransomware. Nó bảo vệ khỏi mất phần cứng, không bảo vệ khỏi lỗi logic. Mẹo: Luôn có backup có versioning/PITR song song với replication.

Lỗi 3 — Đặt RTO/RPO theo cảm tính hoặc "càng thấp càng tốt". Ép RTO xuống 1 phút cho hệ thống không cần thiết sẽ đốt tiền vô ích. Mẹo: Mọi con số phải xuất phát từ tác động kinh doanh, không phải mong muốn kỹ thuật.

Lỗi 4 — Quên phần DNS và quyền truy cập khi failover. Hạ tầng dự phòng sẵn sàng nhưng lưu lượng vẫn trỏ về region chết vì DNS chưa đổi, hoặc đội trực không có quyền kích hoạt. Mẹo: Đưa việc chuyển DNS và phân quyền vào runbook và tự động hóa nếu được.

Lỗi 5 — Kế hoạch DR nằm im trên giấy. Viết xong rồi để đó cả năm, khi có sự cố mới lôi ra thì đã lỗi thời. Mẹo: DR là quy trình sống — drill đều, cập nhật sau mỗi thay đổi kiến trúc lớn.

Mẹo tổng quát: Backup nên tuân nguyên tắc 3-2-1 — 3 bản sao dữ liệu, trên 2 loại phương tiện lưu trữ khác nhau, với 1 bản đặt ở vị trí tách biệt (region/tài khoản khác).

Bài tập thực hành

  • Tính RTO/RPO thực tế: Database của bạn backup lúc 08:00 và 14:00 mỗi ngày. Sự cố xảy ra lúc 13:30, khôi phục xong lúc 16:00. Hãy tính RPO thực tế và RTO thực tế. Nếu cam kết là RPO ≤ 2 giờ và RTO ≤ 90 phút, sự cố này vi phạm điều gì?
  • Chọn chiến lược: Cho ba hệ thống: (a) blog nội bộ công ty, (b) hệ thống đặt vé máy bay, (c) kho ảnh của một mạng xã hội. Với mỗi hệ thống, đề xuất một trong bốn mô hình DR (Backup & Restore / Pilot Light / Warm Standby / Active-Active) và giải thích bằng lập luận RTO/RPO.
  • Thiết kế mini-runbook: Viết 5–7 bước failover cho một web app hai tầng (ứng dụng + database) chuyển từ region A sang region B, bao gồm cả bước đổi DNS và bước kiểm tra tính đúng đắn sau khi chuyển.
  • Phân tích tình huống: Một công ty tự tin "chúng tôi có replication đa vùng nên không cần backup". Hãy chỉ ra ít nhất hai kịch bản thảm họa mà replication không cứu được, và đề xuất biện pháp bổ sung.

Tóm tắt

Disaster Recovery là nghệ thuật chuẩn bị cho ngày tồi tệ nhất bằng những con số cụ thể. Hai con số cốt lõi là RPO — lượng dữ liệu tối đa chấp nhận mất (nhìn về quá khứ) — và RTO — thời gian downtime tối đa chấp nhận được (nhìn về tương lai). Cả hai phải do bộ phận kinh doanh quyết dựa trên tác động thực tế, không phải do IT áp đặt theo cảm tính.

Từ RTO/RPO, bạn chọn một trong bốn chiến lược theo trục chi phí – tốc độ: Backup & Restore (rẻ, chậm), Pilot Light, Warm Standby, đến Active/Active (đắt, gần như tức thì). Nhớ rằng DR khác HA: HA giúp không sập, DR giúp sống lại sau khi đã sập. Replication không thay thế được backup, vì nó nhân bản luôn cả lỗi con người và ransomware. Và quan trọng nhất: một kế hoạch DR chưa từng được diễn tập thì gần như chắc chắn sẽ thất bại đúng lúc cần nhất. Hãy backup theo nguyên tắc 3-2-1, viết runbook rõ ràng, và diễn tập đều đặn — để khi điện thoại rung lúc 2 giờ sáng, bạn có sẵn câu trả lời cho cả hai câu hỏi của sếp.

Học xong bài này rồi? Tạo tài khoản miễn phí để lưu lại — lần sau vào là biết ngay đang dở ở đâu, và học hết khóa thì có chứng chỉ. Lưu tiến độ của tôi