The Situation: Scaling Pain Under High Transaction Volume

The client, a mid-sized fintech firm based in London with 150 employees, faced a critical bottleneck that threatened their growth trajectory. Transaction volume had surged by 400% year-over-year, straining their legacy Kubernetes setup on AWS EKS. The infrastructure was no longer just a support function; it had become a primary constraint on business scalability.

The primary issue was unpredictable cost spikes. During peak trading hours, manual scaling led to significant over-provisioning, while off-peak times resulted in idle resources that continued to incur charges. This inefficiency directly impacted their margin structure, turning a high-growth period into a financial drain. The engineering team was spending more time managing infrastructure capacity than developing new features.

Additionally, the lack of automated right-sizing meant that new services were deployed with generic resource limits. This led to memory bottlenecks and occasional pod evictions during flash events, threatening service availability. In a fintech environment, even minor availability issues can erode customer trust and trigger compliance concerns. The team needed a solution that could handle variable load without breaking the bank or compromising stability.

The Challenges

Before diving into the solution, it is important to understand the specific hurdles that made this project complex:

  1. Legacy Configuration Debt: The existing EKS cluster had been built incrementally over three years. Resource limits were often set arbitrarily or copied from other services, leading to a lack of consistency and predictability.
  2. Stateful vs. Stateless Complexity: The fintech platform mixed stateless microservices with stateful components. Applying a one-size-fits-all autoscaling strategy was impossible without risking data integrity or service disruption.
  3. Cost Visibility Gap: The finance and engineering teams had different views on cloud spend. Engineering saw compute hours, while finance saw line items. There was no unified dashboard to correlate cost with transaction volume in real-time.

The Tech Stack

We leveraged a proven set of tools to re-architect the environment:

  • AWS EKS: The core container orchestration platform, upgraded to the latest stable version for performance improvements.
  • Helm: Used for standardized deployment templates, ensuring consistent resource limits and probes across all services.
  • Vertical Pod Autoscaler (VPA): Integrated to analyze historical usage and provide accurate resource recommendations for non-critical workloads.
  • Cluster Autoscaler: Tuned to manage node group scaling policies, reacting dynamically to pending pods.
  • Prometheus & Grafana: The monitoring stack used to establish baselines, track KPIs, and visualize the impact of changes in real-time.

Implementation: Architectural Redesign and Automation

We initiated a six-week project to re-architect their Kubernetes environment. The goal was to decouple compute costs from transaction volume through intelligent autoscaling. This was not a simple configuration tweak; it required a fundamental shift in how resources were requested and allocated.

Projektverlauf in 6 Phasen: Audit baseline K8s usage & costs, Tune Cluster Autoscaler policies, Implement VPA for non-critical apps …

The first phase focused on baseline analysis. We spent the first two weeks instrumenting the cluster to capture detailed metrics on CPU, memory, and network usage for every pod. This data was crucial for understanding the actual workload patterns versus the configured limits. We identified that 40% of the workloads were running at less than 20% of their allocated memory, indicating massive waste.

Key actions in the implementation phase included:

  • Cluster Autoscaler Tuning: We adjusted node group scaling policies to react within 90 seconds to pending pods. This reduced the lag between demand spikes and capacity provision, ensuring that new transactions could be processed immediately without queuing.
  • Vertical Pod Autoscaler (VPA) Integration: VPA was enabled for non-critical workloads to ensure accurate resource requests based on historical usage. We carefully excluded critical payment services from VPA to avoid the risk of restarting pods during scaling events, instead using manual tuning based on the baseline data.
  • Spot Instance Strategy: We migrated 60% of stateless microservices to AWS Spot Instances, utilizing a fallback mechanism to on-demand nodes for critical payment processing. This required careful partitioning of workloads to ensure that spot interruptions did not impact core transaction processing.
  • Helm Chart Standardization: All deployments were standardized into Helm charts with defined resource limits and probes. This ensured that any new service deployed to the cluster would inherit the optimized configuration, preventing regression.

