Nghiên cứu điển hình của MaiCoin: Nâng cấp blue/green từ Amazon ElastiCache Redis lên Valkey

Tác giả: Charles Hsiao, Johnny Yu, HC Lo, Cathy Lai, and Qu Chen
Ngày phát hành: 22 JAN 2026
Chuyên mục: Advanced (300), Amazon ElastiCache, Customer Solutions, Technical How-to

Đây là bài đăng của khách mời bởi Charles Hsiao, Kỹ sư độ tin cậy trang web (SRE) tại MaiCoin, hợp tác với AWS.

MaiCoin là một nền tảng môi giới và sàn giao dịch tiền điện tử hàng đầu tại Đài Loan. Nền tảng này hỗ trợ các tài sản chính như Bitcoin (BTC), Ethereum (ETH), Litecoin (LTC), Tether (USDT) và USD Coin (USDC), cùng nhiều loại khác. Nền tảng MaiCoin trước đây chạy trên một tập hợp các cụm triển khai Amazon ElastiCache trên Redis OSS.

Valkey là một kho dữ liệu key-value mã nguồn mở, hiệu suất cao, được quản lý bởi Linux Foundation và được hỗ trợ bởi hơn 40 công ty. Valkey là một giải pháp thay thế trực tiếp cho Redis OSS, được phát triển bởi các nhà đóng góp và bảo trì Redis OSS lâu năm, và đã được áp dụng nhanh chóng kể từ khi dự án ra đời vào tháng 3 năm 2024. Amazon Web Services (AWS) đang tích cực đóng góp cho dự án Valkey. Với sự quan tâm ngày càng tăng của thị trường đối với Valkey, các tổ chức bao gồm MaiCoin đang tìm kiếm các phương pháp di chuyển và thực tiễn tốt nhất đáng tin cậy.

Amazon ElastiCache for Valkey cung cấp một dịch vụ được quản lý hoàn toàn giúp đơn giản hóa quá trình chuyển đổi này, mang lại khả năng tự động chuyển đổi dự phòng, bảo mật tích hợp và tích hợp AWS liền mạch. Trong bài đăng này, chúng tôi đi sâu vào các trường hợp sử dụng kinh doanh của MaiCoin và các chiến lược triển khai blue/green tự quản lý của họ cho phép di chuyển từ Amazon ElastiCache for Redis sang ElastiCache for Valkey với thời gian ngừng hoạt động tối thiểu. Các chiến lược này mang lại lợi ích từ các khả năng được quản lý hoàn toàn của ElastiCache với chi phí thấp hơn 20–33%.

Tổng quan về phương pháp di chuyển được quản lý hiện tại của ElastiCache for Valkey

Amazon ElastiCache hiện cung cấp một nâng cấp tại chỗ được quản lý từ Redis OSS lên Valkey. Trong phương pháp nâng cấp này, một tập hợp các node Valkey mới được tạo trong cùng một cụm, sau đó sao chép dữ liệu từ các node chính hiện tại đang chạy trên Redis OSS. Sau khi quá trình sao chép dữ liệu hoàn tất, dịch vụ thực hiện chuyển đổi dự phòng, thăng cấp bản sao Valkey mới thành chính, cập nhật điểm cuối DNS của cụm ElastiCache để trỏ đến các node Valkey mới và xóa các node Redis OSS cũ khỏi cụm.

Bạn có thể sử dụng phương pháp này để nâng cấp engine từ Redis OSS lên Valkey mà không cần quản lý quá trình nâng cấp từ phía ứng dụng. Là một phần của quá trình nâng cấp này, các kết nối ứng dụng của bạn sẽ tự động được chuyển hướng đến các node mới đang chạy Valkey.

Nghiên cứu điển hình của MaiCoin: Những thách thức thực tế khi di chuyển Valkey trong ngành tiền điện tử

Trong giao dịch và thanh toán tiền điện tử, độ trễ ở mức mili giây và khả năng sẵn sàng liên tục không phải là tùy chọn—chúng là yếu tố sống còn. Khi MaiCoin chuyển đổi các khối lượng công việc caching cốt lõi từ Amazon ElastiCache for Redis OSS sang ElastiCache for Valkey, chúng tôi đã đối mặt với những thách thức bắt nguồn từ động lực thị trường và kỳ vọng về độ tin cậy trong một hệ thống phân tán. Phần sau đây tóm tắt các ràng buộc kinh doanh chính, đánh đổi kỹ thuật, phương pháp xác thực và kết quả kinh doanh của chúng tôi.

