The data platform had expanded significantly — new workloads, new teams, new data products. But the underlying Kubernetes infrastructure had not kept pace with that growth in the right way. Everything ran on a single shared cluster. A lightweight ETL job sat next to a heavy analytical workload. A low-priority batch process competed with a business-critical pipeline.
When things slowed down or resources ran short, the answer was always to scale up — add more capacity, increase the node count, absorb the problem. The platform had never learned to scale down. Idle resources ran continuously. Infrastructure costs climbed without a corresponding increase in value delivered.
<aside> 💡
One-size-fits-all model All workloads on the same nodes regardless of size, pattern, or criticality.
</aside>
<aside> 💡
Underutilised resources Lightweight workloads consuming far more infrastructure than their actual needs required.
</aside>
<aside> 💡
Workload interference Heavy jobs could destabilise other workloads — no isolation, no priority boundaries.
</aside>
<aside> 💡
No resource governance No quotas, no team-level visibility, no accountability for consumption.
</aside>
The fix was not adding more capacity. It was understanding the workload patterns that already existed — and building infrastructure around them instead of forcing every workload to compete on the same shared ground.
The reconfiguration delivered immediate operational improvements — and set up the platform to absorb future growth without the same structural problems recurring.
<aside> 💡
Improved utilisation Infrastructure now scales down as well as up. Idle capacity is released rather than left running — cost follows actual usage.
</aside>
<aside> 💡
Workload isolation Heavy workloads can no longer impact critical pipelines. Each pool runs independently with its own resource boundaries.
</aside>