see more blog

Cơ sở dữ liệu phi máy chủ (serverless database) là gì?

serverless-database-csdl-phi-may-chu

Cơ sở dữ liệu phi máy chủ (serverless database) cung cấp nơi lưu trữ dữ liệu có khả năng mở rộng, đặt trên hạ tầng đám mây, có thể tìm kiếm tài liệu (retrieval) mà không yêu cầu người dùng phải cấu hình CPU hoặc lưu trữ trước đó.

Dịch vụ điện toán đám mây phi máy chủ bắt đầu với AWS Lambda, cho phép bạn chạy code mà không cần cấu hình hoặc quản lý server. AWS Lambda là một ví dụ cho các Hàm như một dịch vụ (functions as a service – FaaS) mà rất nhiều ứng dụng của FaaS đã phát triển sau Lambda tại Microsoft Azure và Google Cloud. Ở đây, người cung cấp cloud đưa ra các dịch vụ dưới hình thức phi máy chủ. Đây là một phương pháp tiếp cận mới về dịch vụ cloud, và trên thực tế, các hạ tầng phi máy chủ thường tiêu tốn rất ít chi phí để dự trữ các server instance vĩnh viễn khi chạy cùng một lượng công việc so với các server truyền thống.

Phi máy chủ là gì?

Dù có tên là “phi máy chủ” – serverless, nó không có nghĩa ta sẽ không sử dụng bất kỳ server nào hết. Thay vào đó, phi máy chủ có nghĩa rằng người dùng sẽ không phải dự trữ, quản lý, hay chi trả cho phần máy chủ đang sử dụng.

Khi một yêu cầu sử dụng dịch vụ phi máy chủ xuất hiện, nhà cung cấp cloud sẽ phân bổ 1 instance hoặc 1 pod (một cách sắp xếp logic các containers, thường được quản lý bởi Kubernetes) để xử lý yêu cầu từ pool. Khi code phi máy chủ đã tồn tại, các tài nguyên được phân bổ sẽ quay trở lại pool. Thông thường, người dùng sẽ trả cho phần tài nguyên sử dụng dựa trên khả năng xử lý của CPU, phân bổ RAM, và thời gian hoạt động.

Các function và dịch vụ phi máy chủ có thể kích hoạt lẫn nhau và kích hoạt các dịch vụ khác. Chúng cũng có thể viết lên các cơ sở dữ liệu (CSDL) và hệ thống tệp được chia sẻ. Một trong những điểm mạnh của function phi máy chủ nằm ở khả năng mở rộng tối đa. Khác với các máy chủ được lưu trữ dễ dàng bị “ngợp” khi bị quá tải truy cập từ người dùng, các instance phi máy chủ được chạy trong các event riêng, và mọi instance đều tự động quay trở về pool khi kết thúc nhiệm vụ.

Điều gì sẽ xảy ra khi một instance (hay pod) với kích cỡ “đạt chuẩn” không có sẵn trong pool khi có yêu cầu? Nhà cung cấp cloud khi đó sẽ tạo một instance (hay pod) mới. Tuy nhiên điều này có thể tạo ra độ trễ nhất định khi xử lý yêu cầu. Nếu độ trễ là một vấn đề đáng lo ngại trong trường hợp của bạn, thì bạn có thể trả thêm tiền để giữ một số function luôn có sẵn để phản hồi mọi lúc. AWS gọi đây là chức năng xử lý đồng thời được lưu trữ (provisioned concurrency). Một số nhà cung cấp cloud khác sử dụng tên khác, nhưng nhìn chung đều dựa vào cơ chế giữ lại một số instance luôn có sẵn để giảm thiểu độ trễ.

Các function và dịch vụ phi máy chủ thường có tính khả dụng cao. Nếu bạn đang dùng một server đơn lẻ, máy ảo hay container để chạy một dịch vụ, khả năng thất bại của dịch vụ cuối cùng outage khỏi máy hay trung tâm dữ liệu là rất cao. Nhà cung cấp cloud hay duy trì khả năng tính toán dư thừa cho các function phi máy chủ trên nhiều vùng khả dụng (availability zone) khác nhau, trên từng miền dịch vụ (được chia theo vị trí).