MaiCoin đã đối mặt với một số ràng buộc kinh doanh khi di chuyển từ ElastiCache for Redis OSS sang ElastiCache for Valkey. Như đã đề cập ở trên, việc di chuyển khó khăn hơn trong lĩnh vực tiền điện tử do nhu cầu về khả năng sẵn sàng và độ trễ mili giây. Các ràng buộc bổ sung bao gồm:

  • Tính chất thị trường tiền điện tử hoạt động 24/7 – Không giống như các thị trường chứng khoán truyền thống đóng cửa hàng ngày hoặc vào cuối tuần, thị trường tiền điện tử hoạt động liên tục. Ngay cả với các cửa sổ bảo trì theo lịch trình, việc di chuyển phải tính đến hoạt động giao dịch trực tiếp để tránh làm gián đoạn lòng tin của người dùng.
  • Ngân sách độ trễ chặt chẽ – Các mục tiêu độ trễ P95 và P99 được đo bằng mili giây ở mức một chữ số thấp, để lại rất ít không gian cho độ trễ bổ sung do bắt tay kết nối TLS, cân bằng lại slot hoặc định tuyến lưu lượng truy cập giữa các AZ.
  • Khả năng chịu tải đột biến – Biến động thị trường có thể gây ra sự tăng đột biến về thông lượng và phân phối publish-subscribe (pub-sub). Lớp cache phải duy trì ổn định không chỉ dưới tải trung bình mà còn dưới tải cao điểm.
  • Sẵn sàng tuân thủ quy định và kiểm toán – Cần có khả năng truy xuất nguồn gốc mạnh mẽ của các thay đổi cấu hình, cơ sở hạ tầng có thể tái tạo và lưu giữ dữ liệu rõ ràng để đáp ứng các tiêu chuẩn quản trị nội bộ và quy định.

MaiCoin đã đánh giá hai chiến lược di chuyển, nâng cấp tại chỗ dịch vụtriển khai blue/green tự quản lý, mỗi chiến lược có những đánh đổi riêng biệt.

Nâng cấp tại chỗ dịch vụ mang lại sự đơn giản: một điểm cuối cụm duy nhất, thay đổi ứng dụng tối thiểu và chuyển đổi nhanh chóng. Tuy nhiên, nó không cung cấp cửa sổ xác thực trực tiếp và thiếu khả năng khôi phục, điều này làm tăng độ phức tạp của việc phục hồi.

Ngược lại, chiến lược triển khai blue/green gây ra chi phí vận hành cao hơn và tạm thời làm tăng gấp đôi chi phí hoạt động. Nhưng nó mang lại những lợi thế rõ ràng về kiểm soát, an toàn và khả năng quan sát. Nó cho phép xác thực cô lập, chuyển đổi lưu lượng truy cập dần dần và một đường dẫn khôi phục đáng tin cậy nếu có bất thường xảy ra sau khi chuyển đổi.

Với tính chất quan trọng của các khối lượng công việc giao dịch và ví cần duy trì khả dụng 24/7 với ngân sách độ trễ chặt chẽ và tuân thủ các cuộc kiểm toán quy định, chúng tôi đã chọn triển khai blue/green. Cách tiếp cận này có nghĩa là chúng tôi giữ toàn quyền kiểm soát quá trình di chuyển, giảm thiểu rủi ro vận hành và có thể đảm bảo một đường dẫn khôi phục rõ ràng phù hợp với các tiêu chuẩn độ tin cậy của chúng tôi.

Để xác thực sự sẵn sàng của Valkey, chúng tôi đã chạy các bài kiểm tra hiệu năng toàn diện so sánh Redis 7.1.0, Valkey 7.2.6 và Valkey 8.0.1. Chúng tôi đã sử dụng redis-benchmark để đo độ trễ và thông lượng ở cấp lệnh, và memtier_benchmark để kiểm tra đồng thời với khối lượng công việc hỗn hợp, duy trì. Chúng tôi đã đo độ trễ (trung bình, p50, p95 và p99), thông lượng (TPS) và hiệu quả bộ nhớ (RSS, bộ nhớ đã sử dụng và tỷ lệ phân mảnh). Các kịch bản kiểm tra bao gồm GET/SET với các mục 8, 128 và 2048 byte, các thao tác danh sách (LPUSHLPOP), các thao tác tập hợp (SADDSPOP), các tập hợp được sắp xếp (ZADDZPOPMIN), pipelining (-P 16), tải đọc/ghi hỗn hợp trong 10 phút và kiểm tra hiệu quả bộ nhớ với 1 triệu khóa.

