Meltano: Công cụ tích hợp dữ liệu mã nguồn mở thần kỳ

Hãy cùng khám phá tiềm năng của Meltano trong xử lý quy trình tích hợp dữ liệu qua bài viết phân tích thế mạnh và nhược điểm của công cụ này.

Upload image

Tích hợp dữ liệu

Tích hợp dữ liệu (Data Integration) là quá trình kết hợp dữ liệu từ nhiều nguồn khác nhau để tạo ra một tập dữ liệu thống nhất và đầy đủ. Đây là bước đầu tiên trong việc xây dựng luồng dữ liệu. Việc tích hợp dữ liệu giúp doanh nghiệp cải thiện hiệu quả, chất lượng và tính nhất quán của dữ liệu, cũng như hỗ trợ việc phân tích và ra quyết định dựa trên dữ liệu.

Về nhiệm vụ, tầm quan trọng và một số khái niệm cơ bản trong data platform, các bạn có thể tham khảo thêm ở Series Data Best Practices nhé.

Nhiều năm về trước, việc tích hợp dữ liệu từ nhiều nguồn (RDBMS, Google Analytics, Ad Network, các công cụ SaaS, v.v) là ác mộng cho các data engineer. Cách làm thường thấy là viết những script dài dằng dặc không hồi kết để trích xuất dữ liệu, lên lịch chạy các luồng dữ liệu này bằng cron job. Thỉnh thoảng các luồng dữ liệu này lại lăn ra ngất vì các connector bị thay đổi mà ko được bảo trì, data engineer lại phải hì hục sửa và xử lý những dữ liệu bị lỗi. Ngày nay, thay vì bỏ công sức cho việc tự bảo trì các connector trên, người ta sử dụng các công cụ tích hợp dữ liệu để cài đặt luồng dữ liệu một cách tự động, giảm thời gian, công sức của đội phát triển và vận hành.

Một vài loại công cụ tích hợp dữ liệu

Dựa trên phí bản quyền, ta có thể chia công cụ tích hợp dữ liệu thành ba loại như sau:

1. Enterprise: Nhóm này thường không bao gồm những công cụ riêng lẻ mà là nền tảng phục vụ việc tích hợp dữ liệu, chuyển đổi dữ liệu, quản lý dữ liệu, DataOps, v.v. Các giải pháp trong nhóm này có giá cao và phục vụ đa nhu cầu của những doanh nghiệp lớn. Một vài công cụ tiêu biểu có thể kể tới là các giải pháp từ IBM, Informatica, Microsoft, OracleSAP.

2. SaaS (Software as a Service): Đây là nhóm công cụ dễ dàng cài đặt và sử dụng, phù hợp với những doanh nghiệp vừa và nhỏ, nơi không có đội ngũ IT hùng hậu. Các giải pháp trong danh mục này cũng đáng tin cậy và dễ mở rộng hơn so với sử dụng giải pháp mã nguồn mở do có sự hỗ trợ từ nhà cung cấp. Các công cụ trong danh mục này bao gồm Fivetran, Stitch, Matillion, Hevo Data, v.v.

3. Open-source: Đây là nhóm công cụ mà bạn sẽ không phải trả nhiều phí bản quyền hoặc để đảm bảo dữ liệu của bạn không ở trong tay công ty khác. Nhược điểm lớn nhất là bạn phải tự triển khai và việc duy trì các connector cần dựa vào cộng đồng mã nguồn mở. Các công cụ trong danh mục này bao gồm Airbyte, Meltano, v.v.

Bài viết này của mình sẽ tập trung vào nhóm open-source, cụ thể là Meltano.

Giới thiệu về Meltano

Upload image

Tổng quan về Meltano (Nguồn: mighty.digital)

Meltano là một nền tảng mã nguồn mở mạnh mẽ và linh hoạt để tích hợp dữ liệu và có nguồn gốc từ GitLab. Nó được xây dựng trên nền tảng Singer Taps, cung cấp hơn 600 kết nối cho các nguồn dữ liệu phổ biến. Meltano cũng bao gồm nhiều tính năng giúp việc xây dựng và quản lý các data pipeline trở nên dễ dàng hơn.

Không giống như đối thủ trực tiếp Airbyte, người dùng thao tác trên giao diện web hoành tráng để cài đặt và cấu hình data pipeline, sau đó bấm nút Save để lưu vào cơ sở dữ liệu. Điểm khác biệt của Meltano là tập trung vào DataOps và giao diện CLI. Meltano đã bỏ giao diện người dùng (UI), dựa vào "ETL as code" để quản lý cấu hình và phiên bản thông qua file YAML. Các file YAML này có thể chỉnh sửa bằng tay, bằng CLI, hoặc sử dụng giao diện Web quản lý đơn giản. Meltano được thiết kế để cung cấp một trải nghiệm tương tự như phát triển phần mềm, bao gồm CI/CD và kiểm soát phiên bản.

Meltano vừa triển khai beta Meltano Cloud cuối tháng 5/2023 vừa rồi như là một SaaS, cung cấp việc quản lý cơ sở hạ tầng để chạy các data pipeline của Meltano với giá hợp lý. Với 5 pipeline, tổng số lần chạy khoảng 200 lần mỗi ngày, mỗi lần khoảng 5-10 phút, người dùng sẽ tốn khoảng 700$ mỗi tháng, một cái giá khá thấp nếu so với các đối thủ cạnh tranh.

Nhìn chung, Meltano sở hữu những ưu điểm như sau:

  • Mã nguồn mở: Meltano không có phí bản quyền nên nó nghiễm nhiên trở thành một lựa chọn tiết kiệm cho nhiều dự án. Meltano cũng có cộng đồng lớn trên nhiều nền tảng như Slack, Github, Meltano blog, v.v.
  • Tính linh hoạt: Meltano có thể kết nối với rất nhiều loại nguồn dữ liệu khác nhau từ cơ sở dữ liệu, APIs cho đến các dịch vụ trên mây.
  • Tính mở rộng: Meltano được thiết kế theo hướng modular. Các thành phần như extractor, loader, ultilities được xem như những plugin, có thể thêm vào tùy theo nhu cầu của dự án.
  • Meltano tiếp cận pipeline bằng "ETL as code" giúp người dùng dễ dàng define pipeline dưới dạng code, kiểm soát phiên bản và triển khai một cách tự động.

Bên cạnh đó, Meltano cũng có vài nhược điểm mà ta cần cân nhắc khi lựa chọn công cụ này cho dự án.

  • Meltano chỉ hỗ trợ một cơ chế duy nhất để tích hợp dữ liệu là Batch.
  • Meltano cung cấp những công cụ rất mạnh để quản lý code, tuy nhiên sẽ là hơi thừa thãi với những dự án cần triển khai nhanh với đội nhóm có quy mô nhỏ.
  • Việc có sử dụng mã nguồn mở trong dự án hay không vẫn là câu chuyện muôn thuở. Nếu không thoải mái với OSS, bạn có thể cân nhắc đến việc sử dụng Meltano Cloud hoặc những công cụ từ những nhà cung cấp khác.
  • Do không có low-code, UI-based app hay còn gọi là giao diện kéo thả nên Meltano chỉ phù hợp với lập trình viên. Trường hợp dự án có thêm nhiều stackholder thì nên cân nhắc công cụ có giao diện thân thiện hơn.
  • Nếu dự án dư dả về mặt tài chính, có thể cân nhắc sử dụng những công cụ ở mức enterprise hoặc SaaS.

Thành phần cơ bản của Meltano

Sau đây, chúng ta sẽ cùng điểm qua một số thành phần cơ bản trong Meltano.

Extractor và Loader

Meltano Extractor and Loader là hai thành phần chính của pipeline trong Meltano. Các Extractor có chức năng kéo dữ liệu từ một hoặc nhiều nguồn dữ liệu và Loader dùng để tải dữ liệu vào một hệ thống đích. Các thành phần này được xây dựng dựa trên mã nguồn mở của Singer taps and targets.

Các Extractor và Loader được cài đặt như plugin trong Meltano, việc cài đặt và tùy chỉnh cũng hết sức đơn giản thông qua lệnh add trong command line, người dùng có thể kiểm tra được kết quả ngay trong file meltano.yaml.

Upload image

Tùy chỉnh Extractor và Loader (Nguồn: github.com)

Trong trường hợp không có connector cần thiết, ta có thể dễ dàng tạo custom connector phù hợp với nhu cầu của dự án thông qua Meltano Singer SDK. SDK này dựa trên một số thư viện của python như Poetry vào cookiecutter.

Upload image

Tạo custom extractor trong Meltano (Nguồn: docs.meltano.com)

Transformation

Meltano tiếp cận theo hướng ELT (Extract - Load - Transform) cho nên việc transform dữ liệu sẽ xảy ra sau khi load vào kho dữ liệu. Bên cạnh đó, Meltano tích hợp dữ liệu theo batch nên việc transform cũng sẽ xử lý theo batch.

Meltano tích hợp sâu với dbt (data build tool) như là một plugin. dbt là một công cụ transform dữ liệu cho phép bạn viết và thực thi bằng các câu lệnh SQL. Mô hình dữ liệu trong dbt được viết bằng ngôn ngữ thân thiện với người dùng gọi là SQL model, và chúng có thể được sử dụng để thực hiện nhiều nhiệm vụ khác nhau.

Trải nghiệm làm transform trên Meltano cũng sẽ tương tự như những công cụ khác có tích hợp với dbt. Meltano cũng cung cấp công cụ để chuyển code từ dbt sang Meltano chỉ bằng vài bước đơn giản.

Upload image

Transform dữ liệu bằng dbt trong Meltano (Nguồn: github.com)

Một tính năng rất mạnh của dbt là macros, cho phép tạo những template language và làm được những thứ mà bình thường ta không thể thực hiện trên SQL (ví dụ như If, for loops, v.v).

Upload image

Trải nghiệm template language của dbt trong Meltano (Nguồn: github.com)

Mapper

Meltano cung cấp cơ chế linh hoạt nhằm thay đổi dữ liệu thông qua pipeline để phù hợp với nhu cầu của người dùng. Phần lớn nhu cầu của người dùng khi tích hợp dữ liệu sẽ muốn sao chép dữ liệu thô, nhưng cũng có nhiều trường hợp có nhu cầu thay đổi nhỏ cho dữ liệu một cách tự động.

Trong Meltano, cơ chế này đượcgọi là Mapper hay Inline Data Mapping và được sử dụng như là một plugin, có thể dễ dàng cài đặt và tùy chỉnh thông qua command line.

Hình minh họa bên dưới miêu tả data thô, cài đặt trong mapper và đầu ra sau khi chạy pipeline.

Upload image

Cài đặt và sử dụng mapper trong Meltano (Nguồn: github.com)

Điều phối pipeline

Các data pipeline không chỉ chạy một lần mà sẽ chạy nhiều lần để đảm bảo những dữ liệu mới ở nguồn sẽ được thêm vào dữ liệu đích.

Điều phối (Orchestration) là quá trình tự động hóa việc thực thi pipeline, cho phép chạy các pipeline theo định kì, hoặc kích hoạt thông qua sự kiện khác. Meltano có cơ chế điều phối riêng của mình thông qua lệnh run, hoặc tích hợp với các công cụ điều phối khác như là Airflow và Dagster.

Upload image

Điều phối Meltano job bằng Dagster (Nguồn: dagster.io)

Deployment

Do mã nguồn và các cài đặt của Meltano được lưu trữ trên file YAML, chúng ta có thể dễ dàng xem dự án Meltano cũng giống như những dự án phát triển phần mềm khác, đồng thời nhận được đầy đủ những lợi ích từ việc kiểm soát phiên bản, review code, tích hợp với CI/CD và triển khai.

Tương tự như những dự án khác, Meltano lưu credential trong folder .meltano.env file, những file này mặc định sẽ nằm trong .gitignore nhằm tránh việc rò rỉ thông tin môi trường.

Upload image

Triển khai Meltano tronng CI/CD pipeline (Nguồn: github.com)

Kết luận

Meltano có một tiềm năng phát triển mạnh mẽ, phần lớn là nhờ các connector của nó được làm theo tiêu chuẩn Singer.io với một cộng đồng mạnh mẽ và đông đảo. Sau khi sử dụng Meltano, tôi thấy các nguồn data mà tôi biết đều có thể chạm tới, cho phép người dùng có thể tập trung vào bước sử dụng dữ liệu như thế nào cho hiệu quả. Do được xây dựng trên mã nguồn mở, độ ổn định của các connector vẫn luôn là dấu hỏi lớn nên việc có sử dụng mã nguồn mở hay không vẫn phải cần được cân nhắc cẩn thận. Sự xuất hiện gần đây của Meltano Cloud (mặc dù chỉ ở bản Beta) đã nhận được nhiều sự đánh giá tích cực từ người dùng. Điều này cho thấy, Meltano Cloud vẫn là một lựa chọn đáng để cân nhắc cho giải pháp tích hợp dữ liệu trên cloud.

Atekco - Home for Authentic Technical Consultants