Bỏ qua nội dung

Fabric Metadata-Driven Framework (FMD): Tự Động Hóa Pipeline Trong Microsoft Fabric

Fabric Metadata-Driven Framework (FMD)

Trong kỷ nguyên của Data Lakehouse, việc xây dựng và duy trì hàng trăm data pipeline thủ công sẽ nhanh chóng biến thành “cơn ác mộng” bảo trì. Đó là lý do các hệ thống Metadata-Driven (điều khiển bằng siêu dữ liệu) ra đời.

Hôm nay, chúng ta sẽ tìm hiểu về Fabric Metadata-Driven Framework (FMD) - một framework mã nguồn mở mạnh mẽ được thiết kế đặc biệt cho nền tảng Microsoft Fabric, cho phép bạn tự động hóa, điều phối và tiêu chuẩn hóa toàn bộ luồng dữ liệu.

Mã Nguồn (GitHub): kythuatdulieu/FMD_FRAMEWORK (Được fork và tùy chỉnh từ repo gốc của Erwin de Kreuk)


1. FMD Framework Là Gì?

FMD Framework là một hệ thống cấu trúc sẵn (pre-built framework) xây dựng trên Microsoft Fabric. Nó áp dụng các quy chuẩn thiết kế Data Pipeline theo Medallion Architecture (Bronze - Silver - Gold) và tiếp cận theo tư duy Lakehouse-First.

Thay vì tạo riêng biệt hàng tá Data Factory Pipelines cho mỗi nguồn dữ liệu khác nhau (như SQL Server, API, Oracle, CSV files), FMD tập trung logic vào Metadata (các bảng cấu hình trong cơ sở dữ liệu Fabric SQL Database). Hệ thống sẽ đọc các siêu dữ liệu này ở thời điểm thực thi (runtime) để tự động sinh ra các tham số và linh hoạt xử lý luồng di chuyển dữ liệu.

FMD Overview Hình 1: Kiến trúc tổng quan của FMD Framework, từ Source Systems đi qua các luồng xử lý tự động đến Business Domains

Tại sao lại chọn FMD Framework?

Môi trường dữ liệu hiện đại đòi hỏi sự nhanh nhẹn, khả năng mở rộng và tính nhất quán. FMD đơn giản hóa những thách thức này bằng cách cung cấp:

  • Dynamic Pipelines (Luồng dữ liệu động): Tự động điều chỉnh quá trình thực thi pipeline dựa trên metadata. Lý tưởng cho môi trường đa luồng, xử lý dữ liệu ở quy mô lớn (large-scale).
  • Sự Nhất Quán (Consistency): Đảm bảo mọi bước từ Ingestion (thu thập), Processing (xử lý) đến Publishing (công bố) đều tuân thủ một chuẩn duy nhất trên toàn bộ hệ thống.
  • Giảm Thiểu Nỗ Lực Kỹ Thuật: Cung cấp sẵn các Pattern tái sử dụng được (reusable patterns), giúp team kỹ thuật không cần “phát minh lại bánh xe”.
  • Centralized Configuration: Tập trung hóa cấu hình cho tất cả các thực thể dữ liệu (data entities).

2. Kiến Trúc Sâu Bên Trong FMD

FMD Framework được thiết kế dưới dạng module, tách biệt rõ ràng giữa Dữ Liệu (Data), Mã Nguồn (Code) và Điều Phối (Orchestration).

2.1. Quản Trị Bằng Siêu Dữ Liệu (Metadata-Driven Database)

Trái tim của hệ thống là một cơ sở dữ liệu (Fabric SQL Database) làm nhiệm vụ lưu trữ toàn bộ cấu hình lõi:

  • Danh sách các nguồn dữ liệu (Source Connections).
  • Chu kỳ chạy (Schedules).
  • Các luật làm sạch và biến đổi dữ liệu (Cleansing Rules).
  • Tình trạng xử lý của từng thực thể (Load Statuses).

Để hình dung cụ thể, việc onboard một bảng mới chỉ là một dòng INSERT vào bảng cấu hình — không viết pipeline nào cả:

INSERT INTO meta.entity_config
(source_system, source_schema, source_table, load_type,
watermark_column, target_lakehouse, is_active)
VALUES
('SQL_ERP', 'dbo', 'SalesOrders', 'INCREMENTAL',
'ModifiedDate', 'LH_Bronze_Sales', 1);

Lúc runtime, pipeline “khung” duy nhất thực hiện vòng lặp: Lookup đọc danh sách entity đang active → ForEach chạy song song (batch count cấu hình được) → mỗi vòng gọi Copy Activity với connection string, câu query watermark và đường dẫn đích đều được sinh động từ metadata. Mẫu watermark tăng dần (WHERE ModifiedDate > @last_watermark) chính là Incremental Load kinh điển — framework chỉ chuẩn hóa nó thành cấu hình.

Trade-off của metadata-driven: cực mạnh khi có hàng trăm nguồn cùng mẫu (bảng SQL, file CSV), nhưng debug khó hơn pipeline viết tay — lỗi nằm trong dữ liệu cấu hình chứ không trong code, và các nguồn “dị dạng” (API phân trang phức tạp, schema thay đổi liên tục) vẫn phải viết notebook riêng. Quy tắc thực dụng: 80% nguồn chuẩn đi qua framework, 20% đặc thù viết tay, đừng cố nhét tất cả vào metadata.

Metadata Overview Hình 2: Cấu trúc các bảng Metadata điều khiển toàn bộ luồng chạy của hệ thống

2.2. Tiến Trình Xử Lý Dữ Liệu (Medallion Architecture)

FMD tích hợp chặt chẽ với kiến trúc huy chương của Microsoft Fabric:

