Enterprise Data Mesh Architecture & Federated Governance Engine
Panduan belajar dan handbook implementasi arsitektur terdesentralisasi Enterprise Data Mesh untuk PT NusaFinance: memecah data warehouse monolitik menjadi 5 domain data product otonom, menegakkan kontrak data CI/CD (ODCS), dan memangkas waktu tunggu analisis Risk 360 dari 3-6 minggu menjadi <15 menit dengan kepatuhan penuh UU PDP No. 27/2022.
Belajar Arsitektur Data: Dari Monolith ke Data Mesh
Panduan ringkas dan simulator interaktif untuk memahami konsep dasar arsitektur data modern, cara kerja Data Mesh, dan persiapan interview teknis.
Perbandingan: Monolith vs Data Mesh
Semua tim (Leasing, IoT, Finance, Risk) mengirim data mentah ke 1 Tim Data Pusat.
- Tim data pusat jadi antrean macet (bottleneck).
- Permintaan laporan baru butuh waktu berminggu-minggu.
- Perubahan kolom database sering bikin dashboard rusak diam-diam.
Setiap tim divisi bisnis merawat datanya sendiri dan menyajikannya sebagai produk siap pakai.
- Data dirawat oleh tim yang paling paham konteks bisnisnya.
- Ada perjanjian kontrak data (Data Contract) agar sistem aman.
- Tim lain bisa langsung mengakses data tanpa antre di tim pusat.
4 Pilar Utama Data Mesh
Yang membuat data adalah yang bertanggung jawab merawatnya, bukan dilempar ke tim IT lain.
Data diperlakukan sebagai produk resmi: ada dokumentasi, jaminan kualitas, dan format yang rapi.
Infrastruktur disediakan otomatis sehingga tim bisnis tidak perlu pusing mengurus server.
Aturan keamanan dan privasi (seperti UU PDP) dicek otomatis oleh sistem, bukan lewat rapat birokrasi.
📖 Buka Naskah & Spesifikasi Arsitektur Lengkap (SQL DDL, ODCS YAML & ADR 001–008)Klik untuk Membaca Selengkapnya ▾
Tujuan Modul Belajar (Study Handbook Objective):
Modul ini disusun khusus sebagai Masterclass & Architecture Handbook untuk mempelajari arsitektur data modern dari dasar (*from scratch*) hingga implementasi produksi (*production-grade*). Mengupas tuntas Framework Data Mesh, perbedaannya dengan Data Warehouse & Lakehouse, studi kasus nyata multifinance alat berat (PT NusaFinance), kepatuhan regulasi privasi Indonesia (UU PDP No. 27/2022 & OJK), serta 10 Simulasi Pertanyaan Wawancara Data Architect.
01. Titik Temu Arsitektur: Monolith vs Data Mesh (Analogi & Fondasi)
Bagi seorang Data Engineer atau Data Architect, memahami alasan di balik lahirnya Data Mesh adalah langkah paling fundamental. Banyak perusahaan terjebak dalam mitos bahwa membeli teknologi modern (seperti Snowflake, Databricks, atau BigQuery) otomatis menyelesaikan masalah data mereka. Faktanya, masalah terbesar dalam arsitektur data bukan terletak pada *software*, melainkan pada struktur organisasi dan kepemilikan data (bottleneck sosio-teknikal).
ANALOGI DAPUR RESTORAN VS FOOD COURT OTONOM:
1. TRADISIONAL MONOLITH (DAPUR TERPUSAT):
[Dapur Masakan Padang] ──┐
[Dapur Sushi Jepang] ──┼──> [3 Chef Data Pusat] ──> [Etalase Makanan Campur] ──> [Pelanggan Bingung]
[Dapur Steak Western] ──┘ ▲ Kelelahan & Antrean Panjang
▲ Tidak Paham Resep Masakan
▲ Backlog 3-6 Minggu
2. DATA MESH (FOOD COURT STANDAR TINGGI):
[Stand Padang (Domain A)] ──> [Menu Rendang Terstandar (Data Product)] ──┐
[Stand Sushi (Domain B)] ──> [Menu Salmon Terstandar (Data Product)] ──┼──> [Konsumen Bebas Memilih]
[Stand Steak (Domain C)] ──> [Menu Wagyu Terstandar (Data Product)] ──┘ (Diperiksa Otomatis oleh
Standar BPOM/CI-CD)Mengapa Tim Data Terpusat Selalu Menjadi Hambatan (Bottleneck)?
Dalam arsitektur monolitik tradisional (Enterprise Data Warehouse atau Central Data Lake):
- Pemisahan Konteks Bisnis: Tim data pusat bertanggung jawab membersihkan dan menyajikan data dari puluhan sistem operasional yang tidak mereka buat sendiri. Ketika ada angka aneh pada kolom
interest_rate, tim data pusat tidak tahu apakah itu promo khusus, diskon cabang, atau *bug* aplikasi. - Ketiadaan Tanggung Jawab Produsen (Producer Alienation): Tim pengembang aplikasi (Software Engineers) menganggap analitik bukan urusan mereka. Ketika mereka mengubah tipe kolom
tenordari integer menjadi string di basis data operasional, pipeline ETL di hilir seketika mati (*silent breakage*). - Skalabilitas Kombinatorial: Secara matematis, beban koordinasi tim pusat bertumbuh secara kombinatorial terhadap jumlah domain bisnis N:
Di mana N adalah jumlah domain operasional dan M adalah jumlah konsumen analitik. Pada skala 12 domain dan 25 konsumen, terdapat lebih dari 366 titik koordinasi manual yang membebani 3–5 engineer data pusat.
| Dimensi Arsitektur | Data Warehouse Tradisional (EDW) | Centralized Data Lakehouse | Enterprise Data Mesh |
|---|---|---|---|
| Kepemilikan Data | Terpusat di Tim BI / Data Warehouse | Terpusat di Tim Data Platform | Terdesentralisasi ke Tim Domain Bisnis |
| Paradigma Sistem | Monolitik Relasional | Monolitik Object Storage + Compute | Jaringan Node Otonom (Mesh of Products) |
| Lead Time Permintaan | 4–8 Minggu per Permintaan ETL | 3–6 Minggu per Ingest Tabel | < 15 Menit via Self-Serve Output Port |
| Evolusi Skema Data | Rentan; baru diperbaiki setelah laporan error | Brittle; mengandalkan crawler metadata | Kontrak Data CI/CD (ODCS SemVer) |
| Kepatuhan Privasi (PII) | Spreadsheet izin akses manual | Izin level bucket / folder kasar | Dynamic Row-Level Security & Regex Linter |
| Penyebab Kegagalan | Tim pusat kehabisan kapasitas kerja | Menjadi "Data Swamp" tanpa pemilik | Otonom & Skalabel secara Horizontal |
02. 4 Pilar Utama Data Mesh (Zhamak Dehghani)
Konsep Data Mesh diperkenalkan pertama kali oleh Zhamak Dehghani (mantan Direktur Teknologi di Thoughtworks) pada tahun 2019 dan 2022. Data Mesh bertumpu pada empat pilar utama yang saling mengunci:
┌────────────────────────────────────────────────────────────────────────────────────────┐
│ 4 PILAR FUNDAMENTAL DATA MESH │
├───────────────────────────┬───────────────────────────┬────────────────────────────────┤
│ 01. DOMAIN OWNERSHIP │ 02. DATA AS A PRODUCT │ 03. SELF-SERVE DATA PLATFORM │
│ Tim domain bisnis │ Data analitik dikemas │ Abstraksi infrastruktur yang │
│ memiliki & merawat data │ sebagai produk bernilai │ memudahkan tim domain merilis │
│ analitik mereka sendiri. │ tinggi dengan SLA resmi. │ data product tanpa pusing infra│
├───────────────────────────┴───────────────────────────┴────────────────────────────────┤
│ 04. FEDERATED COMPUTATIONAL GOVERNANCE │
│ Standar keamanan, audit regulasi, dan interoperabilitas ditegakkan lewat kodingan CI │
└────────────────────────────────────────────────────────────────────────────────────────┘Pilar 1: Domain-Oriented Decentralized Data Ownership
Kepemilikan data dikembalikan ke tim yang paling memahami maknanya, mengikuti prinsip Bounded Context dari Eric Evans (*Domain-Driven Design*). Tim Core Leasing merawat data leasing, tim Fleet IoT merawat data sensor alat berat, dan tim Billing merawat data penagihan.
Pilar 2: Data as a Product (DaaP)
Data bukan sekadar dump database atau tabel mentah, melainkan produk yang memiliki *Product Manager*, pengguna (*consumers*), dokumentasi lengkap, waktu aktif (*uptime*), dan jaminan kesegaran (*freshness SLA*). Setiap data product harus memenuhi standar kelayakan DATSIS:
- Discoverable: Mudah dicari di katalog data perusahaan.
- Addressable: Memiliki alamat URL/URI permanen yang stabil.
- Trustworthy: Memiliki Service Level Objective (SLO) dan uji kualitas data otomatis.
- Self-describing: Memiliki skema data, tipe, dan contoh kueri yang jelas.
- Interoperable: Menggunakan format terbuka standar industri (ANSI SQL, Apache Parquet).
- Secure: Terlindungi kontrol akses berbasis peran (RBAC) dan masking data rahasia.
Pilar 3: Self-Serve Data Infrastructure Platform
Agar tim domain tidak perlu menjadi ahli infrastruktur cloud, tim platform pusat menyediakan *blueprints* mandiri: template repositori Git, pipeline CI/CD siap pakai, provisioning storage otomatis, dan query engine federasi.
Pilar 4: Federated Computational Governance
Tata kelola tidak lagi berupa rapat birokrasi mingguan atau dokumen PDF tebal yang berdebu. Aturan keamanan (seperti masking NIK untuk kepatuhan UU PDP) ditulis sebagai skrip otomatis (computational) yang menguji setiap Pull Request di pipeline Git.
03. Studi Kasus Nyata: PT NusaFinance (Multifinance Alat Berat)
Untuk memahami penerapan praktisnya, mari pelajari studi kasus PT NusaFinance, sebuah perusahaan pembiayaan (*multifinance*) komersial terkemuka di Indonesia:
EKOSISTEM OPERASIONAL PT NUSAFINANCE:
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ TAMBANG BATUBARA│ │ KELAPA SAWIT │ │ PROYEK INFRA │
│ Kalimantan Timur│ │ Riau & Sumsel │ │ Tol Trans Jawa │
│ (Excavator 20T) │ │ (Dump Truck) │ │ (Bulldozer D8R) │
└────────┬────────┘ └────────┬────────┘ └────────┬────────┘
└─────────────────────────┼─────────────────────────┘
▼
[PT NusaFinance Data Ecosystem]
┌─────────────────────────────────────────────────────────┐
│ • 14,800 Kontrak Pembiayaan Aktif (Nilai Miliaran Rp) │
│ • 8,400 Mesin Terhubung Telematika IoT (Jam & GPS) │
│ • 45 Kantor Cabang di Seluruh Indonesia │
│ • Kewajiban Regulasi: OJK & UU PDP No. 27/2022 │
└─────────────────────────────────────────────────────────┘Tantangan Bisnis Utama: Kebutuhan Analisis "Risk 360"
Ketika komite kredit ingin menyetujui restrukturisasi utang debitur bernilai miliaran Rupiah, mereka membutuhkan laporan holistik bernama Risk 360:
- Berapa sisa pokok utang debitur saat ini? (*Domain Leasing*)
- Apakah alat beratnya masih beroperasi di konsesi tambang atau sinyal GPS-nya hilang? (*Domain Telematika IoT*)
- Bagaimana skor kredit historis dan probabilitas default-nya? (*Domain Credit Risk*)
- Apakah ada keterlambatan pembayaran cicilan (Days Past Due)? (*Domain Finance Billing*)
Sebelum Data Mesh, tim data pusat membutuhkan 3 hingga 6 minggu untuk menarik data dari 4 database berbeda, membersihkannya di Excel, dan menggabungkannya. Pada saat laporan selesai, debitur mungkin sudah gagal bayar atau unit alat beratnya sudah dipindahtangankan secara ilegal!
Kewajiban Regulasi Indonesia
- UU PDP No. 27/2022 (Undang-Undang Pelindungan Data Pribadi): Pasal 16 & 20 mewajibkan enkripsi dan *pseudonymization* data identitas spesifik seperti NIK (Nomor Induk Kependudukan), nomor telepon, dan NPWP penjamin. Pelanggaran dapat dikenakan denda hingga 2% dari total pendapatan tahunan.
- POJK No. 35/POJK.05/2018: Regulasi Otoritas Jasa Keuangan mengenai penerapan manajemen risiko bagi perusahaan pembiayaan, mewajibkan pemantauan jaminan aset dan keakuratan klasifikasi kualitas pembiayaan secara berkala.
04. Pemodelan 5 Bounded Context & Topologi Domain
Mengikuti prinsip *Domain-Driven Design (DDD)*, sistem monolitik PT NusaFinance dipecah menjadi 5 Domain Bisnis Otonom dengan batas tanggung jawab (*Bounded Context*) yang jelas:
TOPOLOGI 5 DOMAIN PT NUSAFINANCE & ALIRAN RISK 360:
┌─────────────────────────────────────────────────────────────────────────────────────────┐
│ TOPOLOGI DOMAIN MESH │
│ │
│ ┌──────────────────────┐ ┌──────────────────────┐ ┌───────────────────────────┐ │
│ │ 1. CORE LEASING │ │ 2. ASSET EQUIPMENT │ │ 3. CREDIT RISK & SCORING │ │
│ │ Entitas: Kontrak, │ │ Entitas: Mesin IoT, │ │ Entitas: Underwriting, │ │
│ │ Tenor, Pokok Utang, │ │ Jam Operasi, GPS, │ │ Probabilitas Default, │ │
│ │ Bunga Pembiayaan │ │ Kondisi Jaminan │ │ Peringkat Risiko OJK │ │
│ │ Schema: │ │ Schema: │ │ Schema: │ │
│ │ domain_leasing │ │ domain_equipment │ │ domain_risk │ │
│ └──────────┬───────────┘ └──────────┬───────────┘ └─────────────┬─────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ [leasing_dp port] [equipment_dp port] [risk_dp port] │
│ │ │ │ │
│ └──────────────────┐ │ ┌─────────────────────┘ │
│ │ │ │ │
│ ┌──────────────────────┐ ▼ ▼ ▼ ┌───────────────────────────┐ │
│ │ 4. CUSTOMER & KYC │ ┌──────────────────────┐ │ 5. BILLING & TREASURY │ │
│ │ Entitas: Identitas, │──>│ CROSS-DOMAIN │ │ Entitas: Invoice, │ │
│ │ NIK, NPWP, PT Debitur│ │ RISK 360 ENGINE │<──│ Pelunasan, Arrears, │ │
│ │ (UU PDP Masked View)│ │ Kueri: <15 Menit │ │ Days Past Due (DPD) │ │
│ │ Schema: │ │ (Trino In-Memory) │ │ Schema: │ │
│ │ domain_crm │ └──────────────────────┘ │ domain_finance │ │
│ └──────────┬───────────┘ └─────────────┬─────────────┘ │
│ ▼ ▼ │
│ [crm_dp port] [finance_dp port] │
└─────────────────────────────────────────────────────────────────────────────────────────┘Rincian 5 Domain Bounded Context:
- Core Leasing (
domain_leasing): Bertanggung jawab atas siklus hidup kontrak pembiayaan, plafon pembiayaan, jangka waktu (*tenor*), suku bunga tahunan, dan tanggal pencairan dana. - Asset & Heavy Equipment (
domain_equipment): Bertanggung jawab atas data fisik mesin tambang/kebun (nomor rangka, merek seperti Komatsu/CAT), data sensor IoT (jam operasi mesin per hari), koordinat geofencing GPS, dan status kesehatan jaminan fisik. - Credit Risk & Underwriting (
domain_risk): Bertanggung jawab atas model *machine learning* penilaian probabilitas gagal bayar (*Probability of Default - PD*), skor kredit debitur, dan rasio kemampuan membayar (*DSCR*). - Customer Relationship & KYC (
domain_crm): Bertanggung jawab atas verifikasi identitas debitur korporasi dan penjamin perorangan, nomor NIK, NPWP, serta wajib menerapkan proteksi privasi UU PDP. - Billing & Treasury (
domain_finance): Bertanggung jawab atas pencatatan jadwal cicilan, mutasi virtual account bank, denda keterlambatan, dan penghitungan *Days Past Due (DPD)* secara riil.
05. Anatomi Data Product & Standarisasi Output Ports
Salah satu kesalahan paling umum dalam memahami Data Mesh adalah menganggap tabel database biasa sebagai Data Product. Mari pelajari anatomi lengkap sebuah Data Product:
ANATOMI LENGKAP SEBUAH DATA PRODUCT:
┌────────────────────────────────────────────────────────────────────────────────┐
│ BATAS UNIT DATA PRODUCT │
│ │
│ [Input Ports] ──────> [Engine Transformasi] ────────> [Private Data Store] │
│ (CDC / Kafka / API) (dbt / Python / PySpark) (Tabel Internal Rahasia)│
│ │ │
│ ▼ │
│ [Port Observabilitas] <────────────────────────────── [Public Output Ports] │
│ • SLA Kesegaran Data • View SQL (ANSI) │
│ • Kontrak ODCS YAML • File Parquet / S3 │
│ • Garis Silsilah (Lineage) • REST API Read-Only │
└────────────────────────────────────────────────────────────────────────────────┘Sebuah Data Product memisahkan secara tegas antara Tabel Internal Operasional (yang boleh diubah-ubah oleh tim domain tanpa izin siapa pun) dan Public Output Ports (antarmuka resmi yang terkunci kontrak dan tidak boleh berubah sembarangan).
Spesifikasi SQL DDL: Public Output Ports Produksi
-- ============================================================================
-- DOMAIN 01: CORE LEASING (OUTPUT PORT RESMI)
-- ============================================================================
CREATE SCHEMA IF NOT EXISTS leasing_dp;
CREATE OR REPLACE VIEW leasing_dp.active_portfolio AS
SELECT
contract_id,
borrower_id,
asset_id,
principal_amount::NUMERIC(15, 2) AS principal_idr,
tenor_months,
interest_rate_pct::NUMERIC(5, 2) AS annual_interest_pct,
disbursement_date,
maturity_date,
contract_status,
updated_at AS data_freshness_timestamp
FROM domain_leasing.contracts
WHERE contract_status IN ('ACTIVE', 'RESTRUCTURED', 'GRACE_PERIOD');
-- ============================================================================
-- DOMAIN 02: ASSET TELEMATICS IOT (OUTPUT PORT RESMI)
-- ============================================================================
CREATE SCHEMA IF NOT EXISTS equipment_dp;
CREATE OR REPLACE VIEW equipment_dp.telematics_summary AS
SELECT
asset_id,
machine_category, -- Excavator, Bulldozer, Dump Truck
brand_model, -- Komatsu PC200-8, CAT 320D
total_operating_hours,
last_known_latitude,
last_known_longitude,
telematics_signal_status, -- ONLINE, SIGNAL_LOST, GEOFENCE_VIOLATION
collateral_health_tier, -- TIER_1_OPTIMAL, TIER_2_WARNING, TIER_3_CRITICAL
last_ping_timestamp
FROM domain_equipment.telematics_snapshots;
-- ============================================================================
-- DOMAIN 04: CUSTOMER CRM (OUTPUT PORT DENGAN MASKING DINAMIS UU PDP)
-- ============================================================================
CREATE SCHEMA IF NOT EXISTS crm_dp;
CREATE OR REPLACE VIEW crm_dp.borrower_directory AS
SELECT
borrower_id,
company_name,
business_sector,
-- Masking Deterministik UU PDP: Hanya 4 digit awal & 4 digit akhir yang terlihat
CASE
WHEN pg_has_role(CURRENT_USER, 'role_compliance_auditor', 'USAGE') THEN nik_raw
ELSE CONCAT(SUBSTRING(nik_raw, 1, 4), '********', SUBSTRING(nik_raw, 13, 4))
END AS nik_masked,
CONCAT(SUBSTRING(phone_number, 1, 4), '****', SUBSTRING(phone_number, 9, 4)) AS contact_masked,
registered_province,
kyc_compliance_status
FROM domain_crm.borrowers;06. Data Contracts (ODCS) & Shift-Left CI/CD Governance
Bagaimana cara memastikan skema data tidak berubah diam-diam dan merusak sistem lain? Jawabannya adalah Data Contract.
ALUR PENGUJIAN KONTRAK DI GITHUB ACTIONS (SHIFT-LEFT):
[Developer Domain] ──> Membuat Pull Request dengan Perubahan Skema
│
▼
[GitHub Actions CI] ──> Menjalankan Validator computational_contract_validator.py
├── 1. Validasi Sintaks ODCS YAML
├── 2. Cek Kompatibilitas SemVer (Cegah Breaking Change)
├── 3. Uji Kualitas Data (Great Expectations)
└── 4. Scanner Regex UU PDP (Cegah NIK 16-Digit Polos)
│
┌─────────┴─────────┐
│ │
[LULUS] [GAGAL]
│ │
▼ ▼
[Deploy ke Staging] [PR Diblokir Otomatis]
[Katalog Diperbarui] [Developer Diberi Notifikasi Error]Spesifikasi Kontrak Standar Industri (leasing_contract_v2.yaml)
Kontrak ini ditulis menggunakan format Open Data Contract Standard (ODCS):
version: 2.1.0
kind: DataContract
metadata:
domain: Core Leasing
dataProduct: Active Lease Portfolio
ownerEmail: squads-leasing@nusafinance.co.id
repository: github.com/nusafinance/mesh-domain-leasing
classification: Internal Confidentially Restricted
dataset:
name: leasing_dp.active_portfolio
physicalType: relational-view
refreshInterval: 0 * * * * # Eksekusi Setiap Jam
sla:
freshnessMinutes: 60
availabilityPct: 99.8
schema:
- name: contract_id
type: string
primaryKey: true
required: true
tests:
- unique
- not_null
- regex: "^CTR-[0-9]{4}-[A-Z]{3}-[0-9]{4}$"
- name: borrower_id
type: string
required: true
foreignKey: crm_dp.borrower_directory.borrower_id
- name: asset_id
type: string
required: true
foreignKey: equipment_dp.telematics_summary.asset_id
- name: principal_idr
type: numeric
required: true
tests:
- greater_than: 10000000 # Minimal pembiayaan Rp 10 Juta
- name: tenor_months
type: integer
required: true
tests:
- between: [6, 84] # Jangka waktu 6 s/d 84 bulan
- name: contract_status
type: string
required: true
tests:
- accepted_values: ['ACTIVE', 'RESTRUCTURED', 'GRACE_PERIOD']
governance:
complianceFrameworks:
- OJK_POJK_35_2018
- INDONESIA_UU_PDP_NO_27_2022
piiMaskingPolicy: strict-port-enforced07. Kepatuhan Regulasi: Enkripsi Masking UU PDP & OJK
Dalam hukum Indonesia, kebocoran data pribadi bukan sekadar kelalaian teknis, melainkan pelanggaran pidana dan administratif yang serius:
| Pasal & Regulasi | Amanat Hukum | Implementasi Komputasional di Data Mesh |
|---|---|---|
| UU PDP No. 27/2022 Pasal 16 | Prinsip Minimalisasi Data & Privasi Warga | Output Port hanya menyajikan data yang diperlukan oleh fungsi analitik. |
| UU PDP No. 27/2022 Pasal 20 | Kewajiban Pseudonimisasi & Enkripsi Data Pribadi | View SQL Masking: 3201************0004 (NIK) & 0812****8891 (Telepon). |
| UU PDP No. 27/2022 Pasal 39 | Rekam Jejak Audit Akses Data Pribadi | OpenLineage mencatat identitas kueri, waktu, dan IP setiap pembacaan port. |
| POJK No. 35/POJK.05/2018 | Manajemen Risiko Pembiayaan & Pemantauan Agunan | Integrasi telematika IoT mesin secara berkala untuk memantau status fisik jaminan. |
Hak Akses Berbasis Peran (RBAC) di PostgreSQL
-- Membuat role konsumen analitik dan auditor kepatuhan
CREATE ROLE role_data_consumer;
CREATE ROLE role_compliance_auditor;
-- Cabut akses ke skema internal rahasia
REVOKE ALL ON SCHEMA domain_leasing FROM role_data_consumer;
REVOKE ALL ON SCHEMA domain_crm FROM role_data_consumer;
-- Berikan izin HANYA ke public output ports
GRANT USAGE ON SCHEMA leasing_dp TO role_data_consumer;
GRANT SELECT ON ALL TABLES IN SCHEMA leasing_dp TO role_data_consumer;
GRANT USAGE ON SCHEMA crm_dp TO role_data_consumer;
GRANT SELECT ON ALL TABLES IN SCHEMA crm_dp TO role_data_consumer;08. Kueri Analitik Lintas Domain: Risk 360 Engine
Bagaimana cara menggabungkan data dari 4 domain tanpa harus menduplikasi semua data ke satu data warehouse raksasa baru? Jawabannya adalah In-Memory Query Federation (Trino) atau Higher-Order Consumer Data Product.
-- ============================================================================
-- PT NUSAFINANCE RISK 360 FEDERATED ANALYTICAL ENGINE
-- Menghubungkan 4 output port otonom dalam satu kueri SQL federasi (Waktu: 420ms)
-- ============================================================================
WITH Risk360Summary AS (
SELECT
l.contract_id,
c.borrower_id,
c.company_name,
c.business_sector,
c.nik_masked,
c.registered_province,
-- Finansial Kontrak (Domain Leasing)
l.principal_idr,
l.tenor_months,
l.annual_interest_pct,
l.contract_status,
-- Fisik Alat Berat & Lokasi (Domain Equipment IoT)
e.asset_id,
e.machine_category,
e.brand_model,
e.total_operating_hours,
e.telematics_signal_status,
e.collateral_health_tier,
-- Riwayat Keterlambatan Bayar (Domain Finance Billing)
f.current_dpd,
f.consecutive_late_months,
-- Penilaian Kredit & Skor Default (Domain Risk Underwriting)
r.credit_score,
r.probability_of_default,
-- Klasifikasi Risiko Komposit Dinamis
CASE
WHEN f.current_dpd > 90 OR e.collateral_health_tier = 'TIER_3_CRITICAL'
THEN 'SEVERELY_IMPAIRED'
WHEN f.current_dpd > 30 OR e.telematics_signal_status = 'SIGNAL_LOST'
THEN 'ELEVATED_WATCHLIST'
WHEN r.probability_of_default > 0.15
THEN 'MODERATE_MONITORING'
ELSE 'HEALTHY_PERFORMING'
END AS composite_risk_classification
FROM leasing_dp.active_portfolio l
INNER JOIN crm_dp.borrower_directory c
ON l.borrower_id = c.borrower_id
INNER JOIN equipment_dp.telematics_summary e
ON l.asset_id = e.asset_id
INNER JOIN finance_dp.payment_performance f
ON l.contract_id = f.contract_id
LEFT JOIN risk_dp.underwriting_scores r
ON l.borrower_id = r.borrower_id
)
SELECT
composite_risk_classification,
COUNT(contract_id) AS total_contracts,
ROUND(SUM(principal_idr) / 1000000000.0, 2) AS total_exposure_idr_billion,
ROUND(AVG(current_dpd), 1) AS avg_days_past_due,
ROUND(AVG(total_operating_hours), 0) AS avg_machine_hours
FROM Risk360Summary
GROUP BY composite_risk_classification
ORDER BY total_exposure_idr_billion DESC;09. Matriks Evaluasi DATSIS (Ukuran Kebugaran Data Product)
Zhamak Dehghani menetapkan kriteria DATSIS untuk menguji apakah suatu dataset layak disebut Data Product:
| Kriteria DATSIS | Definisi Teknis | Standar Pengujian Produksi | Skor (/5.0) |
|---|---|---|---|
| D — Discoverable | Mudah ditemukan di katalog perusahaan | Terdaftar di DataHub/Amundsen lengkap dengan pemilik dan dokumentasi | 4.8 / 5.0 |
| A — Addressable | Memiliki alamat endpoint unik dan permanen | URI format: jdbc:postgresql://mesh.nusafinance/leasing_dp | 4.7 / 5.0 |
| T — Trustworthy | Memiliki SLA kesegaran dan uji kualitas otomatis | Great Expectations lulus di CI; SLA ketersediaan ≥ 99.8% | 4.6 / 5.0 |
| S — Self-describing | Skema data dan maknanya terdokumentasi mandiri | Spesifikasi mesin ODCS YAML tersemat di repositori | 4.8 / 5.0 |
| I — Interoperable | Menggunakan format terbuka tanpa lock-in | Kompatibel penuh dengan ANSI SQL, Apache Parquet, & Apache Iceberg | 4.5 / 5.0 |
| S — Secure | Kontrol akses berbasis peran & proteksi privasi | Dynamic Row-Level Security masking NIK aktif sesuai UU PDP | 4.6 / 5.0 |
HASIL EVALUASI DATSIS KESELURUHAN:
• Skor Rata-rata Mesh: 4.67 / 5.00 (Meningkat +117% dibandingkan Monolith lama: 2.15 / 5.00)
• Data Product Terbaik: crm_dp.borrower_directory (4.85 / 5.00 berkat perlindungan UU PDP sempurna)10. Architectural Decision Records (ADR 001 – 008)
Setiap arsitek data profesional mendokumentasikan keputusan pentingnya dalam format Architectural Decision Record (ADR):
- ADR-001: Desentralisasi Kepemilikan Domain menggantikan Central Data Lake
- *Konteks*: 4 data engineer pusat mengalami backlog 3 bulan menangani 5 departemen.
- *Keputusan*: Memindahkan tanggung jawab data ke tim domain bisnis masing-masing.
- ADR-002: Standarisasi Open Data Contract Standard (ODCS) untuk Skema Data
- *Konteks*: Terjadi 14 insiden perubahan kolom database yang merusak laporan bulanan ke direksi.
- *Keputusan*: Wajib menyertakan file spesifikasi ODCS YAML pada setiap repositori domain.
- ADR-003: Shift-Left Testing di CI/CD Git daripada Monitoring Pasca-Produksi
- *Konteks*: Error data baru diketahui berjam-jam setelah data rusak masuk ke tabel produksi.
- *Keputusan*: Uji skema dan masking dijalankan otomatis pada Pull Request GitHub Actions.
- ADR-004: Standardisasi Port Output Berbasis ANSI SQL dan Apache Iceberg
- *Konteks*: Sistem operasional memakai database yang campur aduk (PostgreSQL, MongoDB, IoT).
- *Keputusan*: Semua output port publik wajib berbentuk SQL View ANSI dan tabel Iceberg.
- ADR-005: Masking NIK Deterministik di Lapisan Port untuk Kepatuhan UU PDP
- *Konteks*: Konsumen data analitik sebelumnya bisa melihat 16 digit NIK debitur secara telanjang.
- *Keputusan*: Terapkan dynamic masking (
3201************0004) secara default bagi pengguna reguler. - ADR-006: Mesin Kueri Federasi In-Memory Trino untuk Analisis Risk 360
- *Konteks*: Mengopi ulang seluruh data ke database pusat hanya mengulang kesalahan monolith.
- *Keputusan*: Pasang Trino untuk menggabungkan data antar-port secara langsung di memori.
- ADR-007: Pemberian SLA Kesegaran Domain Disertai Sistem Insentif Anggaran
- *Konteks*: Tim domain sempat mengabaikan port data karena mengutamakan fitur aplikasi operasional.
- *Keputusan*: Masukkan ketersediaan data product ke dalam penilaian kinerja (KPI) manajer domain.
- ADR-008: Publikasi Otomatis Metadata Katalog Data via GitOps
- *Konteks*: Kamus data spreadsheet Confluence selalu basi dan tidak pernah diperbarui.
- *Keputusan*: Metadata katalog disinkronkan otomatis setiap kali ada kode yang dimerge ke cabang main.
11. Pipeline Verifikasi & Penerapan Produksi
Berikut adalah skrip verifikasi otomatis yang dijalankan di lingkungan pengujian Docker:
# ============================================================================
# LANGKAH 1: Jalankan lingkungan pengujian multi-domain terisolasi
# ============================================================================
docker compose -f docker-compose.mesh-test.yml up -d --build
# ============================================================================
# LANGKAH 2: Eksekusi validator kontrak komputasional ODCS
# ============================================================================
python scripts/computational_contract_validator.py \
--contract configs/contracts/leasing_contract_v2.yaml \
--db-url postgresql://test_admin:test_secret@localhost:5432/nusafinance_test
# ============================================================================
# LANGKAH 3: Jalankan uji kebocoran data privasi UU PDP
# ============================================================================
pytest tests/governance/test_uu_pdp_compliance.py -v
# ============================================================================
# LANGKAH 4: Uji integrasi kueri analitik lintas domain Risk 360
# ============================================================================
pytest tests/integration/test_risk_360_cross_domain_join.py -v12. Panduan Wawancara Data Architect: 10 Soal & Jawaban Tingkat Prinsipal
Bagian ini dirancang khusus untuk persiapan wawancara tingkat Senior Data Architect, Principal Data Engineer, dan Head of Data:
Q01: "Kapan perusahaan SEBAIKNYA TIDAK mengadopsi Data Mesh? Apa syarat kedewasaan minimalnya?"
Model Jawaban Arsitek:
Data Mesh bukan peluru perak (*silver bullet*) dan berbahaya jika dipaksakan ke organisasi kecil. Jangan adopsi Data Mesh jika:
1. Organisasi hanya memiliki 1–2 domain bisnis dan tim engineering di bawah 30 orang. Koordinasi terdesentralisasi justru akan menambah beban birokrasi. Solusi modular Data Warehouse (dbt + BigQuery/Snowflake) jauh lebih murah dan efisien.
2. Kedewasaan software engineering masih rendah (tidak ada budaya Git, CI/CD, atau automated test).
3. Syarat kedewasaan minimal: memiliki minimal 3–5 domain bisnis yang berdiri sendiri, mengalami bottleneck antrean data terpusat (>3 minggu), serta ada komitmen manajemen untuk mendanai data engineer di tiap tim domain.
Q02: "Bagaimana cara menangani perubahan skema data (Breaking Change) dari Domain A yang dibutuhkan Domain B?"
Model Jawaban Arsitek:
Terapkan disiplin Semantic Versioning (SemVer) pada Port Output: MAJOR.MINOR.PATCH.
- Minor & Patch (penambahan kolom opsional atau optimasi performa) dirilis tanpa mengganggu konsumen.
- Jika terjadi perubahan fatal (MAJOR bump, misal: menghapus kolom atau mengubah format ID), Domain A wajib menyediakan dua port bersamaan (v1 dan v2) selama masa transisi deprecation (umumnya 90 hari). Platform memantau trafik kueri di port v1; ketika trafik v1 sudah nol, barulah port v1 dinonaktifkan dengan aman.
Q03: "Bagaimana Data Mesh menggabungkan data lintas domain tanpa menciptakan monolith baru di mesin kuerinya?"
Model Jawaban Arsitek:
Pisahkan kebutuhan kueri menjadi dua:
1. Eksplorasi ad-hoc: Gunakan mesin kueri federasi in-memory seperti Trino/Presto. Trino mendorong kueri (*pushdown predicate*) ke sumber data masing-masing domain dan menggabungkannya di RAM tanpa mengopi data ke penyimpanan terpusat.
2. Kueri frekuensi tinggi yang krusial (seperti Risk 360): Bangun Consumer-Aligned Data Product. Produk ini mengonsumsi port upstream, mematerialisasi hasil join pada jadwal tertentu, dan merilis port output baru dengan kepemilikan tim yang jelas (misal: tim Credit Risk).
Q04: "Bagaimana Anda menegakkan kepatuhan UU PDP No. 27/2022 dan regulasi OJK di 5 tim domain yang bekerja mandiri?"
Model Jawaban Arsitek:
Menggunakan Federated Computational Governance:
1. Build Gate di CI/CD: Setiap Pull Request discan otomatis dengan Regex untuk mendeteksi apakah ada pola 16 digit NIK polos yang lolos ke view analitik.
2. Dynamic Row-Level Security (RLS): Platform menyediakan template view standar yang otomatis menyamarkan NIK (3201************0004) untuk role konsumen biasa, dan hanya membuka data asli bagi akun bertoken auditor kepatuhan.
3. Audit Trail OpenLineage: Setiap pembacaan data dicatat jejaknya secara kriptografis untuk memenuhi syarat audit Pasal 39 UU PDP dan POJK 35.
Q05: "Apa perbedaan mendasar antara Data Lakehouse (Databricks/Delta) dan Data Mesh?"
Model Jawaban Arsitek:
Data Lakehouse adalah tumpukan teknologi (technology stack), sedangkan Data Mesh adalah model operasi organisasi dan paradigma arsitektur (operating model). Sebuah perusahaan bisa saja membangun Data Lakehouse canggih namun tetap dikelola oleh satu tim data monolitik yang kewalahan. Bahkan, Data Mesh bisa dibangun MENGGUNAKAN teknologi Lakehouse! Di arsitektur kami, PostgreSQL dan Apache Iceberg berfungsi sebagai media penyimpanan (Lakehouse primitives), sementara Data Mesh mengatur bagaimana tim domain mengelola, mengontrak, dan menyajikan data tersebut.
Q06: "Bagaimana cara memotivasi tim pengembang domain agar mau merawat datanya sebagai produk dan tidak menganggapnya beban tambahan?"
Model Jawaban Arsitek:
Melalui tiga pendekatan:
1. Insentif & Alokasi Anggaran: Tim domain yang data product-nya banyak dipakai oleh departemen lain mendapat alokasi anggaran atau kredit internal perusahaan (*internal chargeback*).
2. Penyertaan ke OKR Direksi: Ketersediaan dan kualitas data product dimasukkan ke dalam Key Performance Indicator (KPI) triwulanan para manajer divisi.
3. Platform Mandiri yang Sangat Mudah: Tim platform pusat menyediakan template repositori sekali klik sehingga tim domain bisa merilis data product berstandar kontrak hanya dalam waktu 30 menit.
Q07: "Bagaimana cara mencegah 'Data Silo 2.0' di mana tim domain menyimpan datanya sendiri dan menolak berbagi?"
Model Jawaban Arsitek:
Tiga benteng pertahanan:
1. Katalog Data Pusat Wajib: Data yang tidak didaftarkan spesifikasi kontraknya di katalog pusat dilarang dialirkan melalui jaringan data perusahaan.
2. Dewan Tata Kelola Terfederasi (Federated Council): Pertemuan dwimingguan perwakilan arsitek domain untuk menyelaraskan kebutuhan data baru agar tidak terjadi duplikasi pipeline.
3. Protokol Terbuka (ANSI SQL & Iceberg): Melarang tim domain menggunakan format biner tertutup (*proprietary*) yang tidak bisa diakses sistem lain.
Q08: "Jelaskan arsitektur teknis dari pipeline validasi Data Contract otomatis di CI/CD."
Model Jawaban Arsitek:
Pipeline kami di GitHub Actions menjalankan 4 tahapan berurutan:
1. *Linter Sintaks ODCS*: Memvalidasi struktur file YAML terhadap JSON Schema standar industri.
2. *Pemeriksa Kompatibilitas Git*: Membandingkan skema baru dengan skema produksi di registry Git untuk menangkap kolom yang terhapus atau berubah tipe.
3. *Deployment Container Ephemeral*: Menyalakan kontainer PostgreSQL uji coba di Docker dan memasukkan data tiruan (*fixture*).
4. *Uji Great Expectations & Scanner PII*: Memverifikasi keunikan primary key, rentang nilai wajar, dan memastikan 0 kebocoran NIK 16 digit. Jika ada 1 tes gagal, merge otomatis dibatalkan.
Q09: "Bagaimana Self-Serve Data Platform mengurangi beban kognitif developer domain?"
Model Jawaban Arsitek:
Tim platform memperlakukan developer domain sebagai pelanggan utama mereka. Platform menyediakan:
- Template repositori Cookiecutter/Helm siap pakai lengkap dengan skrip CI/CD.
- Manajemen hak akses otomatis yang menerjemahkan kontrak ODCS menjadi perintah SQL GRANT di database.
- Dasbor pemantauan otomatis (Grafana) untuk melihat SLA keterlambatan data dan beban kueri tanpa perlu diprogram manual oleh developer domain.
Q10: "Bagaimana cara mengukur Return on Investment (ROI) dan kesehatan arsitektur Data Product dari waktu ke waktu?"
Model Jawaban Arsitek:
Melalui 3 metrik terukur:
1. *Kecepatan Bisnis (Lead Time)*: Penurunan waktu tunggu penyediaan data lintas domain dari 3–6 minggu menjadi <15 menit.
2. *Efisiensi Finansial (TCO Infrastruktur)*: Penurunan biaya sewa komputasi cloud sebesar 35.9% ($66,000/tahun) berkat penghapusan pipeline ETL duplikat.
3. *Skor Kebugaran DATSIS Triwulanan*: Menilai Discoverability, Addressability, Trustworthiness, Self-description, Interoperability, dan Security pada skala 1–5. Produk dengan skor di bawah 3.5 wajib masuk ke backlog perbaikan arsitektur.
13. Rangkuman Kunci & Lembar Belajar Cepat (Cheatsheet)
| Poin Kunci Belajar | Rangkuman Cepat untuk Diingat |
|---|---|
| Inti Masalah Monolith | Tim data pusat tidak paham konteks bisnis; tim pembuat data operasional tidak peduli kualitas hilir. |
| Solusi Data Mesh | Berikan kepemilikan ke tim domain bisnis, perlakukan data sebagai produk, pasang kontrak data di CI/CD. |
| Data Contract (ODCS) | Kesepakatan mesin format YAML yang mengunci nama kolom, tipe data, aturan privasi, dan SLA kesegaran. |
| Regulasi UU PDP | NIK dan nomor telepon wajib disamarkan (*masked*) di output port analitik; dilarang menampilkan 16 digit polos. |
| Federasi Trino | Menggabungkan data dari berbagai database secara langsung di memori tanpa perlu disatukan ke data warehouse baru. |
| Skor DATSIS | Ukuran mutu data product: Discoverable, Addressable, Trustworthy, Self-describing, Interoperable, Secure. |
Sistem & Kasus Terkait Lainnya