Một chiến lược đảm bảo an toàn dữ liệu

Hiện mình đang làm cho một công ty X về việc cung cấp dịch vụ cho khách hàng. Hệ thống lưu trữ thông tin khách hàng bao gồm nhiều thứ như họ tên, số điện thoại email, thời hạn dịch vụ, lịch sử thanh toán…

Như các bạn đã biết, dữ liệu về khách hàng của công ty là cực kỳ quan trọng. Bài toán đảm bảo an toàn dữ liệu khách như vấn đề bảo mật, tránh mất mát dữ liệu, đảm bảo hệ thống luôn sẵn sàng… là những bài toán lớn cần được giải quyết. Qua tìm hiểu hệ thống và cóp nhặt trên mạng, mình nốt lại một số thông tin về lý do và cách thức việc đảm bảo an toàn dữ liệu.

Dữ liệu thì được nằm trên cơ sở dữ liệu, từ đó các ứng dụng truy cập vào hệ thống để thực hiện các thao tác xem, thêm, sửa xóa dữ liệu. Cơ sở dữ liệu luôn phải được đảm bảo sống, nghĩa là bất kỳ lúc nào cũng có thể truy vấn được. Tuy nhiên, không phải lúc nào hệ thống cũng ổn định, có thể lỗi ở phía server(phần cứng), lỗi ở phía hệ điều hành, lỗi ở phía hệ quản trị cơ sở dữ liệu…

Sau đây mình liệt kê các mức của hệ thống:

Tính sẵn sàng của hệ thống

Hiện tại hệ thống bên mình chỉ có duy nhất một DB đang Active. Hàng giờ hệ thống liên tục đồng bộ sang 2 DB ở chế độ Standby. Chỉ khi nào xảy ra sự cố đặc biệt nghiêm trọng, DB đang Active nguy cơ không thể hồi phục trong thời gian dài thì 1 trong 2 DB này mới được bật lên ở chế độ Active. Như vậy tính rủi ro khá cao.
Ở công ty Y cũ mình thì sử dụng cơ chế 3 Node DB để đảm bảo tính sẵn sàng của hệ thống. Nghĩa là hệ thống luôn luôn có 3 DB đều ở chế độ Active, sử dụng công nghệ RAC của Oracle. Khi 1 DB (1 Node) gặp trục trặc thì hệ thống vẫn hoạt động được bình thường. Tuy nhiên khả năng Failover của hệ thống thì mình không dám chắc (Failover là khái niệm về việc giao dịch đang xử lý ở Node lỗi có tiếp tục được xử lý ở Node khác không).

Đảm bảo an toàn dữ liệu

Mô hình hệ thống Active – Standby thì sau một khoảng thời gian cần phải cập nhật thông tin từ con Active sang con Standby sử dụng công nghệ Archive log của Oracle để copy các sự thay đổi sang con Standby. Hiện tại có 2 con Standby, một con nằm cùng Data Center với con Active, một con Standby nằm ở một Data Center khác.

  • Đối với việc lỗi phần cứng của con Active, trong thời gian ngắn không khắc phục được thì con Standby cùng Data Center sẽ được bật lên để tiếp tục đảm bảo dịch vụ.
  • Đối với việc lỗi cả Data Center về phần cứng, hạ tầng mạng… thì buộc phải bật con Standby ở Data Center khác.

Theo khuyến cáo thì các Data Center đặt dữ liệu của hệ thống nên đặt xa nhau hàng trăm KM. Việc này đề phòng các thiên tai có thể xảy đến trên một vùng lớn. Ví dụ bão đổ vào Miền Bắc, cụ thể là Hà Nội. Trường hợp các Data Center ở Hà Nội đều hỏng hết thì khi đó Data Center nằm ở Bình Dương hoặc TP Hồ Chí Minh phát huy tác dụng. Không những việc đảm bảo dịch vụ mà còn đảm bảo về tính toàn vẹn của dữ liệu.
Đối với công ty lớn, dịch vụ có thể là khu vực và toàn cầu thì việc đặt dữ liệu tại Data Center thứ cấp có thể phải đặt ở nước khác hoặc châu lục khác. Việc này đảm bảo khi có chiến tranh hoặc sự tấn công lên tầm quốc gia.

Đây là hiểu biết của mình ở thời điểm hiện tại. Sau mình cần tìm hiểu rõ hơn về các khái niệm: High Availability, Cluster, Network Load Balancer, Failover