(You are here)
(Part 2)
If you are reading this on your first or second week, welcome. Before we talk about how our data warehouse works today (28 July 2026), it helps to understand how it worked before — and more importantly, why that was a problem worth fixing. This post is Part 1. No heavy technical knowledge required.
What Is a Data Layer — and How Our Old Architecture Worked
Vatico operates across webstores, marketplaces, warehouse partners, couriers, and payment providers. Every interaction generates raw data. To understand our analytics architecture, it helps to distinguish two key concepts:
1. Data Warehouse (DWH): The physical database storage system where raw and processed data live in one place.
2. Data Layer: The architectural framework and pipeline stages for our DWH (e.g. ODS → DIM/DWD → DWS → ADS).
A structured data layer brings order to the data warehouse by defining clean, standardized stages for transforming raw data into usable dashboards.
In a standard ETL flow, data is transformed before it reaches the warehouse. At Vatico, we first extract and load raw data into the warehouse, then transform it there. This is known as an ELT flow — as shown in the pipeline diagram below.
The Old Data Layer: A Flat, Table-Per-Purpose Design
To move quickly, Vatico adopted a Silicon Valley practice: building a custom table for every specific business question or dashboard. If the CEO needed revenue, a new table was built. If Ops needed shipping stats, another table was created.
WooCommerce Marketplace API Payment Provider API CRM Logistics Courier API
orders_marketplace_cleaned revenue_marketplace_monthly shipment_status_partner …and ~396 more single-purpose tables
CEO Revenue Dashboard Ops Shipping Report Finance Reconciliation View
While this flat approach worked initially, scaling to 400 single-purpose tables created severe friction. Here are the four core problems that forced us to redesign the data layer.
Why Switch the Data Layer?: Four Real Problems
These were not theoretical complaints — they were daily friction points for analysts and interns working in the warehouse.
The warehouse grew to 400 single-purpose tables. Without standardized layers, discovering which table was active, up-to-date, or trustworthy took hours of digging.
Because tables were built per-request, common metrics like revenue or shipping costs were transformed differently across tables, causing conflicting numbers for the same question.
Every new dashboard required a new dbt model and table. Compute costs surged, and changing one upstream table risked silently breaking downstream models.
When ingestion jobs stalled (e.g. data missing for 3+ hours), there was no native, real-time alert. We had to rely on tools to catch failures.
Imagine your manager asks: “How many Sales Orders shipped in April by courier?”
You search the warehouse and find 10 different tables named “sales_order”. Some are legacy, some are incremental, and some use custom filters. You pick one, run the query, and find your number doesn’t match the dashboard — because the dashboard queries a separate table created months ago with slightly different logic.
A 20-minute task takes 3 hours simply navigating table fragmentation.
Why It Made Sense Then vs. Why We Had to Change
Early choices were intentional trade-offs for speed when Vatico was small. But patterns that work for 20 tables create bottleneck friction at 400 tables.
| Early Context | Why It Worked Then | Why It Stalled at Scale |
|---|---|---|
| Small team & ~20 tables | Fast iteration, easy to build per-use-case tables | Grew to ~400 tables; now teams are unclear on which table does what for sure. |
| Silicon Valley startup speed | Answers shipped in a single day | Unregulated table sprawl & duplicated transformation logic |
| No standardized layers | Zero upfront architectural overhead | Costly DataHub mapping ($350/mo) and zero clear data lineage |
What the New Architecture Solves
Part 2 introduces our new 5-layer architecture (inspired by Alibaba’s data model): ODS → DIM / DWD → DWS → ADS.
Key intern takeaway: The goal of a data layer is to build fewer, better-structured layers.
The key benefit we found now with the new layer is that things are much easier to troubleshoot, as we know exactly where the data comes from at each layer — making life not only easier for you as an intern, but for everybody in the company! 😀
Now that you understand the bottlenecks of our old flat stack, Part 2 breaks down how ODS, DIM, DWD, DWS, and ADS work in practice with real Vatico examples.