Trên tất cả các khối lượng công việc, Valkey 8.0.1 đạt thông lượng cao nhất, độ trễ thấp nhất (p50–p99) và hiệu quả bộ nhớ tốt nhất, với Valkey 7.2.6 theo sát phía sau. Trong chế độ pipelining, Valkey dẫn đầu về thông lượng SET; trong các bài kiểm tra tải duy trì, Redis đôi khi đạt TPS cao hơn một chút nhưng với độ trễ p99 tệ hơn. Nhìn chung, Valkey 8.0.1 cung cấp độ trễ đuôi ổn định nhất và phân mảnh bộ nhớ thấp nhất, cho thấy sự sẵn sàng cho sản xuất.

Để đồng bộ hóa dữ liệu, chúng tôi đã sử dụng RedisShake với đồng bộ hóa đầy đủ (SCAN) sau đó là cập nhật liên tục thông qua KSN.

Chúng tôi đã đặt rdb_restore_command_behavior=rewrite để ngăn chặn xung đột khóa; thời gian tồn tại (TTLs) được bảo toàn, và việc chạy cả hai chế độ cho phép đồng bộ hóa lại mượt mà sau khi bị gián đoạn.

Tổng quan giải pháp di chuyển blue/green từ ElastiCache Redis sang ElastiCache Valkey

Triển khai blue/green là một kỹ thuật giúp giảm thời gian ngừng hoạt động và rủi ro trong quá trình di chuyển bằng cách duy trì hai môi trường giống hệt nhau được gọi là bluegreen. Trong kịch bản di chuyển này, blue đại diện cho cụm ElastiCache Redis hiện tại, và green đại diện cho cụm ElastiCache Valkey mục tiêu. Bất cứ lúc nào, chỉ một môi trường phục vụ lưu lượng sản xuất một cách tích cực, trong khi môi trường còn lại đóng vai trò là môi trường staging để đồng bộ hóa và xác thực dữ liệu. Cách tiếp cận này cho phép chuyển đổi từ ElastiCache for Redis OSS sang ElastiCache for Valkey trong khi vẫn duy trì tính nhất quán của dữ liệu và gián đoạn dịch vụ tối thiểu.

RedisShake là một công cụ mã nguồn mở hỗ trợ Valkey được phát triển bởi tair-opensource tại Alibaba Cloud. Nó giúp bạn di chuyển dữ liệu giữa các cụm Redis và Valkey và cung cấp một số khả năng quan trọng: nó đồng bộ hóa dữ liệu theo thời gian thực, hoạt động trên các Region AWS khác nhau, hỗ trợ nhiều loại triển khai Redis và Valkey, và chạy với tác động tối thiểu đến hiệu suất của cụm nguồn của bạn.

RedisShake hỗ trợ triển khai blue/green thông qua engine đồng bộ hóa của nó. Công cụ này giữ cho dữ liệu của bạn nhất quán giữa cụm ElastiCache for Redis nguồn (môi trường blue) và cụm ElastiCache for Valkey mục tiêu (môi trường green). Nó sao chép dữ liệu tăng dần và duy trì đồng bộ hóa liên tục, vì vậy bạn có thể chuyển đổi lưu lượng truy cập giữa các môi trường một cách mượt mà khi bạn sẵn sàng.

Chúng tôi đã sử dụng các chế độ di chuyển chính sau:

  • Chế độ PSYNC – Triển khai giao thức đồng bộ hóa một phần tích hợp của Redis, thiết lập các kết nối sao chép cho các di chuyển sản xuất trực tiếp với đồng bộ hóa dữ liệu liên tục
  • Chế độ RDB – Xử lý các tệp snapshot Redis Database (RDB) với các biểu diễn nhị phân nén, lý tưởng cho các di chuyển hàng loạt theo lịch trình trong các cửa sổ bảo trì
  • Chế độ SCAN – Sử dụng các lệnh SCAN của Redis để duyệt qua không gian khóa mà không bị chặn, hoàn hảo cho các di chuyển sản xuất ít tác động với mức tiêu thụ tài nguyên được kiểm soát

Điều kiện tiên quyết

Trước khi thực hiện di chuyển này, bạn cần:

  • Cung cấp cụm nguồn source-elasticache và cụm đích target-elasticache trong tài khoản AWS của bạn với cùng cấu hình, chẳng hạn như virtual private cloud (VPC) và loại instance, ngoại trừ loại hoặc phiên bản engine.
  • Thiết lập một instance Amazon Elastic Compute Cloud (Amazon EC2) di chuyển trong cùng VPC cho phép truy cập kết nối đến cả cụm nguồn và cụm đích.
  • Yêu cầu nhóm dịch vụ Amazon ElastiCache bật PSYNC trên cả cụm nguồn và cụm đích.