This approach ensured that resources were allocated dynamically based on real-time demand rather than static estimates. The team moved from a “set and forget” mentality to a continuous optimization loop.

How We Measured It

To ensure the project delivered tangible value, we established a rigorous measurement framework. We used Prometheus to track resource utilization (CPU and memory) at the pod level, comparing it against the requested limits. This allowed us to calculate the efficiency ratio before and after optimization.

For cost analysis, we used AWS Cost Explorer to track spend by service and instance type. We correlated this data with transaction volume metrics from the application logs. This allowed us to calculate the cost per 1,000 transactions, a key unit economic metric that the finance team could understand. We also monitored scaling reaction time by measuring the time between a load increase (simulated or real) and the provisioning of new nodes or pods.

Finally, we tracked stability metrics such as pod eviction errors and 5xx HTTP response codes. A three-month monitoring period was established to ensure that the cost savings did not come at the expense of reliability.

Results: Cost Efficiency and Stability

The re-architecture delivered immediate financial and operational benefits. The client achieved a 22% reduction in monthly cloud infrastructure costs despite the 400% growth in transactions. This was a significant achievement, as it demonstrated that the infrastructure could scale elastically without proportional cost increases.

Service stability improved significantly. Pod eviction errors dropped to zero over a three-month monitoring period. The average time-to-scale for new transaction loads decreased from 15 minutes to under 2 minutes. This improvement in reaction time was critical for handling flash events, ensuring that customers experienced no degradation in service during peak loads.

Cloud Cost Efficiency vs. Volume: Vorher-Nachher-Vergleich der Kennzahlen in £

MetricBefore OptimizationAfter Optimization
Monthly Cloud Cost£45,000£35,100
Scaling Reaction Time15 mins< 2 mins
Peak Error Rate1.2%0.0%
Resource Utilization35%78%

The team now manages infrastructure with full confidence, knowing that costs scale linearly with usage rather than exponentially with peak demand. The engineering team reported a 30% reduction in time spent on infrastructure firefighting, allowing them to focus on feature development.

Lessons Learned

This project highlighted the importance of historical data analysis before implementing autoscaling. Blindly applying default settings often leads to thrashing or over-provisioning. The baseline phase was the most critical step, as it provided the ground truth needed to configure the autoscalers correctly.

We found that combining Horizontal Pod Autoscaling (HPA) with Cluster Autoscaler provided the best balance between speed and cost. HPA handles pod-level scaling, while the Cluster Autoscaler ensures sufficient node capacity. This two-layer approach allowed for fine-grained control over resource allocation.

Furthermore, regular review of VPA recommendations is crucial. As application code changes, resource requirements shift. Quarterly audits of resource limits prevent both performance issues and wasted spend. We established a process for the engineering team to review VPA recommendations monthly, ensuring that the configuration stayed aligned with the actual workload.

For fintech companies, implementing cost monitoring dashboards alongside performance metrics is essential. This ensures that engineering and finance teams view cloud spend as a shared KPI, driving continuous optimization. The unified dashboard we implemented became a central tool for both teams, bridging the gap between technical and financial perspectives.

What We Would Do Differently Today

While the project was a success, there are areas where we would refine our approach in future engagements:

  1. Earlier Spot Instance Integration: We introduced the Spot Instance strategy in the fourth week of the project. In hindsight, we would have started this earlier in the baseline phase to understand the interruption patterns of the specific workloads better. This would have allowed for more precise fallback mechanisms from the start.
  2. More Granular Cost Allocation: The initial cost dashboard was too high-level. We would have implemented more granular cost allocation tags from day one, allowing the team to see costs at the service level rather than just the cluster level. This would have accelerated the identification of the most wasteful workloads.
  3. Automated VPA Updates: We recommended manual review of VPA recommendations. Today, we would explore automated updates for non-critical workloads, with human approval only for critical services. This would reduce the manual effort required for ongoing optimization.

This case study demonstrates that with the right architectural approach and rigorous measurement, fintech companies can achieve significant cost savings while improving performance and stability. The key is to treat cloud infrastructure as a dynamic, data-driven system rather than a static resource.

Passend dazu