Bài viết được đăng đầu tiên trên Potato Tech Mash. Nội dung bài viết nói về RDS – dịch vụ đám mây về cơ sở dữ liệu có quan hệ do AWS cung cấp. Bài viết sẽ giúp bạn có cái nhìn tổng quan về RDS và liệu bạn sẽ có nên dùng RDS cho dự án tiếp theo của mình hay không. Ngoài ra, đọc hết bài viết thì đảm bảo bạn sẽ làm tốt phần RDS của chứng chỉ AWS Solutions Architect – Associate  😎

Database (cơ sở dữ liệu) là phần không thể thiếu trong bất kì hệ thống ứng dụng phần mềm hiện nay.

Một hế thống phần mềm luôn cần có database

Nếu bạn phải đảm nhận vai trò phát triển hệ thống thì các công việc liên quan đến database có thể kể đến bao gồm:

  • Tìm máy chủ cho database.
  • Lựa chọn và cài đặt phần mềm database.
  • Giám sát máy chủ và database.
  • Xây dựng cơ chế sao lưu và phục hồi dữ liệu (backup & restore).
  • Mở rộng hệ thống database khi lượng request tăng cao.

Quá nhiều thứ phải làm để vận hành tốt database!

Vậy liệu có giải pháp nào giúp tự động hóa các quá trình trên để tối ưu hóa chi phí vận hành database cho doanh nghiệp? Một trong những dịch vụ có thể kể đến đó là Amazon RDS – dịch vụ đám mây cung cấp giải pháp cài đặt và vận hành cơ sơ dữ liệu có quan hệ.

Vậy Amazon RDS là gì và thật sự nó có “thần thánh” hơn so với việc chúng ta tự cài đặt một database trên các máy chủ, chẳng hạn như cài đặt database trên Amazon EC2?

Amazon RDS là gì?

Amazon RDS (Amazon Relational Database Service) là dịch vụ đám mây do Amazon Web Services phát triển với mục tiêu cung cấp giải pháp cài đặt, vận hành và mở rộng dành cho relational database (cơ sơ dữ liệu có quan hệ).

Các hệ quản trị cơ sở dữ liệu quan hệ mà Amazon RDS hỗ trợ hiện nay gồm có:

  • SQL Server, Oracle (yêu cầu bản quyền).
  • MySQL, PostgreSQL, MariaDB (mã nguồn mở).
  • Amazon Aurora: được phát triển bởi Amazon với hiệu suất được Amazon “quảng cáo” là tốt hơn 5 lần so với MySQL và tốt hơn 2 lần PostgreSQL. Aurora được Amazon phát triển với tham vọng là một giải pháp thay thế cho MySQL và PostgreSQL do đó Aurora hoàn toàn tương thích với MySQL và PostgreSQL, có nghĩa bạn có các mã nguồn, ứng dụng, drivers hoặc các công cụ dành cho MySQL và PostgreSQL đều có thể sử dụng cho Aurora.

Tùy thuộc vào loại database engine, Amazon sẽ giới hạn số lượng database tối đa trong mỗi instance mà bạn tạo trên Amazon RDS, cụ thể:

Amazon RDS Backup & Restore

Một trong những yêu cầu cở bản để đảm bảo độ tin cậy (reliability) của hệ thống đó là xây dựng cơ chế sao lưu dữ liệu (backup) và cơ chế khôi phục dữ liệu (restore) để “phòng hờ bất trắc”.

Quá trình backup của Amazon RDS dựa trên việc tạo các bản sao lưu dữ liệu (database snapshot) và sử dụng các snapshot này để restore dữ liệu.

Tạo database snapshot với Amazon RDS chỉ với “1 cú click chuột”

Amazon RDS hỗ trợ tạo ra database snapshot theo 2 cách: tự động và thủ công:

Tự động

Thủ công

 

