0

RTO, RPO và Disaster Recovery trên AWS: Backup thôi chưa đủ cho production

Backup thường là mục đầu tiên xuất hiện trong checklist vận hành, nhưng có bản sao dữ liệu không đồng nghĩa hệ thống có thể phục hồi sau sự cố. Một chiến lược Disaster Recovery (DR) cho production phải trả lời rõ: dịch vụ cần hoạt động trở lại trong bao lâu, chấp nhận mất tối đa bao nhiêu dữ liệu, thành phần nào phải được khôi phục trước và ai chịu trách nhiệm thực hiện từng bước.

RTO và RPO vì vậy không phải hai con số do đội hạ tầng tự chọn. Chúng là yêu cầu kinh doanh, cần được chuyển thành kiến trúc, quy trình vận hành và bài kiểm thử có thể đo lường.

1. RTO và RPO thực sự có nghĩa gì?

Recovery Time Objective (RTO) là khoảng thời gian gián đoạn tối đa mà tổ chức chấp nhận trước khi một dịch vụ phải được khôi phục. RTO bao gồm toàn bộ chuỗi phát hiện sự cố, ra quyết định, kích hoạt phương án phục hồi, dựng hoặc chuyển đổi hạ tầng, khôi phục dữ liệu, kiểm tra tính đúng đắn và mở lại lưu lượng.

Recovery Point Objective (RPO) là lượng dữ liệu tối đa có thể mất, được biểu diễn bằng thời gian. RPO 15 phút có nghĩa là tại thời điểm phục hồi, trạng thái dữ liệu có thể lùi tối đa 15 phút so với lúc sự cố xảy ra. Nó quyết định tần suất backup, cơ chế replication và yêu cầu về tính nhất quán.

Hai chỉ số cần được xác định theo từng workload hoặc business capability. Một hệ thống báo cáo nội bộ có thể chấp nhận RTO bốn giờ và RPO một giờ, trong khi luồng thanh toán có thể cần RTO vài phút và RPO gần bằng không. Đây chỉ là ví dụ minh họa; con số thực tế phải đến từ phân tích tác động kinh doanh, nghĩa vụ pháp lý và chi phí gián đoạn.

2. Backup và Disaster Recovery không phải một thứ

Backup tạo ra bản sao có thể dùng để khôi phục dữ liệu. DR là năng lực đưa một dịch vụ trở lại trạng thái vận hành chấp nhận được sau một failure scenario đã xác định. DR bao gồm backup, nhưng còn cần hạ tầng, cấu hình, networking, identity, secrets, dependencies, quy trình chuyển lưu lượng, kiểm thử ứng dụng và điều phối con người.

Một snapshot database còn nguyên vẹn không giúp được nhiều nếu account phục hồi chưa có network route, role cần thiết không tồn tại, container image đã bị xóa hoặc DNS không thể chuyển sang endpoint mới. Tương tự, replication liên tục có thể sao chép cả lỗi logic hoặc dữ liệu bị mã hóa bởi ransomware. Vì thế cần kết hợp nhiều cơ chế: versioning, immutable backup, retention phù hợp và recovery point độc lập với môi trường đang chạy.

3. Multi-AZ không đồng nghĩa với Disaster Recovery hoàn chỉnh

Thiết kế Multi-AZ giúp giảm tác động khi một Availability Zone hoặc một instance gặp lỗi. Nhiều dịch vụ AWS có khả năng tự động failover giữa các AZ, qua đó xử lý tốt nhóm lỗi hạ tầng cục bộ. Đây là lớp high availability rất quan trọng, nhưng phạm vi bảo vệ của nó có giới hạn.

Multi-AZ không tự giải quyết lỗi cấu hình lan rộng, xóa nhầm tài nguyên, credential bị lộ, lỗi triển khai đồng loạt, sự cố ở cấp Region hoặc mất quyền kiểm soát account. Nếu primary và standby dùng chung cấu hình sai hoặc cùng nhận một thay đổi phá vỡ dữ liệu, failover không tạo ra trạng thái sạch hơn. Kiến trúc phải phân biệt rõ availability trong một Region với khả năng phục hồi từ các failure domain lớn hơn.

4. Một mô hình resilience có thể gồm nhiều lớp

Resilience hiệu quả thường được xây theo nhiều lớp thay vì phụ thuộc vào một cơ chế duy nhất:

  • Lớp ứng dụng giảm lỗi tức thời bằng retry có kiểm soát, timeout, circuit breaker, idempotency và graceful degradation.
  • Lớp hạ tầng phân tán workload qua nhiều AZ, loại bỏ single point of failure và tự động thay thế compute không khỏe mạnh.
  • Lớp dữ liệu sử dụng backup, point-in-time recovery, replication, versioning và cơ chế kiểm tra tính toàn vẹn.
  • Lớp phục hồi duy trì cấu hình có thể tái tạo, artifact bất biến, runbook và quyền truy cập khẩn cấp.
  • Lớp tổ chức xác định người ra quyết định, kênh liên lạc, tiêu chí tuyên bố disaster và quy trình hậu kiểm.

