Slide thumbnail

Cập nhật kiến thức Google Cloud

Kiến thức

Bài học từ việc Discord chuyển dịch từ Redshift qua BigQuery

18/03/2020

 

Bài học từ việc Discord chuyển dịch từ Redshift qua BigQuery

 

Chú thích của người viết: Chúng ta sẽ nghe từ Discord – nhà sản xuất một ứng dụng trò chuyện bằng giọng nói, video phổ biến để chơi game. Họ phải mang lại trải nghiệm tuyệt vời cho hàng triệu khách hàng đồng thời và buộc theo kịp nhu cầu phát triển. Và đây là cách thức họ chuyển từ Redshift sang Google Cloud BigQuery để hỗ trợ sự phát triển của họ.

Tại Discord, ứng dụng trò chuyện của chúng tôi hỗ trợ hơn 50 triệu người dùng hàng tháng. Chúng tôi đã sử dụng Amazon Redshift làm giải pháp kho dữ liệu của chúng tôi trong nhiều năm, nhưng vì lý do cả về kỹ thuật và kinh doanh, chúng tôi đã chuyển hoàn toàn sang BigQuery. Kể từ khi di chuyển, chúng tôi đã có thể phục vụ người dùng nhanh hơn, kết hợp các khả năng AI và ML và đảm bảo các tuân thủ.

 

Bài học từ việc Discord chuyển dịch từ Redshift qua BigQuery

 

Những thách thức khiến Discord phải dịch chuyển

Nhóm của chúng tôi tại Discord bắt đầu xem xét các giải pháp thay thế khi nhận ra rằng chúng tôi đang gặp phải những hạn chế về kỹ thuật và chi phí trên Redshift. Chúng tôi biết rằng nếu chúng tôi muốn kho dữ liệu của mình để có thể mở rộng quy mô cùng với việc kinh doanh của mình, chúng tôi phải tìm một giải pháp mới. Về mặt kỹ thuật, chúng tôi nhận ra rằng chúng tôi sẽ đạt kích thước cụm tối đa (128 máy chủ tính toán) cho các máy chủ loại DC2 trong vòng sáu tháng do nhu cầu sử dụng ngày càng tăng của chúng tôi. Chi phí cho việc sử dụng Redshift cũng trở thành một thách thức. Chúng tôi đã trả hàng trăm ngàn đô la mỗi tháng, chưa bao gồm lưu trữ và chi phí lưu lượng mạng vào / ra giữa Google Cloud và AWS. (Chúng tôi hiện đã sử dụng Google Cloud cho ứng dụng trò chuyện của mình.)

Chúng tôi đã xem xét một số giải pháp dựa trên Google Cloud và xác định rằng BigQuery sẽ là giải pháp phù hợp cho chúng tôi với quy mô lớn hơn (với lượng khách hàng đã biết vượt ngoài khả năng của Discord), gần với nơi chứa dữ liệu của chúng tôi và thực tế là Google Cloud đã có đường ống tại chỗ để tải dữ liệu. Một lý do chính khác cho sự lựa chọn BigQuery của chúng tôi là nó hoàn toàn “không có máy chủ” do đó nó sẽ không yêu cầu bất kỳ việc cung cấp và quản lý phần cứng trả trước nào. Chúng tôi cũng có thể tận dụng một tính năng hoàn toàn mới gọi là BigQuery Reservations để có được khoản tiết kiệm đáng kể với việc sử dụng năng lực xử lý cố định.

 

Những đánh đổi và thách thức trong quá trình chuyển dịch

Chúng tôi đã có một số chuẩn bị để làm trước và trong quá trình di chuyển. Một thách thức ban đầu là trong khi cả Redshift và BigQuery đều được thiết kế để xử lý khối lượng công việc phân tích, tuy nhiên chúng rất khác nhau.

Ví dụ, trong Redshift, chúng tôi đã có một tập hợp các bảng không chuẩn hóa trong đó mỗi sự kiện ứng dụng của chúng tôi kết thúc bằng một bảng riêng của nó và hầu hết các truy vấn phân tích của chúng tôi cần được nối với nhau. Chạy một truy vấn phân tích về duy trì người dùng sẽ liên quan đến việc phân tích dữ liệu qua nhiều sự kiện và bảng khác nhau. Vì vậy, việc chạy loại khối lượng công việc nặng JOIN này dẫn đến sự khác biệt về hiệu suất. Chúng tôi đã dựa vào thứ tự và số lượng hàng loạt dữ liệu lớn trước đó, nhưng phương pháp đó được BigQuery hỗ trợ với những hạn chế. Redshift và BigQuery thực hiện chia phân vùng khác nhau, do đó, việc kết nối vào một cái gì đó như ID người dùng sẽ không nhanh như vậy, vì cách bố trí dữ liệu khác nhau. Vì vậy, chúng tôi đã sử dụng phân vùng theo dấu thời gian và phân cụm trên các trường JOIN, giúp tăng hiệu suất trong BigQuery. Các khía cạnh khác của BigQuery đã mang lại những lợi thế đáng kể ngay lập tức, khiến việc di chuyển trở nên đáng giá. Chúng bao gồm dễ quản lý (một nhà cung cấp so với nhiều, không có khung giờ bảo trì, không VACUUM / ANALYZE); khả năng mở rộng; và chi phí cho hiệu suất.

