Case study 01 / Cloud operations
Retired August 2026 · Evidence preserved
ArenaOps
An on-demand backend with a visible lifecycle.
ArenaOps was a browser multiplayer demo built around an operational constraint: the backend should not run all month merely to remain clickable. ECS slept at desired count zero, woke through a public control path, reported readiness to the visitor, and returned to zero after the demo window. The paid runtime was retired after that loop had been proven end to end.
The source repository and full Git history remain private and preserved. This case study carries the architecture, operating decisions, screenshots, cost evidence, and limitations.
- Status
- Decommissioned
- Former idle state
- ECS desired count 0
- Former runtime
- ECS/Fargate + ALB
- Preserved
- Source, history, screenshots
- FinOps outcome
- About $24/month retired
01 / Operating problem
A sleeping demo can look exactly like a broken one.
Keeping a portfolio backend online 24/7 wastes compute. Switching it off without product feedback creates a dead link and asks the visitor to diagnose infrastructure they cannot see.
The answer was not to hide the cold start. ArenaOps turned asleep, starting, online, and shutdown into explicit user-facing states and only enabled room controls after health checks passed.
02 / Service lifecycle
One operating loop, four legible states.
The historical lifecycle is the product demonstration. Each state had an infrastructure condition, a visitor-facing message, and a clear transition rule.
-
01
Asleep
Zero tasks running
ECS desired count was 0. Game actions remained unavailable and the interface explained why.
desiredCount: 0 -
02
Starting
Wake accepted
The Worker started ECS. The frontend polled status while the ALB waited for a healthy target.
pending → health -
03
Online
Room controls unlock
Health passed and the browser established the WSS session with the FastAPI backend.
healthOk: true -
04
Shutdown
Return to zero
EventBridge Scheduler stopped the service after the demo window and cost returned to idle.
desiredCount: 0
03 / Architecture
Runtime control and delivery stay separate.
A visitor needed low-latency lifecycle control. A deployment needed a reviewable image and infrastructure path. ArenaOps gave each concern its own lane.
Visitor and runtime path
- 01Cloudflare PagesReact + Phaser frontend
- 02Cloudflare WorkerWake and status API
- 03Application Load BalancerHTTPS / WSS and health
- 04ECS / FargateFastAPI WebSocket service
- 05EventBridgeScheduled return to zero
Build and deployment path
- 01GitHub ActionsOIDC-authenticated workflow
- 02Amazon ECRVersioned backend image
- 03ECS deploymentTask and service update
- 04CloudWatchWake, health, traffic, shutdown
04 / Working evidence
The operating loop is visible in the interface.
These captured live-demo screens are not a fabricated dashboard. They preserve state before access and the realtime room once the backend was ready.
05 / Engineering ownership
What I designed and implemented.
- 01
Lifecycle contract
Defined the asleep, starting, online, and shutdown states and made them part of the frontend experience.
- 02
Public control boundary
Separated visitor-triggered wake and status control from the slower deployment workflow.
- 03
Cloud delivery
Provisioned infrastructure with Terraform and delivered backend images through GitHub Actions, ECR, and ECS.
- 04
Failure-aware operations
Worked through IAM scope, CORS, ALB target health, Scheduler payloads, WebSockets, logs, and remote state.
06 / Boundaries
A focused cloud demo, not a production-scale multiplayer platform.
- Cold-start delay is deliberate and communicated.
- HTTP 503 while asleep was expected behavior.
- No high-availability or production-traffic claim is made.
- The private source repository is not required to understand the public proof.
- The paid runtime was retired in August 2026; this page is the durable artifact.
07 / Retirement decision
Stop paying when the operating lesson is already proven.
Scale-to-zero eliminated idle Fargate compute, but July 2026 still produced about $24.25 in ArenaOps-only baseline charges: $16.74 for the Application Load Balancer, $7.44 for its two public IPv4 addresses, and about $0.07 for ECR storage.
The AWS stack was removed through its reviewed Terraform state boundary. The application source, infrastructure definitions, workflows, Git history, documentation, and working screenshots were preserved so the project keeps its portfolio value without recurring runtime cost.
Technical index
ArenaOps technology
React · TypeScript · Phaser · FastAPI · WebSockets · Docker · ECS/Fargate · ALB · ECR · IAM · EventBridge Scheduler · CloudWatch · Terraform · S3 remote state · GitHub Actions · Cloudflare Pages · Cloudflare Workers