>

Pattern 03 · Data Architecture

The Lakehouse, without the swamp

A production pattern for one governed copy of your data on open table formats — serving BI, ML, and streaming from the same ACID foundation.

1
governed copy of the data, not N pipeline copies
3
zones — bronze raw, silver validated, gold curated
0
proprietary format lock-in with open tables

01 · PROBLEM

Warehouses are expensive; lakes are swamps

The classic trap: the data warehouse bill grows with every workload while the data lake accumulates ungoverned files nobody trusts. Teams copy data between systems for BI, ML, and streaming — each copy drifting, each pipeline owned by nobody, each audit a archaeology project.

The lakehouse pattern puts ACID transactions on cheap object storage via open table formats (Delta Lake, Apache Iceberg, Apache Hudi), so one governed dataset serves SQL analytics, machine learning, and streaming consumers without copies.

02 · WHEN TO USE

Fit and anti-fit

  • Warehouse compute costs are growing faster than business value.
  • The same data must serve BI dashboards, ML training, and event-driven apps.
  • You need schema evolution, time travel, and auditability on large datasets.
  • Regulatory or cost pressure favors open formats over proprietary storage.

Don't use it for small, stable, purely SQL workloads where a managed warehouse is already cheap and loved — or as an excuse to skip governance. A lakehouse without contracts and quality gates is a swamp with ACID.

03 · ARCHITECTURE

Reference architecture

Lakehouse architectureLakehouse architecture: batch and streaming sources land in a bronze raw zone, are validated into a silver zone, and curated into a gold zone on open table formats, governed by a catalog and served to BI, ML and applications. Batch sourcesDBs · files · SaaS Streaming sourcesCDC · events · IoT Ingestbatch + stream Open table format — Delta / Iceberg / Hudi Bronze — rawimmutable · as-arrived Silver — validateddeduped · typed · conformed Gold — curateddomain models · aggregates Governance catalogschema · lineage · quality BI & SQLwarehouses · dashboards ML & appsfeature store · notebooks · APIs Data contractsproducer/consumer schemas Quality gatesexpectations · SLAs · alerts FinOpsstorage vs compute · compaction One copy of the data, ACID transactions on object storage, and compute that scales independently. The medallion zones are a discipline — raw stays raw, curated stays trustworthy.

Medallion zones enforce a one-way discipline: bronze is immutable raw, silver is validated and conformed, gold is curated for consumption. The catalog — not tribal knowledge — is how anyone finds anything.

04 · COMPONENTS

What each piece does

ComponentResponsibilityBuild/buy notes
Ingest (batch + stream)Land data reliably: CDC from OLTP, event streams, file drops, SaaS extractsKafka/Kinesis for streams; Fivetran/Airbyte or Spark for batch — match to team skill
Open table formatACID transactions, schema evolution, time travel on object storageStandardize on ONE format org-wide; Iceberg for engine breadth, Delta for Spark depth
Bronze zoneImmutable raw landing — exactly as arrived, with ingestion metadataAppend-only; never mutate bronze, reprocess from it
Silver zoneValidated, deduplicated, typed, conformed to canonical keysThis is where data quality lives — don't skip it
Gold zoneDomain-curated models: star schemas, aggregates, feature tablesOwned by domain teams; versioned like code
Governance catalogSchema registry, lineage, quality scores, access policyUnity Catalog, Apache Polaris, or cloud-native — pick one and enforce it
ServingBI, ML feature store, APIs — all reading the same gold tablesNo extracts into shadow marts; serve from the lakehouse

05 · FLOW

How data moves through the zones

F1
Land raw. Every source writes to bronze with ingestion timestamp, source ID, and batch/stream markers. Bronze is append-only and immutable.
F2
Validate into silver. Deduplicate, type-cast, conform keys, apply data contracts. Failed records go to quarantine with reasons — never silently dropped.
F3
Curate gold. Domain teams build modeled, documented, versioned datasets. Gold tables carry SLAs and named owners.
F4
Serve everything from gold. Dashboards, ML training, and APIs read the same tables. New consumers don't create new copies.
F5
Govern continuously. Lineage, quality scores, and access audits update with every write — the catalog is a runtime system, not documentation.