Amazon RDS tạo các bản sao lưu một cách tự động hằng ngày theo khoảng thời gian cấu hình trước. Trong trường hợp không cấu hình thời gian backup, Amazon RDS tự động chọn thời gian dựa theo khu vực (region) của database instance.

 

Snapshot được khởi tạo khi có yêu cầu của quản trị viên thông qua AWS Management Console, AWS RDS Command-Line Interface hoặc API.

 

Các snapshot có khoảng thời gian lưu trữ: mặc định là 7 ngày và có thể cấu hình lại tối đa là 35 ngày. Sau khoảng thời gian lưu trữ, các snapshot sẽ tự động xóa và không thể được dùng để restore.

 

Các snapshot không có thời gian lưu trữ do đó có thể được dùng để restore bất kỳ lúc nào.

 

Khi xóa database instance, Amazon RDS sẽ tự động tạo 1 final snapshot, các snapshot khác sẽ tự động xóa đi.

 

Khi xóa database instance các snapshot sẽ được giữ lại và chỉ mất đi khi bạn chủ động xóa các snapshot này.

Maintenance window

Amazon RDS sẽ thực hiện các bảo trì định kỳ để cập nhật cho các database instance và hệ điều hành của cụm máy chủ database (database cluster).

Tương tự như backup window, thời gian maintenance phải được cấu hình trong lúc khởi tạo một Amazon RDS database instance. Trong trường hợp bạn không chọn thời gian cho maintenance window, Amazon cũng sẽ mặc định chọn thời gian maintenance dựa vào khu vực (region) của database instance đã được tạo.

Thời gian cấu hình cho maintenance window không được trùng lắp với backup window. Khi khởi tạo RDS database instance, thông báo lỗi sẽ xuất hiện khi 2 khoảng thời này trùng lắp lên nhau.

Khi sự kiện maintenance xảy ra, Amazon RDS bắt buộc phải chuyển database instance của bạn sang trạng thái offline. Do đó, để giảm thiểu ảnh hưởng của maintenance, database instance nên được cấu hình Multi-AZ.

Multi-AZ

Khi bạn kích hoạt Multi-AZ cho database instance, Amazon RDS sẽ tự động tạo một instance chính (primary instance) và đồng bộ dữ liệu sang các instance dự phòng (standby instance).

Các standby instance được đặt ở các vùng sẵn có (Availability Zone –AZ) trong cùng  khu vực (region) với primary instance. Các AWS availability zone tuy trong cùng một region nhưng được Amazon thiết kế độc lập về hạ tầng phần cứng để đảm bảo không xảy ra tình trạng hỏng hóc cho toàn bộ AWS region.

Các Availability Zone được thiết kế độc lập về hạ tầng phần cứng

Các standby instance giao tiếp với primary instance thông qua kết nối đồng bộ (synchronous connection).

Trong hệ thống Amazon RDS có Multi-AZ luôn có một database instance đóng với trò chính trong việc đáp ứng truy xuất dữ liệu của hệ thống được gọi master DB. Các database instance khác đóng vai trò là dự phòng sẽ được gọi standby DB. Trong trường hợp xảy ra sự cố và bảo trị master DB, Amazon RDS sẽ tự động hoán đổi vị trí master và standby bằng các thay đổi CNAME của DNS server. Bằng cách này, RDS Multi-AZ sẽ luôn đảm bảo tính sẵn có (availability) cho hệ thống.

Nhìn chung thì Multi-AZ chỉ tạo các bản sao dữ liệu và đặt trong cùng 1vùng địa lí để đảm tính sẵn sàng của hệ thống, vậy muốn nếu ta muốn tăng hiệu suất và mở rộng hệ thống database trên toàn thế giới thì sao? Để đáp ứng nhu cầu này, Amazon RDS ra đời Read Replicas.

Read Replicas

Với read replica (bản sao chỉ đọc), Amazon RDS cung cấp khả năng tạo 1 hoặc nhiều nhân bản database từ 1 database nguồn.

