Rethinking latency-sensitive DynamoDB apps for multicloud, multiregion deployment Toàn bộ quá trình phân phối quảng cáo diễn ra trong vòng 200 đến 300 milisecond. tìm kiếm cơ sở dữ liệu của chúng tôi phải được hoàn thành trong vài milisecond. Với hàng tỷ giao dịch mỗi ngày, cơ sở dữ liệu phải nhanh, có thể mở rộng và đáng tin cậy. – Todd Coleman, đồng sáng lập kỹ thuật và kiến trúc sư trưởng tại Yieldmo Toàn bộ quá trình phân phối quảng cáo diễn ra trong vòng 200 đến 300 milisecond. tìm kiếm cơ sở dữ liệu của chúng tôi phải được hoàn thành trong vài milisecond. Với hàng tỷ giao dịch mỗi ngày, cơ sở dữ liệu phải nhanh, có thể mở rộng và đáng tin cậy. – Todd Coleman, đồng sáng lập kỹ thuật và kiến trúc sư trưởng tại Yieldmo Kinh doanh quảng cáo trực tuyến của Yieldmo phụ thuộc vào việc xử lý hàng trăm tỷ yêu cầu quảng cáo hàng ngày với phản hồi chậm trễ dưới giây. Các dịch vụ của công ty ban đầu phụ thuộc vào DynamoDB, mà nhóm đánh giá cao vì sự đơn giản và ổn định. Tuy nhiên, chi phí DynamoDB đã trở nên không bền vững ở quy mô lớn và nhóm cần linh hoạt đa đám mây khi Yieldmo mở rộng sang các khu vực mới. Trong một cuộc nói chuyện gần đây tại Todd Coleman, đồng sáng lập kỹ thuật và kiến trúc sư trưởng của Yieldmo, đã chia sẻ những thách thức kỹ thuật mà công ty phải đối mặt và lý do tại sao nhóm cuối cùng đã tiến lên với API tương thích với DynamoDB của ScyllaDB. Monster Scale Hội nghị thượng đỉnh Bạn có thể xem toàn bộ bài phát biểu của anh ấy bên dưới hoặc tiếp tục đọc để xem lại. https://youtu.be/sk0mIiaOwM8?embedable=true Lost business = mất kinh doanh Yieldmo là một nền tảng quảng cáo trực tuyến kết nối các nhà xuất bản và nhà quảng cáo theo thời gian thực dưới dạng tải trang. Gần như mỗi yêu cầu quảng cáo kích hoạt truy vấn cơ sở dữ liệu thu thập thông tin chi tiết về máy học và thông tin nhận dạng thiết bị. Hoạt động đấu giá hiệu quả Giúp các đối tác quyết định có nên đề nghị Theo dõi quảng cáo mà họ đã hiển thị trên thiết bị để các nhà quảng cáo có thể quản lý tần số giới hạn và tối ưu hóa phân phối quảng cáo Toàn bộ đường ống dẫn quảng cáo hoàn thành chỉ trong 200 đến 300 milisecond, với phần lớn thời gian đó dành cho các đối tác đánh giá và đặt giá thầu. Khi người dùng truy cập một trang web, một yêu cầu quảng cáo được gửi đến Yieldmo. Nền tảng của Yieldmo phân tích yêu cầu. Nó yêu cầu quảng cáo tiềm năng từ các đối tác của nó. Nó tiến hành đấu giá để xác định đề nghị chiến thắng. Tìm kiếm cơ sở dữ liệu phải xảy ra trước khi bất kỳ cuộc gọi nào đến các đối tác. Và những tìm kiếm này phải hoàn thành với độ trễ millisecond một chữ số. Coleman giải thích, “Với hàng tỷ giao dịch hàng ngày, cơ sở dữ liệu phải nhanh, có thể mở rộng và đáng tin cậy. Nếu nó đi xuống, cơ sở hạ tầng dịch vụ quảng cáo của chúng tôi ngừng hoạt động.” DynamoDB tăng đau Cơ sở hạ tầng sản xuất của Yieldmo chạy trên AWS, vì vậy DynamoDB là một lựa chọn hợp lý khi nhóm xây dựng ứng dụng của họ. Thứ nhất, DynamoDB đang ngày càng tốn kém khi kinh doanh mở rộng. Thứ hai, công ty muốn có tùy chọn chạy máy chủ quảng cáo trên các nhà cung cấp dịch vụ đám mây ngoài AWS. Coleman chia sẻ: “Trong một số khu vực, ví dụ, các trung tâm dữ liệu ở Bờ Đông Hoa Kỳ, AWS và GCP [Google Cloud Platform] đủ gần để độ trễ là tối thiểu. Ở đó, không có vấn đề gì khi đánh vào cơ sở dữ liệu DynamoDB của chúng tôi từ một máy chủ quảng cáo chạy trong GCP. Tuy nhiên, khi chúng tôi cố gắng khởi động một cụm dịch vụ quảng cáo dựa trên GCP ở Amsterdam trong khi truy cập DynamoDB ở Dublin, độ trễ quá cao. Thay thế DynamoDB Nhóm của Yieldmo bắt đầu khám phá các lựa chọn thay thế DynamoDB phù hợp với khối lượng công việc cơ sở dữ liệu cực kỳ khó đọc của họ. Một luồng dữ liệu thời gian thực liên tục từ các đối tác của họ, cần thiết để khớp dữ liệu của Yieldmo với dữ liệu của họ Cập nhật hàng loạt được thúc đẩy bởi những hiểu biết về máy học bắt nguồn từ dữ liệu lịch sử của họ Với sự cân bằng này của đọc tần số cao và viết có cấu trúc, họ đang tìm kiếm một cơ sở dữ liệu có thể xử lý truy cập quy mô lớn, chậm trễ thấp trong khi quản lý hiệu quả các bản cập nhật đồng thời mà không làm suy giảm hiệu suất. Nhóm nghiên cứu lần đầu tiên xem xét việc ở lại với DynamoDB và thêm một lớp bộ nhớ đệm. tuy nhiên, họ thấy rằng bộ nhớ đệm không thể khắc phục vấn đề độ trễ địa lý và các lỗ hổng bộ nhớ đệm sẽ thậm chí còn chậm hơn với tùy chọn này. Họ cũng khám phá ra Aerospike, cung cấp tốc độ và hỗ trợ đám mây chéo. Tuy nhiên, họ biết rằng việc lập chỉ mục trong bộ nhớ của Aerospike sẽ đòi hỏi một cụm lớn và tốn kém để xử lý số lượng lớn các đối tượng dữ liệu nhỏ của Yieldmo. Sau đó, họ phát hiện ra ScyllaDB, cũng cung cấp tốc độ và hỗ trợ cross-cloud, nhưng với một API tương thích với DynamoDB (Alternator) và chi phí thấp hơn. Coleman chia sẻ, "ScyllaDB hỗ trợ triển khai trên đám mây, đòi hỏi một số máy chủ có thể quản lý và cung cấp chi phí cạnh tranh.Tốt nhất, API của nó tương thích với DynamoDB, có nghĩa là chúng tôi có thể di chuyển với các thay đổi mã tối thiểu. ScyllaDB Đánh giá, Di cư và Kết quả Để bắt đầu đánh giá cách ScyllaDB hoạt động trong môi trường của họ, nhóm nghiên cứu đã di chuyển một tiểu nhóm các máy chủ quảng cáo trong một khu vực duy nhất. Điều này liên quan đến việc di chuyển nhiều terabytes trong khi duy trì cập nhật thời gian thực. Theo quy trình, họ đã có ScyllaDB dựa trên công cụ di chuyển Spark sao chép dữ liệu lịch sử, tạm dừng các công việc hàng loạt ML và tận dụng kiến trúc Kafka của họ để tái tạo các bài viết gần đây vào ScyllaDB. Di chuyển một bảng DynamoDB duy nhất với ~28 tỷ đối tượng (~3,3 TB) mất khoảng 10 giờ. Bước tiếp theo là di chuyển tất cả dữ liệu qua năm khu vực AWS. Giai đoạn này mất khoảng hai tuần. Sau khi đánh giá hiệu suất, Yieldmo đã nâng cấp ScyllaDB lên trạng thái chính và cuối cùng ngừng viết cho DynamoDB ở hầu hết các khu vực. Nghĩ về việc di chuyển gần một năm sau đó, Coleman tóm tắt, “Lợi ích lớn nhất là tính linh hoạt đa đám mây, nhưng ngay cả khi không có nó, việc di chuyển có giá trị. chi phí cơ sở dữ liệu đã giảm khoảng một nửa so với DynamoDB, ngay cả với giá dự trữ dung lượng, và chúng tôi đã thấy sự cải thiện thời gian trễ khiêm tốn. ScyllaDB đã chứng minh đáng tin cậy: Nhóm của họ giám sát các cụm của chúng tôi, cảnh báo chúng tôi về các vấn đề và tư vấn về quy mô. Cách ScyllaDB so sánh với DynamoDB