Các lớp này nên độc lập ở mức hợp lý. Khi một lớp thất bại, lớp khác vẫn phải cung cấp đường phục hồi.

5. RTO/RPO thấp luôn có trade-off

RTO và RPO càng thấp thì kiến trúc thường càng đắt và phức tạp. Backup hàng ngày sang lưu trữ chi phí thấp phù hợp với workload có RPO dài, nhưng không đáp ứng hệ thống cần khôi phục gần thời gian thực. Pilot light, warm standby và active-active lần lượt giảm thời gian phục hồi nhưng tăng chi phí compute, replication, đồng bộ cấu hình và vận hành.

RPO gần bằng không còn kéo theo bài toán consistency và conflict resolution. RTO vài phút yêu cầu phần lớn thao tác phải được tự động hóa, capacity tại recovery site phải sẵn sàng và quyết định failover không được phụ thuộc vào chuỗi phê duyệt quá dài. Do đó, mục tiêu không phải chọn con số nhỏ nhất mà là chọn cam kết phù hợp với business impact rồi chứng minh kiến trúc đạt được cam kết đó.

6. Backup không có giá trị nếu chưa từng restore thử

Một job backup báo thành công chỉ chứng minh dữ liệu đã được ghi ở đâu đó; nó chưa chứng minh bản sao có thể phục hồi. Restore test cần kiểm tra khả năng giải mã, quyền truy cập, thời gian tải dữ liệu, tính nhất quán giữa các datastore và khả năng khởi động ứng dụng trên dữ liệu đã phục hồi.

Bài kiểm thử nên dùng môi trường cô lập để tránh ảnh hưởng production. Sau khi restore, cần chạy validation ở nhiều tầng: checksum hoặc integrity check, truy vấn nghiệp vụ quan trọng, đối chiếu số lượng bản ghi, kiểm tra liên kết với object storage và thử một luồng giao dịch hoàn chỉnh. Thời gian thực tế của từng bước phải được ghi lại để so với RTO.

Tần suất kiểm thử cần tương xứng với tốc độ thay đổi và mức độ quan trọng của hệ thống. Một backup chưa từng được restore nên được xem là giả định, không phải bằng chứng phục hồi.

7. Infrastructure as Code có vai trò rất lớn trong DR

Infrastructure as Code (IaC) biến topology, policy, network, compute và cấu hình dịch vụ thành phiên bản có thể review và tái tạo. Trong tình huống DR, IaC giúp giảm thao tác thủ công, hạn chế configuration drift và cho phép dựng môi trường phục hồi theo một quy trình lặp lại được.

Tuy nhiên, repository IaC cũng phải nằm ngoài failure domain mà nó dùng để khôi phục. State, module, pipeline, artifact và credential triển khai cần có chiến lược bảo vệ riêng. Template chỉ dựng được tài nguyên; nó không đảm bảo dữ liệu đúng, dependency ngoài hệ thống sẵn sàng hay ứng dụng vượt qua kiểm tra nghiệp vụ. Vì vậy IaC cần được tích hợp vào bài diễn tập từ đầu đến cuối, không chỉ chạy thử lệnh plan.

8. Runbook quan trọng không kém architecture

Một kiến trúc tốt vẫn có thể thất bại nếu đội vận hành không biết khi nào và cách kích hoạt nó. Runbook cần mô tả trigger, vai trò, thứ tự thao tác, dependency, điều kiện dừng, cách rollback và tiêu chí xác nhận dịch vụ đã phục hồi.

Runbook hiệu quả phải đủ cụ thể để một người trực ca có thể thực hiện trong áp lực cao, nhưng không nên biến thành tài liệu dài và lỗi thời. Lệnh nên được tự động hóa khi có thể; bước thủ công cần nêu rõ input, output mong đợi và cách xử lý sai lệch. Thông tin liên lạc, quyền break-glass và cơ chế audit cũng phải được kiểm tra định kỳ.

Game day giúp phát hiện những giả định ẩn như thiếu quyền, quota không đủ, certificate hết hạn hoặc một dependency chưa được đưa vào sơ đồ phục hồi. Sau mỗi lần diễn tập, runbook và kiến trúc phải được cập nhật từ kết quả thực tế.

9. Observability phải tồn tại cả trong recovery path

Recovery path không thể là vùng mù. Metrics, logs, traces và audit events phải hoạt động trong môi trường phục hồi để đội ngũ biết quá trình đang ở giai đoạn nào và dịch vụ có thực sự khỏe mạnh hay không.

Dashboard cần theo dõi cả chỉ số kỹ thuật lẫn tín hiệu nghiệp vụ: error rate, latency, queue depth, replication lag, số giao dịch hoàn tất và mức độ đầy đủ của dữ liệu. Alerting cũng phải tránh phụ thuộc hoàn toàn vào hệ thống đang gặp sự cố. Nếu monitoring, notification và primary workload cùng chung một failure domain, đội vận hành có thể mất khả năng quan sát đúng lúc cần nhất.