Các read replica sẽ chia sẻ workload với master database để nâng cao hiệu suất đọc đáp ứng cho các hệ thống ứng dụng có lưu lượng truy cập lớn.

Khác với các standby database của Multi-AZ, các read replica có thể được đặt ở các khu vực khác nhau của AWS. Đây là khả năng lí tưởng cho việc phát triển hệ thống database trên toàn cầu.

Các read replica của RDS có thể đặt ở các khu vực khác nhau

Các read replica chỉ có thể đọc và giao tiếp với master database thông qua kết nối bất đồng bộ:

Hiện tại Amazon RDS, chỉ hỗ trợ cho các loại dabase engine mã nguồn mở như MySQL, PostgreSQL, MariaDB và Amazon Aurora. Tùy thuộc vào loại database engine, số lượng tối đa của read replica sẽ khác nhau, trong đó Amazon Aurora là nhiều nhất do là “hàng nhà” của Amazon.

Amazon RDS liệu có đáng dùng?

Có thể thấy rằng, Amazon RDS cung cấp các giải pháp tuyệt với cho một hệ thống database: sao lưu & phục hồi dữ liệu tự động hoặc thủ công, tăng tính sẵn sàng của hệ thống với Multi-AZ và tăng hiệu hiệu suất đọc với Read Replicas.

Vậy yếu tố để cân nhắc sử dụng Amazon RDS hay tự cài đặt database đó chính là chi phí. Amazon RDS tính tiền dựa trên những yếu tố nào?

  • DB instance hours: Số giờ mà database instance của bạn ở trạng thái running. Tùy theo loại mà bạn chọn (ví dụ: db.t2.micro, db.m4.large), giá mỗi giờ sẽ khác nhau.
  • Database storage: dung lượng lưu trữ của database tính theo từng tháng.
  • I/O Rate: số lượng yêu cầu đọc/ ghi dữ liệu tính theo từng tháng.
  • Backup Storage: dung lượng lưu của các backup tính theo từng tháng.
  • Data transfer: dung lượng Internet transfer vào và ra database instance.

Mức giá của mỗi tiêu chí sẽ phụ thuộc vào từng khu vực và có thể thay đổi theo chính sách của Amazon.Tốt nhất là khi cần nên truy cập vào địa chỉ này để tham khảo: https://aws.amazon.com/rds/pricing/ hoặc sử dụng AWS Simple Monthly Calculator.

Tóm lại, Amazon RDS giúp bạn tiết kiệm kha khá thời gian cho việc cài đặt và bảo trì hệ thống database của mình. Đổi lại, bạn sẽ phải trả thêm 40% so với việc tự cài đặt database trên máy chủ Amazon EC2. Nếu doanh nghiệp bạn chấp nhận mức phí này, bạn có thể dành nhiều thời gian hơn cho những công việc “thật” của doanh nghiệp thay vì chỉ chúi mũi vào lo cho cơ sở hạ tầng hệ thống cơ sở dữ liệu.

Một trong những lưu ý là nếu bạn sử dụng Amazon RDS cho sản phẩm thật sự cho doanh nghiệp, hãy chắc sử dụng reserved instance (đặt trước) để hướng chính sách giảm giá so với on-demand instance (“xài nhiêu trả nhiêu”).

Với Amazon RDS, dev có nhiều thời gian để cà phê cùng bạn bè.

Nhận thấy các bài viết tiếng Việt chuyên về lập trình blockchain còn ít nên tôi quyết định chuyển hướng sang chuyên viết về chủ đề blockchain dành riêng cho lập trình viên. Hi vọng những bài viết này sẽ giúp ích cho các bạn đang muốn theo đuổi lĩnh vực còn khá mới này.

Nếu bạn thấy bài viết hữu ích, bạn có thể ủng hộ tôi vài tách cà phê thông qua MoMo tại đây

Bạn cũng có thể nhờ tôi tư vấn về giải pháp công nghệ thông tin nói chung và blockchain nói riêng (có tính phí) thông qua đây