Hướng dẫn giải pháp

Để thực hiện di chuyển, hoàn thành các bước sau:

  1. Tải xuống và cài đặt RedisShake trên instance EC2 di chuyển:
    bash wget tar -xzf redis-shake-linux-amd64.tar.gz ls -la redis-shake
  2. Thiết lập cấu hình bằng cách sử dụng tệp cấu hình sau (shake.toml):
[sync_reader]
cluster = false
address = "<source-elasticache>:6379"
username = ""
password = ""
tls = true
sync_rdb = true
sync_aof = true
[redis_writer]
cluster = false
address = "<target-elasticache>:6379"
username = ""
password = ""
tls = true
[advanced]
dir = "data"
ncpu = 4
[log]
file = "redis-shake.log"
level = "info"
keep_days = 7

Các tham số cấu hình:

  • sync_reader: Cấu hình cụm ElastiCache Redis nguồn
  • redis_writer: Cấu hình cụm ElastiCache Valkey đích
  • tls: Đặt thành true cho các kết nối AWS ElastiCache (bắt buộc)
  • sync_rdbsync_aof: Bật đồng bộ hóa snapshot và thời gian thực
  • cluster: Đặt thành true nếu sử dụng chế độ cụm được bật

Thiết lập và thực hiện di chuyển:
bash mkdir -p data redis-cli -h <source-elasticache> -p 6379 ping ./redis-shake shake.toml

Giám sát tiến độ:
bash tail -f redis-shake.log grep -i "sync" redis-shake.log | tail -10

Xác minh quá trình di chuyển bằng một script xác minh:

#!/bin/bash
echo "=== Migration Verification ==="
LOCAL_KEYS=$(redis-cli -h <source-elasticache> -p 6379 --tls DBSIZE)
echo "Source Redis Keys: $LOCAL_KEYS"
echo "Sample Data Verification:"
redis-cli -h <source-elasticache> -p 6379 --tls GET user:1001:name
redis-cli -h <source-elasticache> -p 6379 --tls HGET product:2001 name
echo "Target Verification:"
redis-cli -h <target-elasticache> -p 6379 --tls DBSIZE
redis-cli -h <target-elasticache> -p 6379 --tls GET user:1001:name
if [ -f "redis-shake.log" ]; then
echo "Migration Status:"
tail -3 redis-shake.log
fi

Các lựa chọn thay thế đã xem xét

Redis Input/Output Tools (RIOT) là một công cụ mã nguồn mở khác để di chuyển dữ liệu giữa các instance Redis. Được phát triển bởi Redis Ltd, công cụ dòng lệnh dựa trên Java này giúp bạn di chuyển và đồng bộ hóa dữ liệu trên các môi trường Redis khác nhau. RIOT cung cấp một số tính năng chính: nó có thể sao chép dữ liệu theo thời gian thực, hoạt động trên các nhà cung cấp đám mây khác nhau, hỗ trợ các loại thiết lập Redis khác nhau và có tác động tối thiểu đến cụm Redis nguồn của bạn trong quá trình di chuyển. RIOT có thể giúp triển khai blue/green bằng cách liên tục sao chép dữ liệu từ cụm ElastiCache for Redis OSS nguồn (môi trường blue) sang cụm ElastiCache for Valkey đích (môi trường green). Việc đồng bộ hóa liên tục này có nghĩa là bạn có thể chuyển đổi lưu lượng truy cập giữa các môi trường một cách mượt mà.

RIOT đã không còn được duy trì kể từ tháng 10 năm 2025, và do đó nó không được chọn làm giải pháp cho kịch bản di chuyển này.

Kết quả kinh doanh (tại sao điều này quan trọng)

MaiCoin đã đạt được những cải tiến kinh doanh sau:

  • Hiệu quả chi phí – Valkey mang lại khoản tiết kiệm đáng kể so với Redis OSS—khoảng 20% thấp hơn đối với các cụm cache tự thiết kế của ElastiCache và lên đến 33% thấp hơn đối với ElastiCache Serverless. Kết hợp với các loại instance dựa trên AWS Graviton, nó giảm chi phí vận hành hàng năm mà không làm giảm hiệu suất.
  • An toàn vận hành – Chiến lược blue/green, kết hợp với các kiểm tra tính nhất quán có cấu trúc, cung cấp một khuôn khổ di chuyển có thể lặp lại và kiểm toán được cho các nâng cấp trong tương lai.
  • Dự phòng hiệu suất – Độ trễ đuôi thấp hơn và việc sử dụng bộ nhớ được cải thiện giúp tăng cường khả năng phục hồi của hệ thống trong thời kỳ biến động thị trường.
  • Khả năng chống chịu trong tương lai – Với một đường dẫn khôi phục đã được chứng minh và cung cấp cơ sở hạ tầng dựa trên mã, việc mở rộng cụm và nâng cấp phiên bản trở nên dễ dự đoán và ít rủi ro.