06 · TRADEOFFS

Decisions with real costs

DecisionOption AOption BOur default
Table formatDelta — deepest Spark/Databricks integrationIceberg — broadest multi-engine supportIceberg unless you're standardized on Databricks
ComputeOne engine (Spark) — simpler opsMulti-engine (Spark + Trino + Flink) — best tool per job, more skill neededStart single-engine; add Trino for interactive SQL when needed
StreamingMicro-batch — simpler, minute-level latencyTrue streaming — sub-second, exactly-once complexityMicro-batch default; true streaming only for proven latency SLAs
Small filesIgnore — query performance degrades silentlyCompaction jobs — operational overheadAutomated compaction with monitoring; it's non-optional at scale

07 · SECURITY

Non-negotiables

  • Encryption: at rest (SSE with customer-managed keys where required) and in transit; credentials via secret managers, never in pipelines.
  • Fine-grained access: row/column-level security and dynamic masking in the serving layer — analysts see masked PII, models train on tokenized features.
  • Environment separation: production data never lands in dev; lower environments use masked or synthetic subsets.
  • Network: private endpoints for storage and catalog; no public ingress to the data plane.

08 · GOVERNANCE

Running it like a system, not a swamp

  • Data contracts: producers declare schemas and SLAs; breaking changes are versioned, not surprise deployments.
  • Quality gates: expectation suites run on silver promotion; failures quarantine data and page owners.
  • Lineage: every gold table traces to bronze sources — impact analysis and audits are queries, not interviews.
  • Retention & lifecycle: tiered storage and defined retention per zone; bronze isn't an infinite attic.

09 · COST

Where the money goes

  • Storage is cheap; compute isn't. Object storage costs are usually trivial — the bill is Spark/Trino clusters and always-on streaming.
  • Separation is the lever: scale compute to zero when idle; the classic warehouse mistake is paying for idle capacity.
  • Compaction and vacuuming are real compute costs — budget them, and monitor file counts like you'd monitor any SLO.
  • Data transfer across regions/accounts adds up; co-locate compute with storage.

10 · IMPLEMENTATION

A phased path that de-risks

P0
One domain, end to end (4–6 weeks). Pick a bounded domain with a willing owner. Bronze → silver → gold, cataloged, with one BI consumer. Prove the discipline before the platform.
P1
Platform hardening (6–8 weeks). Standardize the format, automate compaction, enforce contracts, stand up the catalog as a runtime system.
P2
Domain expansion (ongoing). Onboard domains one at a time with the same zone discipline; federate ownership, centralize platform.
P3
Advanced serving (ongoing). Feature store, streaming gold tables, cross-region replication — only after the foundation is boring.

See it in motion: the SaaS CDC Lakehouse reference blueprint walks this pattern through a concrete scenario, and our Engineering practice builds lakehouses as production platforms.

11 · RELATED

Keep exploring

SaaS CDC Lakehouse

Reference blueprint: change-data-capture into a medallion lakehouse, end to end.

Read blueprint →

Engineering

Our data engineering practice: platforms, pipelines, and lakehouses that hold up.

Explore practice →

Modernization

Moving off legacy warehouses and databases onto open, cloud-native foundations.

Explore practice →

Start here

Talk to an Architect

Bring your hardest AI, data, or modernization problem. We'll tell you plainly whether we can help — and what it takes.

FAQ

Questions we hear

If your workloads are primarily SQL BI with strong existing warehouse investment, a warehouse may stay. Choose the lakehouse when you need the same data to serve BI, ML, and streaming without copies, or when warehouse compute costs are growing faster than value.

All three deliver ACID on object storage. Iceberg has the broadest engine support today; Delta is strongest inside the Databricks/Spark ecosystem; Hudi excels at upsert-heavy streaming. Pick based on your engine commitments, then standardize — format sprawl is the new silo.

Skipping the silver layer. Teams land raw data and build gold models directly on it, recreating the swamp with better marketing. Validation, deduplication, and conformed keys are the whole point.