← all case studiesFinancial-services conglomerate · Jakarta · team of 8

[ CASE STUDY — 01 ]

Cutting a data-warehouse bill by 90% in three months

Monthly bill
$20–30k → $2k
Timeline
3 months
Scheduled reports
30 → 15
VMs retired
~100

[ 01Context ]

A financial-services conglomerate in Jakarta ran its group-wide data warehouse out of a dedicated data subsidiary, serving five companies in the group. The subsidiary was under board-level pressure to cut costs — and the warehouse was one of its largest line items.

[ 02Problem ]

Two things compounded:

  • Apache Hive on ~100 VMs — HDFS, YARN, and the Hive metastore all co-located, with Airflow-orchestrated batch ETL — billed around the clock, idle or not
  • ~30 recurring Tableau reports generated on schedule, never audited for readership

[ 03The architecture shift ]

Before: five company systems feeding Airflow-orchestrated nightly batch ETL into an Apache Hive cluster of roughly 100 VMs, with HDFS, YARN, and the Hive metastore all co-located on the same machines, queried through Tableau Server with about 30 unaudited scheduled reports for BI users across five companies — one shared bill, no usage audit, idle compute billing around the clock — at approximately 20 to 30 thousand dollars per month.

After: the same systems feeding batch ETL on AWS Glue into an Amazon S3 data lake with raw and curated Parquet zones, registered in the Glue Data Catalog and queried by Redshift Serverless external tables — compute that scales with demand and pauses when idle — serving 15 audited Tableau reports, with IAM, CloudWatch, and cost alerts, at approximately 2 thousand dollars per month.

Representative schematic — details anonymized, architecture faithful

[ 04What I did ]

  1. Month 1

    Audit and design

    • Pulled report usage logs and interviewed end users across all five companies
    • Half of the ~30 recurring reports had no active consumers — deprecated to 15
    • Chose Amazon S3 + Redshift Serverless: decoupled storage and compute, fully managed — no idle cluster, no daily operations
  2. Month 2

    Migrate and dual-run

    • Migrated ~5TB of warehouse data to an S3 data lake (raw → curated Parquet zones), queried through Redshift Serverless
    • Dual-ran Hive and the new platform in parallel, validating with comparison scripts on report outputs until the numbers matched
  3. Month 3

    Cutover and decommission

    • Repointed Tableau at Redshift Serverless — the BI layer itself didn't change
    • Decommissioned the ~100-VM Hive cluster

[ 05Result ]

  • ≈ $20–30k/month → ≈ $2k/month — a ~90% reduction
  • Zero technical incidents at cutover
  • The largest single lever was architectural: storage moved to S3, compute went serverless — idle compute stopped billing
  • The surprise wasn't technical — half the reports had no readers. The cheapest query is the one you never run.

Why it matters for LLM spend

Same playbook, different bill: understand the architecture (where the tokens go), the usage (which calls matter), and the users (which features consume) before optimizing anything. Audit first, right-size second, migrate only if needed — measure at every step.

Facing a similar bill?