← back to projects

Ticket Marketplace Platform

A high-traffic secondary ticketing platform on AWS EKS — engineered to absorb the traffic spike of a major on-sale event without dropping orders, and to be fully reproducible as code.

AWS EKSTerraformHelm PrometheusGrafanaArgo CDSpot + On-Demand

The reliability profile of a ticket marketplace

99% of the traffic is ordinary browsing. The other 1% is a panic: a major artist announces a tour, and tens of thousands of concurrent users hammer the inventory API inside the same 60-second window. The platform has to absorb that spike without dropping orders — every dropped order is lost revenue — while not paying for that peak capacity 24/7.

I owned the infrastructure end to end: the EKS cluster in Terraform, the Helm charts for each service, the autoscaling behavior, and the full observability layer.

Architecture

Traffic enters through an AWS Load Balancer Controller–backed Gateway, hitting four EKS-hosted services. Terraform manages everything below the application; Prometheus watches everything above it.

On-sale traffic ⚡ Gateway API · ALB Inventory Spot · HPA(RPS) Order Processing On-Demand Pricing EKS Event Catalog EKS Prometheus → Grafana SLO dashboards · Alertmanager Terraform — VPC · subnets · IAM/IRSA · EKS cluster · node groups · RDS · ElastiCache

Solid arrows = request path. Dashed = metrics scrape. Dashed box = everything provisioned as code.

Engineering for the spike

Load tests showed the inventory service falling over at 8× normal RPS. A CPU-based autoscaler couldn't help — the service goes from idle to 10,000 RPS in about 90 seconds, well before CPU registers the wave.

What I did

RESULT

Peaked at 14× baseline. Inventory scaled 3 → 22 pods in under 2 minutes, p99 latency held under 400ms, zero dropped orders.

Zero-downtime CloudFormation → Terraform migration

The cluster and all supporting infrastructure lived in CloudFormation stacks that had accumulated a year of console-clicked drift — and nobody had a complete map of what each stack owned. The goal: move everything into Terraform without recreating the cluster, and without a window where both systems managed the same resource.

The approach

THE HARD PART

A CFN security group was referenced by three other stacks via ImportValue. I migrated the consuming stacks to Terraform data sources first, so the exporting stack had no dependents and could be deleted cleanly. Map cross-stack dependencies before you start, not as you hit them.

RESULT

Full cluster infra — VPC, subnets, security groups, IAM/IRSA roles, the EKS cluster, and node groups — migrated with zero downtime and zero resource replacements. Every change since goes through a reviewable terraform plan in a PR.

Alerting that pages on real problems

The old alerts fired on raw error rate — one error at 2am read as "100% error rate" and paged; meanwhile slow regressions that stayed just under the threshold during busy hours went unnoticed.

What I did

RESULT

On-call pages dropped ~70% in the first month. The next real incident — a pricing regression sending 0.8% of requests to 500 — tripped the fast-burn alert in 4 minutes, ~40 minutes earlier than the old threshold would have.

outcomes

Where it landed

14×
burst traffic held
<400ms
p99 at peak
0
downtime on migration
~70%
fewer pages
~35%
compute cost cut