
Giới thiệu
Cuộc chiến với khả năng mở rộng của Database: Khi bắt đầu hành trình này, chúng tôi sớm nhận ra rằng hạ tầng database hiện tại không còn đủ sức đáp ứng lượng dữ liệu tăng đột biến. Nhu cầu sử dụng dịch vụ tăng theo cấp số nhân, và chúng tôi cần một database có khả năng scale-out và mở rộng linh hoạt mà không bị giới hạn.
Dữ liệu phân tán giữa nhiều Data Center: Là một tổ chức tài chính, chúng tôi không được phép gặp downtime hay mất dữ liệu, dù chỉ trong thời gian ngắn. Để đảm bảo tính sẵn sàng của dữ liệu, chúng tôi cần một giải pháp có thể chạy đồng thời trên Primary Data Center (DC) và Disaster Recovery (DR) site. Không chỉ vậy, hệ thống còn phải có khả năng mở rộng thêm Data Center trong tương lai, mà không làm gián đoạn hoạt động kinh doanh.

Mở rộng lên Azure Cloud: Để mở rộng khả năng vận hành toàn cầu và nâng cao mức độ sẵn sàng của dữ liệu, chúng tôi quyết định tận dụng sức mạnh của Azure Cloud. Với khả năng multi-cloud support vốn có, Cassandra trở thành lựa chọn phù hợp một cách tự nhiên cho hướng đi này. Chúng tôi triển khai Cassandra cluster trên Azure và kết nối trực tiếp với các cluster on-premises hiện tại thông qua các kênh truyền thông bảo mật, đảm bảo dữ liệu có thể được mở rộng và truy cập ổn định trên môi trường hybrid.
So sánh các lựa chọn Database
Bước tiếp theo là đánh giá các lựa chọn Database trên thị trường, chúng tôi bắt đầu xem xét nhiều giải pháp database đang có trên thị trường. Phạm vi đánh giá bao gồm cả Relational Database và NoSQL Database, với các tiêu chí chính như: khả năng mở rộng (scalability), tính sẵn sàng cao (high availability), khả năng chịu lỗi (fault tolerance), mức độ thuận tiện khi triển khai (ease of deployment).
Quá trình so sánh: Trong quá trình đánh giá và đối chiếu, chúng tôi nhận thấy rằng phần lớn Relational Database truyền thống gặp khó khăn khi xử lý Big Data và môi trường phân tán (distributed environment). Chúng thường khó mở rộng theo chiều ngang (horizontal scaling) và có giới hạn khi xử lý khối lượng lớn truy vấn đọc/ghi đồng thời.

SQL vs NoSQL (github.com)
Cassandra xuất hiện – và thay đổi cuộc chơi
Cassandra tạo ấn tượng mạnh với chúng tôi vì nhiều lý do: Kiến trúc phân tán (distributed) không có master (masterless architecture) → dễ dàng scale-out mà không tạo ra single point of failure, hỗ trợ High Availability, không downtime ngay cả khi xảy ra sự cố phần cứng, mô hình decentralized giúp replicate dữ liệu giữa nhiều Data Center một cách đơn giản, đảm bảo an toàn và liên tục dữ liệu trên toàn hệ thống.

Tính linh hoạt của Schema: Một điểm quan trọng khác là khả năng linh hoạt về schema. Ứng dụng của chúng tôi có thể tận dụng sức mạnh của Wide-column Database nhờ khả năng thêm hoặc loại bỏ column rất dễ dàng khi yêu cầu thay đổi. Không cần thiết kế schema cứng, phù hợp với hệ thống thay đổi liên tục.
Hiệu năng (Performance)L Wide-column Database được tối ưu hóa cho workload thiên về read-heavy. Mô hình cột rộng cho phép lưu trữ & truy xuất dữ liệu lớn một cách hiệu quả, rất phù hợp với hệ thống cần throughput cao. Cassandra giúp chúng tôi future-proof, sẵn sàng cho nhiều use case từ các Functional Team khác nhau.
Khả năng mở rộng (Scalability): Một trong những yêu cầu then chốt là hệ thống phải có thể deploy trên cả DC/DR, đồng thời mở rộng thêm node vào cluster mà không ảnh hưởng đến hoạt động kinh doanh hiện tại. Wide-column Database được thiết kế để scale dễ dàng bằng cách phân phối dữ liệu trên nhiều node.
Tính sẵn sàng cao (Availability): Chúng tôi hướng đến mô hình Active/Active cho PDC/DRC. Wide-column Database hỗ trợ kiến trúc high availability, gồm cả Active-Active và Active-Passive replication.
Hỗ trợ JSON document: Dù Cassandra thuộc nhóm Wide-column DB, nhưng nó vẫn hỗ trợ mô hình dữ liệu linh hoạt như Document Database thông qua wide rows & collections. Điều này cho phép chúng tôi lưu JSON tương tự MongoDB khi cần thiết.
Khả năng xử lý throughput đọc/ghi cao với độ trễ thấp (low latency) chính là "điểm xoay chuyển cuộc chơi". Trong lĩnh vực tài chính, nơi dữ liệu cần được xử lý gần real-time, hiệu năng vượt trội của Cassandra giúp nó trở thành lựa chọn số 1 cho Performance & Speed.
Image Diagram - Simplifying the Decision:

Kết luận
Lý do chúng tôi chọn Cassandra thay vì các giải pháp khác:
- Chúng tôi ưu tiên NoSQL Database đa dụng hơn là Document Database. Cassandra có thể lưu JSON document nhờ khả năng hỗ trợ JSON, đồng thời cũng có thể sử dụng như Key-Value storage trong nhiều trường hợp.
- Redis vẫn đang được sử dụng cùng với K8S deployment như một giải pháp caching cho một số use case nội bộ. Tuy nhiên, Redis chỉ được xem là cache support component / microservice, không phải giải pháp Global Database.
- Với kiến trúc master-less Ring, Cassandra khi được triển khai và sizing đúng có thể trở thành một Always-On Database trên nhiều Data Center song song (bao gồm cả Cloud DC). Điều này hỗ trợ mô hình DR & HA (active-active) do tất cả DC đều ở trạng thái active, dữ liệu được replicate liền mạch giữa DCs nhờ distributed architecture của Cassandra.
Cuối cùng, hành trình đi tìm database tối ưu đã đưa chúng tôi đến với Cassandra. Khả năng scale-out linh hoạt, phân phối dữ liệu giữa nhiều DC một cách mượt mà, thay đổi schema mà không cần downtime khiến Cassandra trở thành lựa chọn phù hợp cho hệ thống tài chính của chúng tôi. Với Cassandra as a Service, chúng tôi đảm bảo High Availability – Scalability – Continuous Operation, mang đến trải nghiệm ổn định và tối ưu nhất cho khách hàng.
Bài viết được thực hiện bởi Hieu Nguyen – Platform Team Leader