The Hidden Costs of Cloud Services

July 3, 2017

Cloud pricing pages show hourly instance costs. The bill includes data transfer, IOPS, snapshots, API calls, and dozens of other charges. The gap between expected and actual costs catches organizations by surprise.

Understanding hidden costs helps plan accurately and optimize spending.

Where Hidden Costs Live

Data Transfer

Data transfer costs are consistently underestimated:

Egress charges: Data leaving the cloud is expensive. $0.09/GB for AWS egress adds up quickly when serving content to users.

Inter-region transfer: Replicating data across regions costs more than staying within a region.

Cross-AZ transfer: Even within a region, traffic between availability zones isn’t free.

NAT Gateway: Instances in private subnets accessing the internet pay NAT Gateway data processing charges—$0.045/GB.

A service that sends 10TB/month externally incurs $900 in egress alone.

Storage Costs Beyond Capacity

Storage isn’t just about how much you store:

IOPS: EBS volumes have baseline IOPS. Exceeding them requires provisioned IOPS at additional cost.

Snapshots: EBS snapshots are charged per GB-month. Old snapshots accumulate.

S3 requests: S3 charges per request—PUT, GET, LIST. High-request workloads can have significant request costs.

Data retrieval: S3 Glacier retrieval costs depend on speed. Fast retrieval is expensive.

Compute Surprises

Stopped instances: Stopped instances don’t charge compute, but attached EBS volumes do.

IP addresses: Elastic IPs not attached to running instances cost money.

Load balancer hours: ALBs and NLBs charge by the hour plus data processed.

Lambda invocations: Free tier is generous, but high-volume functions accumulate charges.

Networking

VPN and Direct Connect: Hybrid connectivity has ongoing costs.

Elastic Load Balancer: Per-hour plus per-connection charges.

Route 53: Hosted zones and queries are charged.

Database Services

RDS: Multi-AZ doubles costs. Storage, IOPS, and backups add up.

DynamoDB: Read/write capacity units, storage, backups, global tables.

ElastiCache: Node-hours plus backup storage.

Support and Management

Support plans: Enterprise support is 3-10% of bill. Business support is 3-10% of monthly charges.

CloudWatch: Custom metrics, dashboards, and logs ingestion.

Config rules: Per rule evaluation charges.

Cost Visibility

Enable Cost Allocation Tags

Tags enable cost attribution:

Resources:
  MyInstance:
    Type: AWS::EC2::Instance
    Properties:
      Tags:
        - Key: Environment
          Value: production
        - Key: Team
          Value: platform
        - Key: Service
          Value: api

Consistent tagging enables:

Without tags, cost attribution is guesswork.

Use Cost Explorer

AWS Cost Explorer shows:

Review Cost Explorer regularly. Monthly bills miss trends visible in daily data.

Set Up Budgets and Alerts

AWS Budgets alert before costs exceed thresholds:

Alerts enable response before the bill arrives.

Optimization Strategies

Reserved Instances and Savings Plans

For stable workloads, commit to 1 or 3-year terms for significant discounts (30-70%).

Savings Plans: More flexible than reserved instances. Commit to $/hour spend, applies across instance types.

Reserved Instances: Commit to specific instance configuration. Higher discount for less flexibility.

Calculate break-even carefully. Unused reservations waste money.

Spot Instances

For fault-tolerant workloads, spot instances offer 60-90% discount:

Handle interruption gracefully. Spot instances can be terminated with 2-minute warning.

Right-Sizing

Oversized instances waste money. Analyze utilization:

AWS Compute Optimizer provides recommendations. Third-party tools offer deeper analysis.

Storage Optimization

Lifecycle policies: Move old data to cheaper storage tiers.

{
  "Rules": [{
    "ID": "Archive old logs",
    "Status": "Enabled",
    "Transitions": [{
      "Days": 30,
      "StorageClass": "STANDARD_IA"
    }, {
      "Days": 90,
      "StorageClass": "GLACIER"
    }]
  }]
}

Delete unused resources:

S3 Intelligent-Tiering: Automatically moves objects between access tiers.

Data Transfer Optimization

CloudFront: Serve content through CDN. CloudFront transfer is cheaper than direct S3/EC2 egress.

VPC Endpoints: Access S3 and other services without NAT Gateway charges.

Regional data: Keep data and compute in the same region.

Architecture Optimization

Serverless: For variable workloads, Lambda charges only for execution time.

Containers: Fargate or EKS can improve utilization over dedicated instances.

Caching: Cache to reduce database and compute costs.

FinOps Practices

Cost Ownership

Teams should see and own their costs:

Teams that see costs make cost-conscious decisions.

Regular Review

Cost-Aware Architecture

Include cost in architectural decisions:

Cost is a non-functional requirement alongside performance and reliability.

Key Takeaways