Có một số cân nhắc khác mà chúng tôi đã tính đến khi thực hiện việc di chuyển này. Chúng tôi đã phải chuyển đổi hơn một trăm nghìn dòng SQL thành cú pháp BigQuery, vì vậy chúng tôi đã sử dụng thư viện ZetaSQL và trình phân tích cú pháp PostgreSQL để thực hiện một công cụ chuyển đổi. Để làm điều này, chúng tôi đã phân tách một trình phân tích cú pháp mã nguồn mở và sửa đổi ngữ pháp để nó có thể phân tích tất cả Redshift SQL hiện có của chúng tôi. Xây dựng cái này là một phần không tầm thường của việc di chuyển. Công cụ này có thể chuyển một cây cú pháp trừu tượng (còn được gọi là cây phân tích cú pháp) từ mẫu Redshift và xuất ra mẫu tương đương cho BigQuery. Ngoài ra, chúng tôi đã kiến trúc lại cách chúng tôi xây dựng các chế độ xem dữ liệu tổng hợp trước để hỗ trợ BigQuery. Di chuyển đến một mô hình năng lực xử lý cố định bằng cách sử dụng BigQuery Reservations cho phép cách ly khối lượng công việc, hiệu suất phù hợp và chi phí có thể dự đoán được. Bước di chuyển cuối cùng đã quen với mô hình hậu di chuyển mới và giáo dục các bên liên quan về mô hình hoạt động mới.

 

“Chuyển dịch từ Redshift sang BigQuery đã thay đổi trò chơi cho tổ chức của chúng tôi. Chúng tôi đã có thể khắc phục các tắc nghẽn về hiệu suất và các hạn chế về năng lực cũng như mở khóa một cách không sợ hãi những hiểu biết có thể hành động cho doanh nghiệp của chúng tôi.”

Spencer Aiello – Trưởng bộ phận và quản lý kỹ thuật, machine learning tại Discord

 

Google bigquery

 

Sử dụng BigQuery làm nền tảng dữ liệu của chúng tôi

Kể từ khi hoàn thành việc dịch chuyển, BigQuery đã giúp chúng tôi hoàn thành các mục tiêu của mình xung quanh quy mô, quyền riêng tư của người dùng và tuân thủ GDPR. BigQuery hiện hỗ trợ tất cả các trường hợp sử dụng báo cáo, bảng điều khiển, machine learning và khám phá dữ liệu của chúng tôi tại Discord. Hàng ngàn truy vấn chạy trên dữ liệu lưu trữ của chúng tôi mỗi ngày. Chúng tôi sẽ không thể mở rộng các truy vấn của mình trên Redshift như có thể với BigQuery.

Với BigQuery, chúng tôi có thể giữ cho hoạt động trơn tru mà không bị gián đoạn đối với hoạt động kinh doanh của mình. Đây là một luồng không khí trong lành vào cuối quá trình sử dụng Redshift, chúng tôi đã từng có thời gian ngừng hoạt động hơn 12 giờ chỉ để tiến hành bảo trì hàng đêm. Các hoạt động này có thể thất bại và khiến chúng tôi trượt trên SLA nội bộ sau 24 giờ trước khi chúng tôi có thể nhập dữ liệu. Để giải quyết thách thức này trong quá khứ, chúng tôi đã phải bắt đầu chủ động xóa và cắt bớt các bảng trong Redshift, dẫn đến những thấu hiểu không đầy đủ và kém chính xác.

Chúng tôi cũng đã thấy những lợi ích khác khi chuyển sang BigQuery: Yêu cầu dữ liệu của người dùng đã trở nên rẻ hơn và nhanh hơn để phục vụ; BigQuery chèn theo luồng cho phép chúng tôi quan sát các thử nghiệm machine learning và kết quả mô hình từ Nền tảng AI trong thời gian thực; và chúng tôi có thể dễ dàng hỗ trợ các trường hợp sử dụng mới cho các phân tích sử dụng tin cậy và an toàn, tài chính và lượng phân tích của Discord. Thật an toàn khi nói rằng BigQuery là nền tảng cho tất cả các phân tích tại Discord.

Nó có một lợi ích rất lớn mà giờ đây chúng tôi có thể cung cấp hiệu suất ổn định cho người dùng mà không phải lo lắng về các hạn chế tài nguyên. Hiện tại chúng tôi có thể hỗ trợ hàng ngàn truy vấn trên hàng trăm terabyte dữ liệu mỗi ngày mà không phải suy nghĩ quá nhiều về tài nguyên. Chúng tôi có thể chia sẻ quyền truy cập vào thông tin phân tích giữa các nhóm và chúng tôi đã chuẩn bị tốt cho bước tiếp theo của việc sử dụng các khả năng AI và ML của BigQuery.

Tìm hiểu nhiều hơn về DiscordBigQuery.

 

 

Nguồn: Gimasys

 

 

 

Bạn có thể quan tâm: