AWS EC2 Autoscaling

AWS Auto Scaling

AWS Auto Scaling is a service that helps maintain the availability and performance of your applications by automatically adjusting capacity across multiple AWS services.


Key Features

  • Dynamic Scaling – Automatically increase or decrease capacity based on demand.
  • Predictive Scaling – Forecasts traffic patterns and adjusts resources in advance.
  • Target Tracking – Maintain a metric (e.g., average CPU utilization at 50%).
  • Scheduled Scaling – Scale resources at specific times (e.g., business hours).
  • Health Checks & Replacement – Detects and replaces unhealthy instances.

Benefits

  • Cost Optimization – Pay only for what you use by scaling in/out.
  • High Availability – Ensures applications remain available during demand spikes.
  • Performance Efficiency – Maintains consistent performance under variable load.
  • Flexibility – Works with EC2, ECS, DynamoDB, Aurora, etc.

How It Works

  1. Define an Auto Scaling Group (ASG) for EC2 instances.
  2. Set scaling policies (target tracking, step scaling, scheduled).
  3. Auto Scaling monitors CloudWatch metrics.
  4. Based on thresholds, it launches or terminates instances.

Example Use Cases

  • E-commerce – Scale during seasonal sales or flash deals.
  • Financial Apps – Maintain performance during trading hours.
  • Media & Streaming – Handle sudden spikes in viewers.
  • Batch Processing – Automatically scale worker nodes for large jobs.

  • EC2 Auto Scaling Groups
  • Elastic Load Balancing (ELB)
  • Amazon CloudWatch
  • AWS Application Auto Scaling

Example: EC2 Auto Scaling Policy (Target Tracking)

resource "aws_autoscaling_policy" "cpu_scaling" {
  name                   = "cpu-scaling"
  autoscaling_group_name = aws_autoscaling_group.web_asg.name
  policy_type            = "TargetTrackingScaling"

  target_tracking_configuration {
    predefined_metric_specification {
      predefined_metric_type = "ASGAverageCPUUtilization"
    }
    target_value = 50.0
  }
}