Kết luận

Bài đăng này đã khám phá các cách tiếp cận thực tế của MaiCoin sử dụng RedisShake để di chuyển từ Amazon ElastiCache for Redis OSS sang Amazon ElastiCache for Valkey bằng cách sử dụng các chiến lược triển khai blue/green. RedisShake cung cấp một đường dẫn di chuyển đáng tin cậy với đồng bộ hóa dữ liệu liên tục, vì vậy bạn có thể xác thực môi trường đích của mình trước khi chuyển đổi lưu lượng sản xuất. Nó vượt trội trong các di chuyển quy mô lớn với khả năng ghi nhật ký chi tiết trong khi duy trì thời gian ngừng hoạt động gần như bằng không trong quá trình di chuyển.

Chìa khóa để di chuyển thành công là lập kế hoạch phù hợp: thiết lập quyền truy cập mạng giữa các cụm, bật TLS trên cả hai điểm cuối, giám sát độ trễ sao chép và xác thực kỹ lưỡng trước khi chuyển đổi lưu lượng truy cập.

Để bắt đầu, hãy đánh giá môi trường hiện tại và kích thước tập dữ liệu của bạn, sau đó kiểm tra quy trình trong môi trường phi sản xuất trước. Khả năng đồng bộ hóa liên tục của RedisShake mang lại cho bạn sự tự tin để xác thực kỹ lưỡng trước khi chuyển đổi lưu lượng sản xuất.


Về tác giả


Charles Hsiao
Charles là Kỹ sư độ tin cậy trang web (SRE) tại MaiCoin với trọng tâm chính là độ tin cậy, khả năng quan sát và tối ưu hóa chi phí. Anh ấy đã từng là diễn giả khách mời tại AWS Summit, DevOpsDays, KubeSummit và Hello World Dev Conferences. Anh ấy là một người tin tưởng mạnh mẽ vào tiềm năng của blockchain trong việc thúc đẩy sự cởi mở và hòa nhập trong ngành tài chính.


Cathy Lai
Cathy là Chuyên gia GTM Cơ sở dữ liệu trong nhóm Chuyên gia Toàn cầu của AWS và là chuyên gia kỹ thuật về các giải pháp cơ sở dữ liệu và AI tạo sinh. Cô chịu trách nhiệm thúc đẩy việc áp dụng các dịch vụ cơ sở dữ liệu của AWS cho các khách hàng doanh nghiệp và nhà phát triển, đồng thời kiến trúc các giải pháp có khả năng mở rộng tích hợp các khả năng AI tạo sinh.


HC Lo
HC Lo là Kiến trúc sư Giải pháp tại AWS, tập trung vào lĩnh vực FinTech. Dựa trên nền tảng sâu rộng về phát triển phần mềm, công nghệ container và vận hành đám mây, anh ấy giúp khách hàng tối ưu hóa hệ thống của họ bằng cách sử dụng Khung kiến trúc tốt (Well Architected Framework). Anh ấy làm việc chặt chẽ với khách hàng để thúc đẩy cải tiến liên tục về bảo mật, khả năng phục hồi và tối ưu hóa chi phí dựa trên dữ liệu và kinh nghiệm thực tế.


Johnny Yu
Johnny là Kiến trúc sư Giải pháp Dữ liệu chuyên thiết kế các kiến trúc dữ liệu hiệu suất cao, có khả năng mở rộng và đàn hồi. Anh ấy xây dựng các giải pháp trên các cơ sở dữ liệu quan hệ và NoSQL, tối ưu hóa các đường ống dữ liệu và đảm bảo các hệ thống mở rộng theo nhu cầu kinh doanh.


Qu Chen
Qu là kỹ sư phát triển phần mềm và chuyên gia kỹ thuật về công nghệ Amazon Cloud và cơ sở dữ liệu trong bộ nhớ. Anh ấy chịu trách nhiệm xây dựng và duy trì Amazon ElastiCache for Valkey, Redis OSS và Memcached cũng như Amazon MemoryDB trong khi cung cấp trải nghiệm khách hàng tốt nhất. Ngoài ra, anh ấy là một người đóng góp tích cực trong cộng đồng Valkey mã nguồn mở.