Solution Architecture Practice

Comprehensive guide to software architecture frameworks, patterns, and best practices

View project on GitHub

Cost Optimization Principle

Overview

Principle: Design systems to maximize business value per dollar spent.

Cost optimization isn’t about spending less; it’s about spending wisely. Right-sized infrastructure, efficient algorithms, and smart architectural choices deliver better ROI.

Rationale

  • Cloud costs scale with usage
  • Bad architecture = exponential cost growth
  • Cost is quality metric
  • Constrained budgets force prioritization
  • Waste indicates inefficiency

Core Implications

1. Cost-Performance Trade-off

Cost vs. Performance Matrix:

                 High Cost
                    │
    Inefficient     │     Optimized
    Slow            │     Fast
                    │
───────────────────┼────────────────── Performance
                    │
    Cheap Slow      │    Constrained
    (bottleneck)    │    Fast
                    │
                 Low Cost

Goal: Bottom-right (good performance, reasonable cost)

Examples:

Database Indexing:
- No indexes: Fast inserts, slow queries, low cost
- All indexes: Slow inserts, fast queries, high cost
- Optimized indexes: Balanced performance and cost

Infrastructure:
- On-demand instances: Always available, highest cost
- Reserved instances: Cheaper, less flexible
- Spot instances: Cheapest, can be interrupted
- Optimized mix: Right size for workload, reasonable cost

Caching:
- No cache: Cheapest, slow response
- Cache everything: Expensive, fast response
- Smart caching: Cache hot data, reasonable cost/performance

2. Cost Categories

Cloud Infrastructure Costs:

Compute:
- Virtual Machines: $0.10-$5.00/hour
- Containers: $0.002-$0.10 per 1M requests
- Serverless: $0.0000002 per request

Storage:
- Block (EBS): $0.10/GB/month
- Object (S3): $0.023/GB/month
- Database: $0.10-$1.00/GB/month

Network:
- Data transfer out: $0.09/GB
- Data transfer between regions: $0.20/GB
- NAT Gateway: $45/month + $0.045/GB

Managed Services:
- Databases: $0.15-$5.00/hour
- Message queues: $0.50/million messages
- Lambda: $0.0000002 per request + $0.20 per GB-hour

Total: Can be $100K-$10M+/month for large systems

Operational Costs:

Personnel: ~70% of total IT spend
Tools & Software: ~15%
Infrastructure: ~15%

Cost optimization includes all three

3. Cost Optimization Strategies

Right-Sizing:

Instance Right-Sizing Matrix:

Workload: Web Server
├─ Peak traffic: 1,000 requests/second
├─ Current instance: m5.2xlarge (8 vCPU, 32 GB)
│  Cost: $0.384/hour
│  Utilization: CPU 5%, Memory 8%
│  Assessment: Over-sized
│
└─ Optimized instance: t3.medium (2 vCPU, 4 GB)
   Cost: $0.0416/hour
   Expected performance: Adequate for workload
   Savings: $3,128/month

Purchasing Models:

Instance Pricing Comparison:

On-Demand: $1.00/hour (maximum flexibility)
1-Year Reserved: $0.60/hour (40% discount, lock-in)
3-Year Reserved: $0.48/hour (52% discount, lock-in)
Spot: $0.25/hour (75% discount, can be interrupted)

Optimal Strategy: Mix based on workload
- Baseline (steady): Reserved instances
- Variable (spiky): On-demand
- Batch jobs: Spot instances
- Result: 40-60% savings vs on-demand

Storage Optimization:

Tiering Strategy:

Hot Storage (Last 30 days):
- Use: SSD, fast, expensive
- Cost: $0.10/GB/month

Warm Storage (30-90 days):
- Use: Standard, medium, moderate cost
- Cost: $0.023/GB/month

Cold Storage (90+ days):
- Use: Glacier, slow, cheap
- Cost: $0.004/GB/month

Archival (7+ years):
- Use: Deep Archive
- Cost: $0.00099/GB/month

Example: 1 PB data → tiered → save $500K/month

4. Architectural Cost Drivers

Expensive Patterns:

❌ Synchronous API Calls
Service A → Service B → Service C (chain of calls)
Problem: If Service C slow, entire chain slow
Result: Need powerful servers to handle latency

✅ Asynchronous Events
Service A publishes event → Service B handles → Service C handles
Benefit: Services process independently, can use smaller instances

❌ Single Powerful Database
All data in expensive multi-region database
Problem: Cost scales with data volume

✅ Polyglot Persistence
- Orders: PostgreSQL (ACID needed)
- Cache: Redis (speed needed)
- Analytics: S3 + Athena (cost-effective)
Benefit: Right tool for right job, lower cost

❌ Recompute Everything
Every request: Query database, compute reports, format response
Problem: Expensive compute for same result

✅ Caching + Eventual Consistency
Cache hot data, compute incrementally
Benefit: 100x cheaper for same functionality

Implementation Practices

1. Cost Monitoring