Các mốc thời gian trong sự kiện cần được lưu để tính actual RTO và actual RPO. Đây là dữ liệu đầu vào cho việc cải thiện kiến trúc và điều chỉnh cam kết.

10. Multi-region chỉ nên xuất hiện khi requirement thực sự cần

Multi-region có thể bảo vệ trước sự cố ở cấp Region và rút ngắn thời gian chuyển đổi, nhưng nó không phải lựa chọn mặc định cho mọi workload. Thiết kế này làm tăng độ phức tạp của replication, data sovereignty, consistency, routing, secret distribution, deployment và incident response.

Trước khi chọn multi-region, cần hỏi liệu yêu cầu có thể được đáp ứng bằng Multi-AZ, cross-region backup và quy trình restore đã tự động hóa hay không. Nếu business impact thực sự yêu cầu warm standby hoặc active-active, cần xác định rõ nguồn sự thật, cách xử lý ghi đồng thời, cơ chế fencing để tránh split-brain và điều kiện failback.

Chi phí không chỉ là tài nguyên chạy thêm. Chi phí lớn còn nằm ở kiểm thử, năng lực vận hành và số trạng thái hệ thống mà đội ngũ phải hiểu.

11. Một cách thiết kế DR thực tế hơn

Thay vì bắt đầu bằng câu hỏi “nên dùng dịch vụ AWS nào”, có thể đi theo sequence sau:

  1. Business impact: xác định chức năng quan trọng, chi phí gián đoạn và nghĩa vụ tuân thủ.
  2. Define RTO/RPO: đặt mục tiêu theo từng workload và được business owner chấp thuận.
  3. Identify failure domains: liệt kê lỗi instance, AZ, Region, account, con người, dữ liệu và dependency bên ngoài.
  4. Choose recovery strategy: chọn backup/restore, pilot light, warm standby hoặc active-active theo yêu cầu.
  5. Design backup/replication: xác định tần suất, retention, immutability, encryption và phạm vi sao chép.
  6. Automate infrastructure: dùng IaC, pipeline và artifact có phiên bản để tái tạo môi trường.
  7. Write runbook: định nghĩa trigger, owner, trình tự và tiêu chí xác nhận.
  8. Test recovery: diễn tập trong môi trường an toàn với tình huống cụ thể.
  9. Measure actual RTO/RPO: đo từ thời điểm phát hiện đến khi dịch vụ và dữ liệu được xác nhận.
  10. Improve: xử lý điểm nghẽn, cập nhật tài liệu và lặp lại định kỳ.

Sequence này nối yêu cầu kinh doanh với bằng chứng vận hành, đồng thời ngăn việc mua hoặc cấu hình công nghệ trước khi hiểu failure scenario.

12. Production readiness lớn hơn riêng bài toán DR

DR chỉ là một lớp trong production foundation rộng hơn. Một hệ thống có thể restore đúng hạn nhưng vẫn chưa sẵn sàng cho production nếu identity quá rộng, network thiếu phân đoạn, deployment không kiểm soát, observability không đầy đủ hoặc quy trình vận hành không có owner. Security, availability, change management, capacity, cost governance và incident response phải được thiết kế cùng nhau.

Nếu muốn xem một góc nhìn rộng hơn về cách các lớp này liên kết với nhau, có thể tham khảo bài phân tích về thiết kế production AWS foundations.

Điểm quan trọng là tránh đánh giá DR như một checkbox tách biệt. Các quyết định về account structure, IAM, logging, CI/CD và data architecture đều ảnh hưởng trực tiếp đến khả năng phục hồi.

Kết luận

Disaster Recovery không phải một sơ đồ được cất trong tài liệu và chỉ mở ra khi có sự cố. Nó là một năng lực phải được thiết kế từ yêu cầu RTO/RPO, triển khai bằng cơ chế có thể tái tạo, vận hành bằng runbook rõ ràng và chứng minh qua restore test cùng game day định kỳ.

Backup là điều kiện cần, nhưng chỉ khi đội ngũ khôi phục được dịch vụ, kiểm chứng dữ liệu và đo được thời gian thực tế thì mới có cơ sở nói hệ thống đáp ứng mục tiêu phục hồi. DR đáng tin cậy là DR đã được thử nghiệm, quan sát và cải thiện liên tục.

Ghi chú tác giả

Tác giả hiện làm việc tại TitanBases, AWS Advanced Tier Services Partner có trụ sở tại Việt Nam, trong các dự án liên quan đến cloud foundations, migration and modernization, security, resilience, observability và production engineering trên AWS.

Bài viết tổng hợp các góc nhìn kỹ thuật về RTO, RPO, backup và Disaster Recovery trong quá trình thiết kế workload production trên AWS.


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.