Bên cạnh các function và dịch vụ phi máy chủ từ các nhà cung cấp cloud, có rất nhiều framework có tính cloud-agnostic (cho phép tận dụng các công nghệ mã nguồn mở hay làm việc với nhiều bên cung cấp cloud khác nhau linh hoạt) và các bộ công cụ phát triển phần mềm (SDK) để tạo ra các ứng dụng phi máy chủ, bao gồm Kubeless, Pulumi, OpenFaaS, OpenWhisk, và Serverless Framework.

Cơ sở dữ liệu phi máy chủ là gì?

Theo Jim Walker từ Cockroach Labs, một CSDL phi máy chủ bao hàm 9 nguyên tắc cốt lõi:

  1. Rất ít hoặc không có chức năng quản lý server thủ công
  2. Tự động, linh hoạt nâng cấp hạ tầng cho ứng dụng, dịch vụ
  3. Có khả năng phục hồi bên trong (built-in resilience) và dịch vụ chịu lỗi (fault tolerance) tự thân
  4. Luôn khả dụng và có thể truy cập ngay tức thời
  5. Cơ chế billing dựa trên tỷ lệ tiêu thụ
  6. Vượt qua được các failure domain (miền thất bại), bao gồm cả các region
  7. Khả năng nâng cấp quy mô theo vị trí
  8. Cam kết về vốn
  9. (Sự tinh gọn trong SQL quan hệ)

Nguyên tắc 1 tới 5 có thể ứng dụng trong bất kỳ dịch vụ phi máy chủ nào, nhưng các nguyên tắc còn lại thì dành cho CSDL SQL quốc tế. Nguyên tắc 9 dường như có phần thiên vị với một số loại CSDL SQL phân tán như CockroachDB, do đó tôi đã đặt nó bên trong dấu ngoặc.

Các phương pháp truyền thống dùng để kết nối với phần lớn CSDL là đưa ra các giao thức TCP từ client tới server. Phương pháp này không phù hợp với CSDL phi máy chủ, bởi việc tạo giao thức TCP có thể tốn nhiều thời gian. Thông thường, client có thể kết nối tới endpoint phi máy chủ ngay tức thì (dưới 100 mili giây) và nhận được phản hồi trong giây lát với các truy vấn đơn giản. Một số CSDL phi máy chủ như Amazon Aurora Serverless có hỗ trợ kết nối HTTP (tốt hơn là HTTPS) và để ý tới các kết nối gộp chung (pooling) đang cần sự trợ giúp để nâng cấp quy mô và tạo giao thức ngay lập tức.

CSDL phi máy chủ là giải pháp tiết kiệm chi phí

Các CSDL truyền thống có thể được “đo ni đóng giày” cho một giới hạn tối đa nào đó để tải các truy vấn và lưu trữ tài nguyên. Nếu một CSDL có thể tùy chỉnh quy mô mà không cần tới chuyển dịch dữ liệu, bạn có thể tiết kiệm chi phí bằng việc điều chỉnh CPU cao hơn trong các giai đoạn truy cập cao điểm, và thấp xuống trong thời điểm lưu lượng truy cập thưa hơn.

CSDL phi máy chủ thường không cần điều chỉnh giới hạn. Bạn sẽ không bị tính phí cho CPU nếu bạn không gọi truy vấn, và khi gọi, bạn sẽ có dung lượng tùy theo nhu cầu của truy vấn đó. Sau đó, bạn sẽ được tính phí theo dung lượng đã sử dụng, nhân với thời gian mà CSDL ở trong trạng thái hoạt động. Tuy nhiên, bạn vẫn phải trả phí cho dung lượng bạn dùng để lưu trữ dữ liệu. Theo Amazon, bạn có thể tiết kiệm tới 90% chi phí cho CSDL với Aurora Serverless, so sánh với chi phí cho các hạ tầng truyền thống với tải lượng tối đa của họ. 

Khi nào thì nên ứng dụng CSDL phi máy chủ?

Các trường hợp được khuyến nghị để sử dụng CSDL phi máy chủ là khi tổ chức đó có khối lượng công việc linh hoạt, đa dạng, CSDL doanh nghiệp được quản lý theo kiểu đội xe (fleet management), sử dụng ứng dụng SaaS, và CSDL phân bổ tới nhiều server khác nhau. 

