0
0
Lập trình
Thaycacac
Thaycacac thaycacac

Khám Phá Chiến Lược Lưu Trữ Media Của Canva và Hành Trình Chuyển Đổi Sang DynamoDB

Đăng vào 4 ngày trước

• 3 phút đọc

Giới Thiệu Về Canva

Canva là một công cụ thiết kế trực tuyến nổi tiếng, được hàng triệu người trên toàn cầu ưa chuộng nhờ vào giao diện thân thiện và kho tài nguyên đồ họa phong phú. Với hơn 100 triệu người dùng hoạt động hàng tháng50 triệu tệp media được tải lên mỗi ngày, Canva đã khẳng định vị thế của mình trong lĩnh vực thiết kế online.

Tuy nhiên, sự tăng trưởng ngoạn mục này cũng mang lại nhiều thách thức cho đội ngũ kỹ sư của Canva trong việc quản lý và lưu trữ lượng dữ liệu khổng lồ một cách hiệu quả nhằm đảm bảo trải nghiệm người dùng liền mạch.


Kiến Trúc Hiện Tại của Canva

Canva xây dựng trên một kiến trúc microservices linh hoạt. Service media là trung tâm của hệ thống này, chịu trách nhiệm quản lý thông tin liên quan đến tài nguyên media, bao gồm ID, chủ sở hữu, trạng thái và metadata. Service này xử lý hàng triệu yêu cầu đọc và ghi dữ liệu mỗi ngày.

Mặc dù service media hoạt động hiệu quả, Canva đã gặp phải một số vấn đề khi nhưng khi chuyển từ MySQL sang DynamoDB nhằm tăng cường khả năng lưu trữ và hiệu suất.

Những Thách Thức Khi Sử Dụng MySQL

Ban đầu, Canva lựa chọn MySQL trên AWS RDS để lưu trữ media. Nhưng do khối lượng dữ liệu ngày càng tăng, MySQL bộc lộ nhiều hạn chế:

  • Việc thay đổi cấu trúc bảng trở nên chậm chạp, có thể mất nhiều ngày.
  • Giới hạn kích thước volume EBS của MySQL (16TB) sắp được đạt.
  • Nâng cấp dung lượng lưu trữ có thể kéo theo độ trễ I/O cao.

Để tạm thời khắc phục tình trạng này, Canva đã áp dụng một số giải pháp như chuyển metadata sang cột JSON, phi chuẩn hóa bảng và sharding.

Quy Trình Chuyển Đổi Sang DynamoDB

Canva đã chọn DynamoDB làm nền tảng lưu trữ mới, với nhiều lợi thế như khả năng mở rộng linh hoạt và hiệu suất cao. Tuy nhiên, việc di chuyển dữ liệu từ MySQL sang DynamoDB cần được thực hiện mà không gây ảnh hưởng đến trải nghiệm người dùng.

Di Chuyển Dữ Liệu

Canva đã triển khai một chiến lược di chuyển tinh vi:

  1. Hàng đợi SQS: Sử dụng hàng đợi để gửi thông báo về các tệp media đã được tạo mới, cập nhật hoặc đọc.
  2. Ưu tiên dữ liệu: Các thông báo về việc tạo mới hoặc cập nhật được đặt vào hàng đợi ưu tiên cao, trong khi các thông báo đọc được đặt vào hàng đợi ưu tiên thấp.
  3. Quá trình quét và sao chép: Toàn bộ dữ liệu cũ và mới được quét và sao chép lần lượt sang DynamoDB.

Kiểm Tra và Đảm Bảo Tính Toàn Vẹn

Để đảm bảo tính nhất quán trong quá trình chuyển đổi, Canva tiến hành so sánh dữ liệu giữa MySQL và DynamoDB, và sử dụng MySQL như một phương án dự phòng trong giai đoạn đầu.

Kết Quả Sau Khi Chuyển Đổi

Việc chuyển đổi sang DynamoDB đã cải thiện đáng kể tốc độ phản hồi của dịch vụ media, giúp Canva phục vụ số lượng người dùng ngày càng tăng mà không gặp phải sự cố nào về hiệu suất. DynamoDB không chỉ cung cấp khả năng mở rộng để đáp ứng nhu cầu tăng trưởng mà còn giảm chi phí vận hành so với AWS RDS trước đây.

Bài Học Kinh Nghiệm

Hành trình chuyển đổi này đã dạy cho đội ngũ kỹ sư của Canva nhiều bài học quý giá về cách hiểu và tối ưu hóa việc truy cập dữ liệu trong hệ thống, cũng như tầm quan trọng của việc thử nghiệm trong môi trường production.


Kết Luận

Canva đã chứng minh khả năng vượt trội trong việc thích ứng với các thách thức về công nghệ, xây dựng một hệ thống lưu trữ media mạnh mẽ. Nhờ vào DynamoDB, Canva có thể tiếp tục phát triển và phục vụ cho hàng triệu người dùng trên toàn cầu.

Đừng quên tham gia vào Cộng Đồng System Design Việt Nam để cùng chia sẻ và học hỏi thêm về thiết kế hệ thống nhé!

Tài Liệu Tham Khảo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào