Chào các bạn, những chiến binh đang ngày đêm "vật lộn" với dữ liệu! Chắc hẳn không ít lần chúng ta tự hỏi: Dữ liệu thì ở tứ xứ, từ cái database SQL cổ lỗ sĩ trong công ty, file CSV vứt trên Blob Storage, cho đến mấy cái API "sang chảnh". Làm thế nào để "gom" tụi nó lại, "xào nấu" rồi "dọn ra mâm" cho sếp xem báo cáo, hay cho mấy em AI/ML "măm măm"? Đấy, Azure Data Factory (gọi tắt là ADF cho thân mật) sinh ra là để giải quyết mớ bòng bong đó đấy.
Vậy ADF là cái gì?
Nói một cách nguy hiểm thì ADF là một dịch vụ tích hợp dữ liệu trên nền tảng đám mây Azure, do Microsoft phát triển. Còn nói kiểu dân dã, nó như một nhà máy trên mây, chuyên lo việc bốc vác (Extract), sơ chế (Transform) và phân phối (Load) dữ liệu. Mấy thuật ngữ sang mồm là ETL (Extract-Transform-Load) hay ELT (Extract-Load-Transform) chính là nghề của chàng ADF này.
Tại sao lại móc ví cho ADF trong các hệ thống hiện đại?
Cứ thử tưởng tượng nhé:
- Công ty bạn có chục cái hệ thống, mỗi thằng một kiểu dữ liệu. Sếp đòi báo cáo tổng hợp cuối ngày. Chẳng lẽ ngồi copy-paste bằng tay? Toang!
- Dữ liệu từ IoT đổ về như thác lũ, cần xử lý real-time hoặc near real-time. Sức người có hạn!
- Bạn muốn xây một cái Data Lake hoành tráng hay một cái Data Warehouse xịn sò để phân tích. Lấy dữ liệu từ đâu? Ai làm?
Đấy, ADF xuất hiện như một vị cứu tinh:
- Kết nối xuyên lục địa: Nó bắt tay được với hàng trăm nguồn dữ liệu, từ on-premise (dưới đất nhà bạn) cho tới cloud (trên mây).
- Tự động hóa tận răng: Bạn chỉ cần thiết kế quy trình một lần, rồi để ADF tự chạy theo lịch, hoặc khi có biến (ví dụ: có file mới đẩy lên).
- Xào nấu dữ liệu đa dạng: Từ mấy cái join, filter đơn giản cho tới việc gọi Azure Databricks, Azure Functions vào phụ một tay cho những ca khó.
- Ít code, nhiều action: Giao diện kéo thả trực quan, mấy anh chị BA hay fresher cũng có thể múa được pipeline cơ bản.
- Xài nhiêu trả nhiêu: Mô hình giá của Azure khá linh hoạt, tối ưu tốt thì chi phí cũng dễ thở.
Kể bạn nghe chuyện đi săn dữ liệu bệnh viện với ADF
Hồi đó mình có tham gia một dự án khá khoai cho một chuỗi bệnh viện. Dữ liệu bệnh nhân của họ thì thôi rồi, mỗi nơi một phách: hệ thống EMR (bệnh án điện tử) nói chuyện bằng API FHIR (một chuẩn y tế khá phổ biến). Mục tiêu là xây cái Data Lake để mấy ông bác sĩ, nhà nghiên cứu có thể đào bới, tìm ra insight.
Lúc đó, ADF như vũ khí bí mật của team:
- Dùng ADF kết nối tới các API FHIR để hút dữ liệu bệnh án.
- Móc vào SQL Server của LIS để lấy kết quả xét nghiệm.
- Tạo pipeline tự động chạy mỗi đêm, lôi hết dữ liệu mới về.
- Dùng Mapping Data Flows (một tính năng xịn sò trong ADF) để rửa ráy, chuẩn hóa dữ liệu từ các nguồn khác nhau về một khuôn rồi mới đổ vào Azure Data Lake Storage.
Kết quả? Dữ liệu sạch đẹp, tập trung, sẵn sàng cho các thầy phân tích. ADF đúng là anh hùng của dự án đó!
Azure Data Factory là gì? Bóc tem chi tiết hơn
Không dài dòng nữa, như đã nhá hàng, ADF là công cụ ETL/ELT của nhà Microsoft. Nhưng cụ thể hơn thì:
-
ETL/ELT hai trong một: Bạn muốn sơ chế dữ liệu trước khi cất kho (ETL) hay gom hết về một chỗ rồi mới làm thịt (ELT)? ADF chiều được hết!
-
Kéo thả là chính, code là phụ: Điểm mạnh của ADF là giao diện đồ họa (GUI). Các bạn có thể kéo các cục activity, nối chúng lại với nhau thành một quy trình (pipeline) mà không cần viết dòng code nào. Tất nhiên, nếu gặp ca khó, cần logic phức tạp, ADF vẫn cho phép bạn chèn code qua Azure Functions, Databricks notebooks, hoặc thậm chí là custom activity bằng .NET.
-
Hệ sinh thái kết nối đa dạng: ADF có một thư viện connectors khủng để nói chuyện với đủ loại nguồn và đích:
- Database cổ điển: SQL Server, Azure SQL, Oracle, MySQL, PostgreSQL, DB2,... cân tất.
- Kho file trên mây dưới đất: Azure Blob Storage, Azure Data Lake Storage (ADLS Gen1/Gen2), Amazon S3, FTP/SFTP, thậm chí là file system trên máy nhà bạn.
- NoSQL thời thượng: Azure Cosmos DB, MongoDB.
- SaaS sang chảnh: Salesforce, Dynamics 365, SAP (có cả SAP HANA, SAP BW nhé).
- API muôn hình vạn trạng: REST API, OData.
- Chuẩn y tế FHIR: Như ví dụ trên, dùng REST connector để chiến.
Và một rổ các connector khác đang chờ bạn khám phá.
Kiến trúc cơ bản của ADF
Để mổ xẻ ADF, chúng ta cần làm quen với vài nhân vật chủ chốt:
Pipeline: Đây là tổng chỉ huy, một chuỗi logic các hoạt động (activities) để hoàn thành một tác vụ. Ví dụ: một pipeline lấy dữ liệu từ Salesforce, làm sạch bằng Data Flow, rồi đẩy vào Azure Synapse.
Activities (Hoạt động/Công nhân): Là các bước xử lý cụ thể trong pipeline. Có 3 loại chính:
- Data Movement: Chuyên bốc vác dữ liệu, điển hình là Copy Data Activity.
- Data Transformation: Chuyên xào nấu, biến hình dữ liệu. Có thể là Mapping Data Flow (giao diện kéo thả để transform), gọi Stored Procedure trong SQL, chạy notebook trên Databricks, thực thi Azure Function,...
- Control Flow: Chuyên điều binh khiển tướng, kiểm soát luồng chạy của pipeline. Ví dụ: ForEach (lặp qua một tập), If Condition (rẽ nhánh), Web Activity (gọi API), Execute Pipeline (gọi một pipeline khác),...
Dataset: Nó như một bản mô tả cấu trúc dữ liệu mà bạn muốn đọc hoặc ghi. Ví dụ: Dataset có thể trỏ tới một bảng trong SQL, một file CSV trong Blob, hay một collection trong Cosmos DB. Nó không chứa dữ liệu thật, chỉ là con trỏ thôi.
Linked Services (Chìa khóa kết nối): Đây là chùm chìa khóa mà ADF dùng để mở cửa các kho dữ liệu (nguồn và đích). Nó chứa thông tin kết nối (connection string), thông tin xác thực. Ví dụ, Linked Service cho Azure Blob sẽ có connection string của Storage Account, key truy cập hoặc Managed Identity.
Integration Runtime (IR - Cỗ máy thực thi): Đây là trái tim của ADF, là nơi cung cấp năng lực tính toán để thực thi các activities. Có 3 loại IR:
- Azure IR: Mặc định, được Microsoft quản lý hoàn toàn trên Azure. Thích hợp cho việc kết nối và xử lý dữ liệu trên cloud.
- Self-hosted IR (SHIR): Bạn phải cài anh bạn này lên một máy chủ trong mạng nội bộ (on-premise) hoặc trong một Virtual Network (VNet) của Azure. Dùng khi bạn muốn ADF thò tay vào lấy dữ liệu từ các nguồn on-premise mà không muốn phơi chúng ra public internet.
- Azure-SSIS IR: Dành riêng cho các bạn muốn di cư các gói SSIS (SQL Server Integration Services) lên mây và chạy chúng trong ADF.
Tip: Hình dung UI của ADF nhé! Bên trái là thanh điều hướng với các mục Author (nơi bạn tạo Pipeline, Dataset, Data Flow,...), Monitor (theo dõi pipeline chạy), Manage (quản lý Linked Services, IR, Git integration,...). Khi tạo pipeline, bạn sẽ kéo thả các Activities từ thanh công cụ vào một canvas, nối chúng lại với nhau. Nó trực quan lắm!
(Nếu bạn search Azure Data Factory UI trên Google Images, bạn sẽ thấy ngay giao diện làm việc của nó.)
Kết luận
Bài đã dài mình xin dừng tại đây, hẹn gặp mọi người ở phần 2 mình sẽ viết hướng dẫn tạo pipeline với ADF.
Reference
https://learn.microsoft.com/en-us/azure/data-factory/introduction