Data Engineering
32 bài viết
Đọc theo series
Bài mở đầu series nâng cao: đào sâu bản chất DataOps như một hệ socio-technical gồm 3 vòng (dev, value, feedback), ba đặc thù khiến nó khó hơn DevOps, và một kiến trúc tham chiếu end-to-end từ nguồn tới BI/API/ML. Phân biệt DataOps với Data Engineering, MLOps, SRE và mô hình trưởng thành.
Hands-on dựng lớp Transform của ELT bằng dbt theo kiến trúc medallion: cấu trúc project staging/intermediate/marts, khai báo sources & freshness, chọn materialization, viết incremental model và snapshot SCD2, Jinja/macros, ref()/source() sinh DAG, dbt build. Bối cảnh: dựng mart Khách hàng 360 từ core banking.
Hands-on điều phối pipeline ELT production bằng Airflow: thiết kế DAG EL→dbt→test→publish, ba cách tích hợp dbt (BashOperator, astronomer-cosmos, dbt Cloud API), TaskFlow API, scheduling data-aware & sensor, retry/alert/SLA/quarantine, backfill & idempotency, quản lý secret và giám sát production. Bối cảnh báo cáo cuối ngày ngân hàng.
Hands-on CI/CD cho analytics: Git workflow trunk-based (feature→PR→review→merge), ánh xạ môi trường dev/staging/prod, CI trên mỗi PR (lint sqlfluff→compile→slim CI state:modified+→dbt test→chặn merge nếu fail), CD merge→staging→smoke→approve→prod với blue-green/rollback. Có secret theo OIDC, gates ngân hàng, YAML GitHub Actions gần hoàn chỉnh và cách đo DORA cho analytics.
Hands-on chất lượng dữ liệu và hợp đồng dữ liệu: chọn công cụ test theo lớp (dbt tests, Great Expectations, Soda), đặt test đúng vị trí (freshness đầu vào, sau transform, circuit breaker trước publish), viết data contract YAML và enforce trong CI lẫn runtime, phân biệt test với anomaly detection, quarantine dữ liệu xấu và đo lường DQ score. Có 5 block SQL data-test chạy được trên sandbox và YAML contract mẫu.
Hands-on Data Reliability Engineering: áp tư duy SRE cho dữ liệu. Đào sâu 5 trụ observability và CÁCH ĐO thực tế (freshness, volume-baseline động, schema drift, distribution/null, lineage cột→cột), phân biệt với test. Định nghĩa SLI/SLO/error budget/SLA cho data product, alerting chống nhiễu, quy trình incident + runbook + blameless postmortem, và truyền thông khi số liệu báo cáo sai. Có 3 check SQL chạy được trên sandbox.
Hands-on xây nền tảng dữ liệu tự phục vụ để mở rộng DataOps: platform-as-a-product cho người dùng nội bộ, các năng lực self-serve (compute, ingestion, dbt template, Airflow quản lý, CI/CD, quality, catalog, access), golden path/paved road, IaC Terraform cấp phát qua PR, môi trường ephemeral, governance & security-by-default, FinOps, tránh nền tảng thành nút thắt và phân tách trách nhiệm platform vs domain.
Bài tổng kết: case study thực chiến ghép cả 8 bài của series vào một pipeline DataOps end-to-end cho hệ thống báo cáo giám sát NHNN tại một ngân hàng (NCB minh hoạ) — từ core banking qua lakehouse, dbt medallion, Airflow, CI/CD có phê duyệt, data quality, observability tới platform self-service. Trọng tâm tuân thủ ngân hàng: maker-checker, audit trail & lineage đầu-cuối, reproducibility, NĐ13, lộ trình crawl-walk-run và cách đo kết quả.
Áp DataOps cho pipeline thời gian thực chạy 24/7: vì sao streaming khó hơn batch, kiến trúc nguồn→Kafka→Flink/Spark→sink. Đảm bảo đúng đắn (exactly-once, idempotent, schema registry, watermark), data quality inline với dead-letter queue, testing với test topic + replay, observability (consumer lag, checkpoint), deploy bằng savepoint/blue-green, Lambda vs Kappa, và khi nào thực sự cần real-time. Có 1 SQL kiểm bất thường chạy được.
Mở rộng DataOps theo quy mô bằng cách điều khiển pipeline bằng metadata/config thay vì code tay từng cái. Config-driven ingestion, dynamic DAG generation trong Airflow, dbt sinh model bằng macro, test/contract khai báo hàng loạt, metadata registry & lineage tự sinh. Kèm lợi ích, rủi ro hộp đen, và case onboarding hàng trăm bảng core banking vào lakehouse.
Quản lý môi trường và dữ liệu cho pipeline đáng tin: tách dev/staging/prod đúng cách; giải bài toán dữ liệu test khi không được copy dữ liệu khách thật vào non-prod bằng subsetting, synthetic data, masking, zero-copy clone; mẫu Write-Audit-Publish để dữ liệu xấu không lộ ra production. Có 1 block SQL audit control-total chạy được và sơ đồ Mermaid luồng WAP.
DataOps là nền cho MLOps: mô hình chỉ tốt khi dữ liệu tin cậy. Bài này vạch ranh giới DataOps ⟷ MLOps; coi feature pipeline như sản phẩm dữ liệu có test, observability và point-in-time correctness; tập train reproducible cho audit ngân hàng; CI/CD và orchestration chung; lineage nguồn→feature→mô hình→quyết định. Có 2 feature point-in-time chạy được trên sandbox.
DataOps tốt phải vừa tin cậy vừa tiết kiệm. Bài này đưa tư duy FinOps vào vòng đời DataOps: incremental thay full-refresh, chọn materialization đúng, giảm dữ liệu quét, tránh chạy vô ích, right-size compute và quan sát chi phí theo model/pipeline. Có 3 truy vấn chạy được trên sandbox minh hoạ incremental, chỉ chọn cột cần và EXPLAIN chi phí đọc.
Mở rộng DataOps ở quy mô tổ chức bằng mô hình phi tập trung Data Mesh: mỗi domain tự vận hành DataOps cho data product của mình trên nền tảng self-service chung, data contract làm giao diện giữa domain, và federated computational governance nhúng chuẩn chung vào CI như policy-as-code để vừa tự chủ vừa tuân thủ. Kèm SLA/SLO ở quy mô, lineage liên domain, đánh đổi và khi nào mesh phù hợp.
Nhúng bảo mật vào pipeline theo security-by-design thay vì dán vá sau: quản lý secrets & least-privilege, phát hiện/mask/mã hoá PII trong transform, RBAC + row/column-level security ở lớp phục vụ, audit & lineage, tuân thủ NĐ13/NHNN, shift-left policy-as-code. Có 2 block SQL column-masking & row-filter chạy được và sơ đồ Mermaid các lớp bảo mật.
Bài thực chiến về migration/modernization: chuyển hệ báo cáo ngân hàng từ stored procedure/SSIS/SQL chạy tay sang DataOps hiện đại (dbt + Airflow + CI/CD + observability). Trọng tâm: đánh giá & lập bản đồ pipeline, chọn rehost/replatform/refactor, Strangler Fig chạy song song cũ-mới và đối soát trước khi cắt cũ, refactor stored proc thành dbt model, quản lý con người & thay đổi, tránh big-bang rewrite.
Bài hands-on đi từng bước dựng một dự án DataOps hoàn chỉnh từ số 0 tới production cho ngân hàng: repo & cấu trúc thư mục, profiles theo môi trường, khai báo sources + freshness, viết staging/intermediate/marts (fct_transactions_monthly, dim_customer), thêm tests + singular test, dbt docs, đóng gói vào Airflow DAG (EL → run → test → publish), CI trên PR, và xử lý khi test fail.
Khép vòng dữ liệu: không chỉ đưa dữ liệu vào warehouse để phân tích mà đẩy ngược insight (segment, điểm số, gợi ý) ra hệ vận hành (CRM, tổng đài, kênh) để hành động. Bài đi qua Reverse ETL là gì, mẫu kiến trúc dbt → reverse ETL tool → hệ đích, mapping & sync idempotent, và DataOps cho activation: test chất lượng trước khi đẩy, observability, PII. Có 2 block SQL model activation chạy được và sơ đồ Mermaid vòng khép kín.
Xây và vận hành metrics/semantic layer trong pipeline để chấm dứt cảnh 'mỗi báo cáo một con số'. Định nghĩa chỉ tiêu (dư nợ, NIM, CASA, KH hoạt động) một lần as-code — dbt Semantic Layer/MetricFlow, Cube, LookML; headless BI, metric versioned qua CI/test/review, chiều & join tự động, caching, metric test đối soát, và bối cảnh báo cáo ngân hàng chuẩn hoá.
Paradigm điều phối hướng tài sản dữ liệu (asset-based) của Dagster đối lập với hướng tác vụ (task-based) của Airflow. Software-Defined Assets, @asset, asset graph, materialize, tích hợp dbt, data-aware scheduling & freshness, asset checks, I/O manager và observability. So sánh Dagster vs Airflow vs Prefect. Bối cảnh mô hình hoá kho báo cáo gold theo asset để lineage & freshness rõ ràng phục vụ giải trình.
Phân biệt data test (kiểm dữ liệu thật) với unit test (kiểm logic biến đổi trên mẫu cố định), đi sâu dbt unit tests 1.8 (given/expect), fixtures/seeds, TDD cho analytics, các loại test trong pipeline và pyramid test. Có 3 block SQL chạy được (logic biến đổi, data test, reconciliation) và YAML unit test minh hoạ.
Vận hành ĐỘ TIN CẬY dữ liệu ở mức cam kết: định nghĩa Data Downtime, đo bằng SLI (freshness/completeness/độ chính xác/availability), đặt SLO theo tier và quản lý error budget. Playbook xử lý sự cố số liệu ngân hàng — phát hiện, phân loại SEV, thông báo consumer, kiềm chế, khắc phục, RCA (5 whys) và blameless postmortem — cùng MTTD/MTTR và on-call bền vững. Có 3 check SQL chạy được trên sandbox.
Lớp nạp dữ liệu (EL) đáng tin trong DataOps: các mẫu full load, incremental theo watermark, và CDC log-based (Debezium). Idempotent & exactly-once ở tầng nạp (khoá + merge/upsert, dedup theo primary key + version), MERGE vào SCD1/SCD2, xử lý schema drift, backfill an toàn, quarantine bản ghi lỗi và raw zone bất biến. Bối cảnh CDC từ core banking Oracle vào lakehouse near-real-time. Có 2 SQL incremental & dedup chạy được.
Bài khép series nâng cao: mô hình trưởng thành DataOps 6 cấp với rubric tự đánh giá theo 7 chiều, cách đo cải tiến (DORA + chất lượng + thời gian giao), lộ trình nâng cấp theo giai đoạn (đau nhất trước, không big-bang), và xu hướng AI-assisted DataOps (LLM/GenAI, anomaly detection, agent vận hành) với guardrail cho ngân hàng. Kèm bản đồ 24 bài.
Analytics Engineer (AE) là cầu nối giữa data engineer và data analyst, ra đời cùng modern data stack & dbt. Bài mô tả AE làm gì (biến dữ liệu thô thành mart sạch, có test & docs để nghiệp vụ tự phục vụ), phân biệt DE/AE/DA, kỹ năng cần có, quy trình làm việc chuẩn (yêu cầu → mô hình → dbt model + test + docs → PR/CI → deploy), nguyên tắc analytics-as-code, mô hình tổ chức và lộ trình sự nghiệp trong bối cảnh ngân hàng.
Hiện thực ba trường phái mô hình hoá ngay trong lớp mart dbt: Kimball (fct_/dim_, surrogate key, SCD2 bằng snapshot), One Big Table cho warehouse cột, và Data Vault (hub/link/satellite) khi cần audit. Bảng so sánh tiêu chí, chọn mô hình ở lớp gold, và 3 block SQL chạy được: dim_customer, fct_transactions, OBT khách-giao dịch.
Mở rộng DataOps tới tầng phục vụ/BI — nơi thường bị bỏ quên: pipeline sạch nhưng dashboard vẫn vỡ. Định nghĩa dashboard/metric/model BI as-code trong Git (LookML, YAML/JSON export), version-review-CI-tái lập; các lớp kiểm thử BI (validator, content, data test đối soát, visual regression, performance); nhất quán qua semantic layer; CI/CD & quản trị dashboard; observability dọn dashboard chết; bối cảnh báo cáo NHNN.
Đưa quản trị dữ liệu vào pipeline dưới dạng code tự động thay vì tài liệu tĩnh hay gác cổng thủ công: compliance-as-code với OPA/Rego và dbt project evaluator chặn vi phạm trong CI, gắn tag PII tự động và lan truyền theo lineage, grants/masking/RLS as code, audit và lineage phục vụ giải trình, nhúng kiểm tra NĐ13/NHNN, governance-by-default trên golden path, cùng cách đo lường và cân bằng kiểm soát với tốc độ trong ngân hàng.
Cẩm nang tham chiếu nhanh các mẫu (pattern) đã kiểm chứng khi thiết kế pipeline dữ liệu: idempotency, incremental có backfill, medallion, WAP, circuit breaker, dead-letter, data contract, metadata-driven, SCD... và các phản mẫu cần tránh: full-refresh vô ích, hardcode, silent failure, big-ball-of-mud SQL. Mỗi mẫu trình bày vấn đề → giải pháp → khi nào dùng, kèm 2 block SQL chạy được và sơ đồ Mermaid.
Bảo đảm nền tảng dữ liệu sống sót sự cố lớn: phân biệt backup vs DR vs BCP; các rủi ro cần phòng (mất vùng, corruption, xoá nhầm, ransomware, pipeline hỏng bảng); đặt RTO/RPO theo mức quan trọng; bốn chiến lược DR đánh đổi chi phí/tốc độ; backup dữ liệu + metadata, test khôi phục, lakehouse Time Travel, khôi phục pipeline từ Git, runbook và game day. Có 1 block SQL đối soát control-total chạy được và sơ đồ Mermaid.
Kỹ năng thực chiến gỡ lỗi và tối ưu khi pipeline chậm hoặc sai — phần ít được dạy bài bản. Phân loại vấn đề (fail/chậm/số sai), quy trình debug số liệu sai bằng lineage + bisect + kiểm giả định, profiling hiệu năng qua EXPLAIN và query profile, xử lý lỗi phổ biến và cách phòng ngừa. Có 3 check SQL chạy được trên sandbox.
Bài khép series: blueprint tham chiếu để dựng một stack DataOps hoàn chỉnh bằng công cụ mã nguồn mở, tự host — phù hợp ngân hàng muốn kiểm soát dữ liệu, tuân thủ và tránh lock-in. Đi qua 10 lớp (storage, ingestion, transform, orchestration, quality, observability, catalog, BI, CI/CD, hạ tầng) với đề xuất công cụ cụ thể, nguyên tắc lắp ghép, lộ trình MVP→mở rộng, và bản đồ tổng kết toàn bộ 32 bài.