Cost Dashboard:

Company Spend:
├─ Total Monthly: $500K
├─ Compute: $200K (40%)
├─ Storage: $150K (30%)
├─ Network: $75K (15%)
├─ Managed Services: $75K (15%)

By Service:
├─ Production (70%): $350K
├─ Development (15%): $75K
├─ Testing (15%): $75K

Trend:
├─ Last month: $480K
├─ Increase: 4.2% ($20K)
├─ Driver: Database replication across regions

Actions:
- Optimize database queries (5% reduction expected)
- Archive old logs (3% reduction expected)

Cost Anomaly Detection:

Alert: Daily spend spike detected

Graph:
Normal Range: $14K - $16K/day
Yesterday: $28K (100% increase)

Investigation:
└─ Query Analysis Service spike
   ├─ Queries/second: Normal
   ├─ Compute cost per query: Normal
   ├─ Number of queries: 10x normal
   └─ Root cause: Analytics pipeline job ran instead of scheduled time

Action:
└─ Restarted analytics pipeline, deleted duplicate data
   Savings: $10K immediately

2. Cost Allocation

Showback/Chargeback:

Team Cost Report (Monthly):

Order Service:
├─ Compute: $15K
├─ Storage: $5K
├─ Database: $8K
├─ Data transfer: $2K
├─ Managed services: $3K
├─ Total: $33K
└─ Owner: John (VP Engineering)

Payment Service:
├─ Compute: $8K
├─ Storage: $2K
├─ Database: $12K (more complex queries)
├─ Data transfer: $1K
├─ Managed services: $5K
├─ Total: $28K

Benefits of Cost Allocation:
- Teams see their impact
- Incentives for efficiency
- Budget accountability
- Data for optimization decisions

3. Cost Optimization Tools

Tool Purpose
AWS Cost Explorer Track and analyze spending
CloudHealth Multi-cloud cost management
Nops RI and spot optimization
Densify Right-sizing recommendations
Infracost Infrastructure cost estimation

4. FinOps Framework

FinOps Maturity Levels:

Level 1: Crawl (Initial)
- Manual cost tracking
- Reactive optimization
- Cost surprises common

Level 2: Walk (Managed)
- Automated cost monitoring
- Proactive optimization
- Budget targets set

Level 3: Run (Optimized)
- Predictive cost modeling
- Continuous optimization
- Cost integrated in decision-making

Level 4: Fly (Autonomous)
- AI-driven optimization
- Autonomous cost decisions
- Cost never a bottleneck

Common Scenarios

Scenario 1: Unexpected Cost Spike

Situation: Monthly bill increased 50% without changes.

Investigation:

  1. Check cost dashboard
  2. Identify service (Analytics Service)
  3. Analyze metrics (3x more queries)
  4. Find root cause (New feature added debug logging)
  5. Fix (Disable debug logging)
  6. Prevent (Add cost monitoring to feature development)

Result: $100K monthly savings, process improved

Scenario 2: Choosing Technology

Situation: Need database for analytics.

Options:

  • Traditional Data Warehouse: $50K/month
  • BigQuery (serverless): $5K-$15K/month based on usage
  • Athena + S3: $2K/month but slower

Decision:

  • Most queries: Use Athena (cheap)
  • Complex queries: Use BigQuery (balanced)
  • Result: $8K/month vs $50K/month

Scenario 3: Cost vs. Feature

Situation: Add real-time notifications (will cost $20K/month).

Cost-Benefit Analysis:

  • Implementation cost: $50K (developer time)
  • Ongoing cost: $20K/month
  • Revenue impact: $30K/month (increased engagement)
  • Break-even: 2 months
  • Decision: Proceed

Risks of Ignoring This Principle

❌ Runaway Costs: Spend $1M/month on $100K/month workload ❌ Budget Overruns: Surprises at billing time ❌ Inefficient Architecture: Expensive patterns become norm ❌ Constrained Growth: Can’t add features without cost explosion ❌ Lost Competitiveness: Competitors with lower costs undercut prices

Best Practices

✅ Monitor costs continuously Real-time visibility into spending.

✅ Set budgets and alerts Prevent runaway costs.

✅ Right-size systematically Use data to decide instance types.

✅ Use purchasing models Mix on-demand, reserved, spot.

✅ Archive aggressively Old data should be cheap.

✅ Optimize data transfer Expensive and often unnecessary.

✅ Design for efficiency Efficiency matters architecturally.

✅ Educate teams Everyone should understand cost impact.

✅ Review quarterly Regularly assess optimization opportunities.

✅ Make trade-offs explicit Cost vs. performance decisions documented.

References

  • FinOps Foundation: https://www.finops.org/
  • Cloud Cost Management (VMware, CloudHealth)
  • AWS Cost Optimization: https://aws.amazon.com/blogs/cost-management/

Last Updated: November 2025 Principle Category: Operations Applies To: All systems Related Documents: Cost Management Guide, FinOps Practices