Các CSDL có tải lượng dễ đoán và nhanh nhạy sẽ phù hợp hơn với các phương thức triển khai server truyền thống. Kể cả với các CSDL luôn bận rộn trong giờ hành chính và đình trệ vào các ngày cuối tuần hay dịp nghỉ lễ, chúng vẫn dễ dàng quản lý với các server thông thường hơn là phi máy chủ, với các điều khoản (proviso) nêu rõ việc tắt server vào ngày nghỉ và dịp nghỉ lễ. Bạn sẽ cần dự trù kinh phí cụ thể trước khi đưa ra quyết định, nhưng bạn có thể căn cứ vào bảng giá và mức độ sử dụng để quyết định xem nên chọn máy chủ hay phi máy chủ.

Ví dụ về CSDL phi máy chủ

Tính đến thời điểm hiện tại, có 9 CSDL phi máy chủ đang có sẵn. Loại thứ 10, MongoDB Atlas, cung cấp các phiên bản phi máy chủ trong một bản preview. Sẽ không có gì ngạc nhiên nếu các nhà cung cấp CSDL khác với phiên bản đám mây, chẳng hạn như Oracle, cho thêm phiên bản phi máy chủ vào một thời điểm nào đó trong tương lai.

1. Amazon Aurora Serverless

Amazon Aurora Serverless v2, hiện đang trong trạng thái preview, có thể mở rộng quy mô tức thì từ hàng trăm đến hàng trăm nghìn giao dịch chỉ trong một phần giây. Khi mở rộng quy mô, nó sẽ điều chỉnh dung lượng theo từng bước nhỏ để cung cấp vừa đủ lượng tài nguyên mà ứng dụng cần. Bạn không cần quản lý dung lượng nào cả và chỉ phải trả cho dung lượng đang sử dụng. Amazon tuyên bố bạn có thể tiết kiệm tới 90% chi phí cơ sở dữ liệu của mình so với chi phí cung cấp dung lượng ở mức cao điểm. Amazon Aurora Serverless v2 tương thích với MySQL.

2. Amazon DynamoDB

Amazon DynamoDB là CSDL NoSQL được quản lý hoàn toàn, phi máy chủ, key-value, được thiết kế để chạy các ứng dụng hiệu suất cao ở mọi quy mô. DynamoDB cung cấp tính năng bảo mật tích hợp, sao lưu liên tục, sao chép tự động nhiều region, bộ nhớ đệm trong bộ nhớ và có các công cụ xuất dữ liệu.

3. Azure SQL Serverless

Serverless là một compute tier cho các cơ sở dữ liệu đơn lẻ trong Azure SQL, tự động phân chia tỷ lệ tính toán dựa trên nhu cầu khối lượng công việc và các hóa đơn cho lượng máy tính được sử dụng mỗi giây. Serverless compute tier cũng tự động ngắt CSDL trong khoảng thời gian không hoạt động khi chỉ thanh toán bộ nhớ và tự động tiếp tục lưu trữ CSDL khi hoạt động trở lại. Azure SQL Serverless là một phiên bản của Microsoft SQL Server.

4. Azure Synapse Serverless

Azure Synapse Serverless cho phép bạn sử dụng T-SQL để truy vấn dữ liệu từ data lake trong Azure thay vì cung cấp tài nguyên trước thời hạn. Bạn chỉ cần trả cho các truy vấn được thực thi và việc định giá dựa trên lượng dữ liệu được xử lý bởi mỗi truy vấn.

5. CockroachDB Serverless

CockroachDB Serverless là một tùy chọn miễn phí, hiện đang trong giai đoạn thử nghiệm trên đám mây Cockroach Labs tương thích với PostgreSQL. Nó có thể sử dụng các cụm khả dụng cao trên AWS hoặc Google Cloud trong cấu hình nhiều người thuê (multi-tenant configuration). Giới hạn cho việc sử dụng miễn phí là 250 triệu đơn vị yêu cầu mỗi tháng và 5GB bộ nhớ. Ngoài ra, có một số khoản phí như là 1 đô la cho 1 GiB mỗi tháng và 1 đô la cho 10 triệu RU mỗi tháng.

