Thử nghiệm Import Topic trong Google Cloud Pub/Sub với AWS Kinesis
Tính năng mới được ra mắt của Google Cloud Pub/Sub, giúp kết nối tới nguồn dữ liệu ở đám mây khác trong bài toán multi-cloud data analytics.
Các vấn đề trong kết nối multi-cloud
Multi-cloud đang trở thành xu hướng trong thế giới điện toán đám mây, đánh dấu sự thay đổi trong cách doanh nghiệp sử dụng công nghệ đám mây. Thay vì chỉ phụ thuộc vào một nhà cung cấp dịch vụ đám mây duy nhất, các doanh nghiệp ngày nay lựa chọn kết hợp các dịch vụ từ nhiều nhà cung cấp khác nhau để tận dụng tối đa lợi ích của từng nền tảng.
Các nhà cung cấp dịch vụ đám mây từ lâu cũng hỗ trợ việc tranfer dữ liệu giữa các cloud. Về streaming data, mỗi bên đều có streaming service riêng của mình như Azure Event Hub, Amazon Kinesis, hay Google Cloud Pub/Sub. Tuy nhiên, việc tích hợp các dịch vụ giữa các đám mây vẫn chưa được thông suốt. Giải pháp chữa cháy thường thấy là sẽ sử dụng thêm một dịch vụ trung gian khác tích hợp các dịch vụ này với nhau.
Lấy ví dụ doanh nghiệp sử dụng BigQuery - công cụ phân tích dữ liệu của Google Cloud Platform (GCP) - để phân tích dữ liệu kinh doanh nhưng một phần dữ liệu của họ lại nằm trên AWS Kinesis - dịch vụ quản lý luồng dữ liệu của Amazon Web Services (AWS). Giải pháp hiện tại là sử dụng thêm một streaming service (như Apache Spark, Flink) để truyền dữ liệu từ Kinesis qua bên Pub/Sub, rồi sử dụng các dịch vụ trong hệ sinh thái của GCP để xử lý dữ liệu và đưa vào BigQuery.
Tuy nhiên, cách thức này dẫn đến việc tăng độ trễ và hạn chế khả năng mở rộng của giải pháp, gây lãng phí tài nguyên, chi phí không cần thiết cho việc triển khai và vận hành dịch vụ phát sinh này. Ngoài ra, việc theo dõi và quản lý hiệu suất hoạt động giữa các đám mây cũng là thách thức lớn đối với quy mô doanh nghiệp.
Trong bối cảnh đó, mặc dù chưa có giải pháp tối ưu để trực tiếp tích hợp messaging services của ba nhà cung cấp đám mây lớn là Azure Event Hub, Amazon Kinesis và Google Cloud Pub/Sub, sự ra đời của Import Topic trong Pub/Sub của GCP cũng đã mở ra một hướng giải quyết mới. Nhờ tính năng này, dữ liệu từ nhiều nguồn bên ngoài Google có thể được tích hợp và thu thập vào Pub/Sub, sau đó được truyền trực tiếp đến các dịch vụ khác mà Pub/Sub hỗ trợ.
Dịch vụ Import Topic trong Google Cloud Pub/Sub
Google Cloud Pub/Sub là messaging service được thiết kế để truyền tải dữ liệu, tựa như một "xương sống" kết nối các dịch vụ, ứng dụng đa dạng, giúp trao đổi dữ liệu hiệu quả, tin cậy và linh hoạt.
Import Topic là một tính năng mới ra mắt gần đây của Pub/Sub, cho phép thu thập dữ liệu trực tiếp từ những nguồn dữ liệu bên ngoài GCP vào Pub/Sub một cách dễ dàng. Từ đó, việc thống nhất dữ liệu, quy trình quản lý và giám sát sẽ trở nên đơn giản và hiệu quả hơn.
Hiện nay Import Topic chỉ mới hỗ trợ một nguồn dữ liệu duy nhất là AWS Kinesis. Import Topic được khuyến khích dùng cho trường hợp truyền dữ liệu (streaming data), còn với trường hợp thu thập dữ liệu theo batch thì người dùng nên sử dụng dịch vụ chuyển đổi khác của Google.
Hello World Demo
Để thực hiện demo này, chúng ta giả định đã thiết lập sẵn AWS Kinesis Data Streams và Google Pub/Sub. Mục tiêu chính là kết nối consumer trong Kinesis và publisher trong Pub/Sub để cho phép dữ liệu từ Kinesis Data Streams chuyển sang Pub/Sub bằng Import Topic.
Trong Pub/Sub, ta tạo service account với 2 quyền là Token creator và Pub/Sub publisher. Service account này sẽ được dùng để truy cập tài nguyên từ AWS và publish data trong Pub/sub.
Trong Kinesis, ta tạo role với policy có quyền truy cập vào Kinesis và Custom trust policy bằng unique ID của service account ở bước trên.
Ở bước tạo topic trong Pub/Sub, chọn "Enable ingestion" và ở "Ingestion souce" chọn "Amazon Kinesis Data Streams". Sau khi tạo, Pub/Sub sẽ bắt đầu đọc dữ liệu từ Kinesis và publish lên topic vừa được tạo.
Tạo topic trong Pub/Sub
Để đảm bảo thu thập đầy đủ dữ liệu từ Amazon Kinesis, Pub/Sub áp dụng cơ chế tự động điều chỉnh scale dựa trên việc theo dõi các thay đổi trong data stream. Pub/Sub định kỳ truy vấn API ListShards của Amazon Kinesis để cập nhật danh sách các shard hiện tại của data stream. Khi có bất kỳ thay đổi nào xảy ra, chẳng hạn như tách shard hay gộp shard, Pub/Sub sẽ tự động điều chỉnh cấu hình để đảm bảo tất cả dữ liệu từ shard đều được thu thập.
Kết luận
Trong bối cảnh các dự án trong cùng công ty sử dụng các nhà cung cấp đám mây khác nhau dẫn đến việc di chuyển dữ liệu giữa các đám mây đã trở thành xu thế phổ biến, Import Topic của Google Cloud Pub/Sub là một tính năng thú vị, giúp việc kết nối và quản lý dữ liệu đa nguồn trở nên dễ dàng và thuận tiện hơn.
Tham khảo:
Easily stream data from AWS Kinesis to Google Cloud with Pub/Sub import topics