Internal Analytics Portal: Scheduled Auto-Scaling & Spot Fleets
Saving 70% on compute bills for a corporate analytics tool using scheduled scaling policies, EC2 Spot Instances, and EBS snapshots.
1. Business Problem & Context
A multinational retail enterprise maintains an internal analytics portal used exclusively by employees between 8:00 AM and 6:00 PM on weekdays. The previous architecture ran 12 high-memory instances (r6i.2xlarge) 24 hours a day, 7 days a week, wasting over 65% of its compute budget overnight and on weekends.
2. Requirements & Constraints
- Predictable Business Hour Readiness: Capacity must be fully warmed up by 7:45 AM Monday–Friday.
- Significant Cost Reduction: Target > 60% compute budget savings.
- Interruption Resilience: Seamlessly handle Spot Instance termination notices using mixed instance fleets.
3. Architecture Overview & Data Flow
Interactive Architecture Diagram (Use controls to zoom & pan)
4. AWS Services Used & Rationales
AWS Services Architecture Rationale
Concrete reasons why these specific services were chosen over alternatives
| Service | Category | Architectural Rationale ("Why this service?") |
|---|---|---|
| Auto Scaling Scheduled Actions | Compute | Increases desired capacity at 7:45 AM before employees begin logging in. |
| EC2 Spot Instances | Compute | Secures surplus AWS compute capacity at 70-90% discount. |
| EC2 Mixed Instances Policy | Compute | Blends 20% on-demand instances with diverse Spot instance families (r6i, r6a, r5). |
5. Key Design Trade-offs
Architecture Decision & Trade-Off Matrix
Evaluating alternative approaches under real-world constraints
24/7 Provisioned On-Demand
- + Zero risk of spot interruption
- − Extreme financial waste ($3,400/mo)
Mixed Fleet (20% On-Demand + 80% Spot) + Scheduled Scaling (Chosen)
✓ Chosen Design- + 72% cost savings
- + Automatic warming before 8 AM
- + Diversified spot pools prevent mass evictions
- − Requires handling 2-minute spot termination notices
6. Implementation Highlights
Configuration Scheduled Scaling Cron Expressions
# Morning Scale-Up (Monday through Friday at 7:45 AM UTC)
Recurrence: "45 7 * * 1-5"
DesiredCapacity: 12, MinSize: 4, MaxSize: 20
# Evening Scale-Down (Monday through Friday at 6:30 PM UTC)
Recurrence: "30 18 * * 1-5"
DesiredCapacity: 0, MinSize: 0, MaxSize: 2 7. Results & Key Metrics
- Monthly Compute Bill: Reduced from $3,450 to $965/month.
- User Experience: 0 complaints regarding morning startup lag.
8. Key Architectural Takeaways
FinOps Rule: Any enterprise system with predictable human usage cycles (8am-6pm) should never run static full-capacity compute 24/7.