6. Fauna

Fauna là một CSDL giao dịch linh hoạt, thân thiện với nhà phát triển, được phân phối dưới dạng một API đám mây phi máy chủ an toàn và có thể mở rộng với GraphQL gốc. Fauna kết hợp tính linh hoạt của hệ thống NoSQL với khả năng truy vấn quan hệ và giao dịch của SQL. Fauna hỗ trợ cả Ngôn ngữ truy vấn Fauna và GraphQL.

7. Google Firebase

Cloud Firestore là một NoSQL phi máy chủ, CSDL hướng document, và là một phần của Google Firebase. Khác với SQL, Cloud Firestore không có bảng hoặc hàng. Thay vào đó, bạn lưu trữ dữ liệu trong các tài liệu, được sắp xếp thành các bộ sưu tập (collections). Mỗi tài liệu chứa một tập hợp các cặp key-value.

Cloud Firestore được tối ưu hóa để lưu trữ các bộ sưu tập lớn của các tài liệu nhỏ. Tất cả các tài liệu phải được lưu trữ trong bộ sưu tập. Tài liệu có thể chứa các tập hợp con và các đối tượng lồng nhau, cả hai đều có thể bao gồm các trường nguyên thủy như chuỗi hoặc các đối tượng phức tạp như danh sách.

8. PlanetScale

PlanetScale là một nền tảng CSDL phi máy chủ, tương thích với MySQL được cung cấp bởi Vitess. Vitess là một hệ thống phân cụm CSDL mở rộng theo chiều ngang của MySQL (cũng như Percona và MariaDB). Vitess cũng hỗ trợ Slack, Square, GitHub, YouTube, v.v.

9. Redis Enterprise Cloud

Redis Enterprise Cloud là CSDL trong bộ nhớ, phi máy chủ, được quản lý hoàn toàn, chạy trên AWS, Azure và Google Cloud. Enterprise modules có thể mở rộng Redis từ kho lưu trữ cấu trúc dữ liệu, key-value đơn giản để hỗ trợ nhiều mô hình và chức năng dữ liệu, bao gồm tìm kiếm, đồ thị, JSON, time series và AI. Redis Enterprise tự động phân loại và cân bằng trong khi vẫn duy trì độ trễ thấp (low latency) và thông lượng cao (high throughput) cho việc tải giao dịch. Redis on Flash, một tính năng của Redis Enterprise, có thể đặt hot data được truy cập thường xuyên vào bộ nhớ và các colder values trong Flash hoặc bộ nhớ liên tục, chẳng hạn như Intel Optane DC.

Kết luận

CSDL phi máy chủ cung cấp khả năng lưu trữ và truy xuất dữ liệu dựa trên đám mây, có khả năng mở rộng cao mà không yêu cầu bạn cung cấp CPU hoặc bộ nhớ trước thời hạn. Tất cả các cơ sở dữ liệu phi máy chủ đều cung cấp mô hình trả tiền theo dung lượng sử dụng (pay-for-what-you-use) và một số ít miễn phí cho các CSDL nhỏ với tốc độ hạn chế.

Về VTI Cloud

VTI Cloud là Đối tác cấp cao (Advanced Consulting Partner) của AWS, với đội ngũ hơn 50+ kỹ sư về giải pháp được chứng nhận bởi AWS. Với mong muốn hỗ trợ khách hàng trong hành trình chuyển đổi số và dịch chuyển lên đám mây AWS, VTI Cloud tự hào là đơn vị tiên phong trong việc tư vấn giải pháp, phát triển phần mềm và triển khai hạ tầng AWS cho khách hàng tại Việt Nam và Nhật Bản.

Xây dựng các kiến trúc an toàn, hiệu suất cao, linh hoạt, và tối ưu chi phí cho khách hàng là nhiệm vụ hàng đầu của VTI Cloud trong sứ mệnh công nghệ hóa doanh nghiệp.

Liên hệ với chúng tôi: Tại đây

Nguồn: Martin Heller — từ infoworld.com

 

 

Related news

what’s up at VTI