Grab tái thiết kế lưu trữ Counter Service, giảm 50% độ trễ P99
Grab đã di chuyển dịch vụ Counter Service lưu lượng lớn từ cơ sở dữ liệu wide column sang Aerospike thông qua trừu tượng hóa lưu trữ, shadow traffic, xác thực tính toàn vẹn dữ liệu và di chuyển lưu lượng dần dần. Mô hình dữ liệu mới gộp các khung thời gian thành bản ghi dạng map, giúp giảm khoảng 50% độ trễ đọc P99, dung lượng đĩa từ 3 TB xuống 1 TB và chi phí mỗi node giảm 45-50%.
Grab vừa công bố quá trình di chuyển dịch vụ Counter Service — hệ thống đếm lưu lượng cực lớn — từ một cơ sở dữ liệu wide column sang Aerospike. Kết quả thu được khá ấn tượng: độ trễ đọc P99 trong môi trường production giảm khoảng 50%, dung lượng đĩa tiêu thụ giảm từ 3 TB xuống còn 1 TB, và chi phí trên mỗi node giảm từ 45% đến 50%.
Đây là một bài học đáng chú ý cho các đội kỹ thuật tại Việt Nam đang vận hành những dịch vụ có lưu lượng truy cập cao nhưng lại phụ thuộc vào các hệ quản trị cơ sở dữ liệu truyền thống.
Bài toán đặt ra với Counter Service
Counter Service của Grab đảm nhiệm việc đếm và tổng hợp nhiều loại chỉ số theo thời gian thực, phục vụ các tính năng như theo dõi chuyến đi, thống kê khuyến mãi hay hạn mức sử dụng. Với quy mô hoạt động trải rộng khắp Đông Nam Á, khối lượng đọc ghi của dịch vụ này là rất lớn.
Cơ sở dữ liệu wide column trước đây tuy đáp ứng được yêu cầu ban đầu, nhưng dần bộc lộ hạn chế về độ trễ và chi phí lưu trữ khi dữ liệu phình to. Mỗi khung thời gian được lưu thành một bản ghi riêng, khiến số lượng bản ghi tăng theo cấp số nhân và kéo theo chi phí vận hành leo thang.
Chiến lược di chuyển an toàn
Grab không thực hiện thay thế đột ngột mà áp dụng một quy trình nhiều lớp nhằm giảm thiểu rủi ro:
- Trừu tượng hóa lưu trữ (Storage Abstraction): tách biệt lớp logic nghiệp vụ khỏi lớp lưu trữ, cho phép thay đổi backend mà không cần viết lại toàn bộ mã nguồn.
- Shadow Traffic: chạy song song hai hệ thống, ghi cùng lúc vào cả cơ sở dữ liệu cũ và Aerospike để đối chiếu kết quả.
- Xác thực tính toàn vẹn dữ liệu (Data Parity Validation): so sánh dữ liệu giữa hai hệ thống nhằm phát hiện sai lệch trước khi chuyển đổi chính thức.
- Di chuyển lưu lượng dần dần (Gradual Traffic Migration): tăng tỷ lệ truy vấn sang hệ thống mới theo từng bước, có thể rollback nhanh nếu phát sinh sự cố.
Cách tiếp cận này giúp Grab kiểm soát rủi ro ở mọi giai đoạn, đồng thời đảm bảo dịch vụ không bị gián đoạn trong suốt quá trình chuyển đổi.
Mô hình dữ liệu mới: gộp khung thời gian thành map
Điểm cốt lõi trong thiết kế lại nằm ở mô hình dữ liệu. Thay vì lưu mỗi khung thời gian thành một bản ghi riêng biệt, Grab gộp chúng thành các bản ghi dạng map-based record.
Cách tổ chức này mang lại nhiều lợi ích:
- Giảm mạnh số lượng bản ghi cần truy xuất, từ đó giảm độ trễ đọc.
- Tận dụng tốt hơn khả năng đọc ghi nhanh của Aerospike, vốn được thiết kế cho các workload yêu cầu độ trễ thấp.
- Giảm dung lượng lưu trữ nhờ hạn chế trùng lặp khóa và metadata.
Việc gộp các khung thời gian vào một bản ghi duy nhất giúp Grab vừa tiết kiệm dung lượng, vừa tăng tốc truy vấn mà không phải hy sinh tính linh hoạt của dữ liệu.
Ý nghĩa với cộng đồng kỹ thuật Việt Nam
Câu chuyện của Grab là ví dụ điển hình cho thấy việc chọn sai mô hình dữ liệu có thể khiến chi phí hạ tầng tăng vọt theo thời gian, ngay cả khi hệ thống vẫn hoạt động ổn định.
Với các startup và doanh nghiệp công nghệ tại Việt Nam đang xây dựng dịch vụ có lưu lượng lớn, bài học rút ra là:
- Nên thiết kế lớp trừu tượng hóa lưu trữ ngay từ đầu để dễ dàng thay đổi backend khi cần.
- Áp dụng shadow traffic và kiểm tra toàn vẹn dữ liệu trong mọi cuộc di chuyển hệ thống quan trọng.
- Cân nhắc các cơ sở dữ liệu chuyên biệt như Aerospike, Redis hay ScyllaDB cho workload yêu cầu độ trễ cực thấp, thay vì chỉ dựa vào các giải pháp phổ thông.
Việc tối ưu chi phí hạ tầng không chỉ là câu chuyện kỹ thuật, mà còn ảnh hưởng trực tiếp đến khả năng cạnh tranh của doanh nghiệp trong bối cảnh chi phí cloud ngày càng trở thành gánh nặng đáng kể.