Lakehouse Overview Hình 3: Thiết kế Data Lakehouse tuân theo kiến trúc Medallion (Landing -> Bronze -> Silver -> Gold)

  • Landing Zone / Bronze Layer: Nơi dữ liệu thô (Raw) được kéo vào hệ thống một cách tự động thông qua các Copy Data Activities động, hỗ trợ đa dạng nguồn dữ liệu.
  • Silver Layer: Sử dụng Fabric Notebooks (PySpark) được tham số hóa (Parameterized Notebooks) để chạy các rule làm sạch (Data Cleansing), khử trùng lặp và ghi dữ liệu thành định dạng Delta Lake chuẩn hóa.
  • Gold Layer: Tạo các mô hình dữ liệu (Data Model) phục vụ sẵn sàng cho việc báo cáo qua PowerBI — thường theo Star Schema, và tận dụng chế độ Direct Lake của Fabric: PowerBI đọc thẳng file Delta trong OneLake không cần import, đổi lại phải giữ bảng Gold được compaction tốt (OPTIMIZE) vì Direct Lake nhạy với small files.

Một notebook Silver tham số hóa nhận cấu hình từ metadata trông như sau:

# Parameters cell - Fabric truyền giá trị từ bảng meta.entity_config
entity, cleansing_rules = "SalesOrders", ["trim_strings", "dedupe:order_id"]
df = spark.read.format("delta").load(f"Tables/bronze_{entity}")
for rule in cleansing_rules:
df = apply_rule(df, rule) # rule engine dùng chung toàn framework
(df.write.format("delta").mode("overwrite")
.option("mergeSchema", "true") # schema evolution có kiểm soát
.save(f"Tables/silver_{entity}"))

Cùng một notebook phục vụ mọi entity — thêm nguồn mới không sinh thêm code phải bảo trì, chỉ sinh thêm một dòng metadata. So sánh với cách tiếp cận asset-based của Dagster trong bài Software-Defined Assets.

2.3. Điều Phối Bằng Taskflow

Thay vì dùng các hệ thống orchestration bên ngoài, FMD tận dụng sức mạnh điều phối ngay bên trong Fabric thông qua Taskflow.

Process Overview Hình 4: Cách Taskflow phối hợp các Pipeline và Notebooks để chuyển đổi dữ liệu qua các lớp

Nó hỗ trợ kích hoạt tuần tự (Sequential) hoặc song song (Parallel) các chuỗi pipeline và quản lý dependencies chặt chẽ từ lúc Load Data đến lúc Transformation.


3. Khả Năng Mở Rộng Theo Business Domains (Data Mesh)

Một tính năng cực kỳ mạnh mẽ của FMD là khả năng phân bổ theo Business Domains. FMD đã bổ sung tính năng Business Domain Deployment, giúp thiết lập một kiến trúc dạng Data Mesh.

Cụ thể, FMD cung cấp module giúp tự động hóa quá trình sinh ra các Workspace riêng biệt trên Microsoft Fabric cho từng phòng ban (ví dụ: Sales, HR, Marketing). Mỗi Domain sẽ tự sở hữu hạ tầng Lakehouse của mình, tự quản lý dữ liệu đặc thù nhưng toàn bộ tiến trình vẫn tuân thủ theo các siêu dữ liệu quản trị tập trung (Centralized Governance) — đúng nguyên tắc “federated computational governance” của Data Mesh: phân quyền sở hữu dữ liệu nhưng chuẩn hóa cách vận hành.

Workspace Overview Hình 5: Chiến lược phân tách Workspaces giữa Admin (quản trị tập trung) và các Domain nghiệp vụ


4. Quản Trị & Giám Sát (Governance & Observability)

Bên cạnh khả năng vận chuyển dữ liệu, FMD còn đóng vai trò như một “mắt thần” giám sát (Data Observability) cực kỳ nhạy bén:

  • Tự động theo dõi số lượng bản ghi (rows processed) tại mọi điểm chuyển giao dữ liệu.
  • Lưu trữ log chi tiết về trạng thái tiến trình (Thành công, Thất bại) kèm theo Timestamp chính xác từng giây.
  • Ghi nhận Audit Logs hoàn chỉnh, sẵn sàng xuất thẳng ra các Dashboard giám sát tổng thể. Đội ngũ Data Engineering có thể thiết lập cảnh báo (alert) để chủ động ứng cứu ngay khi có một node pipeline báo đỏ, trước khi người dùng cuối (Business Users) phát hiện ra dữ liệu bị sai lệch.

5. Tổng Kết & Use Cases Tiêu Biểu

Nếu doanh nghiệp của bạn đang bắt đầu hành trình chuyển đổi (migration) lên Microsoft Fabric từ Synapse hoặc Azure Data Factory cũ, thì FMD Framework là một lựa chọn lý tưởng. Việc tách rời logic lập trình (Code) khỏi thông tin cấu hình dữ liệu (Metadata) giúp đội ngũ của bạn dễ dàng duy trì hàng trăm, thậm chí hàng ngàn data pipelines mà không phải viết lại code mỗi khi có thêm một nguồn dữ liệu mới.

Các Use Case phù hợp nhất:

  • Xây dựng Data Lakehouse chuẩn doanh nghiệp lớn (Enterprise-grade).
  • Tích hợp dữ liệu từ nhiều nguồn đa dạng theo một chuẩn duy nhất (Multi-source data ingestion).
  • Quá trình onboarding thêm các Data Source mới chỉ cần điền vào bảng cấu hình (No-code / Low-code ingestion).
  • Triển khai mô hình phân quyền dữ liệu theo Data Mesh / Domains.

Khám phá cách cấu hình và triển khai chi tiết trên Wiki của dự án FMD Framework gốc.

Nguồn Tham Khảo

Bình luận & Thảo luận