AWS Learning
Compute

AWS Auto Scaling

EC2 Auto Scaling chi tiết, Target Tracking, Warm Pools, Mixed Instances

Tổng quan

AWS Auto Scaling là dịch vụ cho phép tự động điều chỉnh capacity (số lượng tài nguyên) dựa trên nhu cầu thực tế, giúp:

  • High Availability: Đảm bảo luôn có đủ resources để handle traffic
  • Cost Optimization: Chỉ trả tiền cho những gì bạn thực sự cần
  • Fault Tolerance: Tự động thay thế instances bị lỗi
  • Better Performance: Tránh tình trạng quá tải

Các loại Auto Scaling

1. EC2 Auto Scaling

Mở rộng/thu hẹp số lượng EC2 instances trong Auto Scaling Group.

2. Application Auto Scaling

Mở rộng các dịch vụ AWS khác:

  • ECS services
  • DynamoDB tables và Global Secondary Indexes
  • Aurora Replicas
  • Lambda provisioned concurrency
  • Spot Fleet requests
  • EMR clusters
  • AppStream 2.0 fleets
  • SageMaker endpoints

3. AWS Auto Scaling (Unified)

Console tập trung để quản lý scaling cho nhiều resources cùng lúc với Scaling Plans.


Kiến trúc EC2 Auto Scaling

┌────────────────────────────────────────────────────────────────────┐
│                        Auto Scaling Group                          │
│                                                                    │
│  ┌────────────┐    ┌────────────┐    ┌────────────┐                │
│  │    EC2     │    │    EC2     │    │    EC2     │   ...          │
│  │ Instance 1 │    │ Instance 2 │    │ Instance 3 │                │
│  │   (AZ-a)   │    │   (AZ-b)   │    │   (AZ-a)   │                │
│  └────────────┘    └────────────┘    └────────────┘                │
│                                                                    │
│  Minimum Capacity: 1                                               │
│  Desired Capacity: 3                                               │
│  Maximum Capacity: 6                                               │
│                                                                    │
└────────────────────────────────────────────────────────────────────┘


              ┌───────────────┴───────────────┐
              │                               │
      ┌───────┴───────┐              ┌────────┴────────┐
      │Launch Template│              │ Scaling Policies│
      │  (How to      │              │ (When to        │
      │   launch)     │              │  scale)         │
      └───────────────┘              └─────────────────┘

Các thành phần chính

1. Launch Template (Khuyên dùng) / Launch Configuration (Legacy)

Launch Template định nghĩa cách tạo EC2 instances:

Thuộc tínhMô tả
AMI IDImage để launch instance
Instance Typet2.micro, m5.large, etc.
Key PairSSH key để truy cập
Security GroupsFirewall rules
IAM RolePermissions cho instance
User DataScripts chạy khi boot
EBS VolumesStorage configuration
Network SettingsVPC, Subnet preferences

[!TIP] Launch Template là phiên bản mới hơn, hỗ trợ versioning và nhiều tính năng hơn Launch Configuration.

2. Auto Scaling Group (ASG)

ASG quản lý một nhóm EC2 instances:

┌─────────────────────────────────────────────────────────────┐
│                    Auto Scaling Group                       │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│   Minimum ◄────────── Desired ──────────► Maximum           │
│     1                    3                   10             │
│     │                    │                  │               │
│     │    ┌───┐ ┌───┐ ┌───┐                  │               │
│     └───►│ I │ │ I │ │ I │◄─────────────────┘               │
│          └───┘ └───┘ └───┘                                  │
│          Current: 3 instances                               │
│                                                             │
└─────────────────────────────────────────────────────────────┘

Capacity Settings:

  • Minimum Capacity: Số instance tối thiểu (không bao giờ scale xuống dưới)
  • Desired Capacity: Số instance mong muốn hiện tại
  • Maximum Capacity: Số instance tối đa (không bao giờ scale lên trên)

Scaling Policies (Chính sách mở rộng)

Tự động điều chỉnh để duy trì metric ở mức target.

Ví dụ: Giữ CPU Utilization = 50%

CPU hiện tại: 70% → Scale OUT (thêm instances)
CPU hiện tại: 30% → Scale IN (giảm instances)
CPU hiện tại: 50% → Không thay đổi

Predefined Metrics:

MetricMô tả
ASGAverageCPUUtilizationTrung bình CPU của ASG
ASGAverageNetworkInTrung bình bytes nhận vào
ASGAverageNetworkOutTrung bình bytes gửi đi
ALBRequestCountPerTargetSố requests per target từ ALB

[!NOTE] Target Tracking là cách đơn giản và hiệu quả nhất. AWS sẽ tự động tạo và quản lý CloudWatch alarms.


2. Step Scaling

Scale theo các "bước" dựa trên mức độ alarm.

┌────────────────────────────────────────────────────────────┐
│                    Step Scaling Policy                     │
├────────────────────────────────────────────────────────────┤
│                                                            │
│  CPU 0-40%    │ Scale IN:  Remove 2 instances              │
│  CPU 40-60%   │ No Action                                  │
│  CPU 60-80%   │ Scale OUT: Add 1 instance                  │
│  CPU 80-100%  │ Scale OUT: Add 3 instances                 │
│                                                            │
└────────────────────────────────────────────────────────────┘

Ưu điểm: Có thể định nghĩa các mức độ scale khác nhau tùy theo severity.


3. Simple Scaling

Scale một lượng cố định khi alarm triggered, sau đó có cooldown period.

┌──────────────────────────────────────────────────────────────┐
│                                                              │
│  Alarm "High CPU" triggered → Add 2 instances                │
│                              ↓                               │
│                     Cooldown: 300 seconds                    │
│                     (Không scale trong 5 phút)               │
│                                                              │
└──────────────────────────────────────────────────────────────┘

[!CAUTION] Simple Scaling có hạn chế vì cooldown period có thể gây chậm trễ khi traffic thay đổi liên tục. Ưu tiên dùng Step Scaling hoặc Target Tracking.


4. Scheduled Scaling

Scale theo lịch định trước - phù hợp khi bạn biết trước pattern.

Ví dụ: Website bán hàng

┌─────────────────────────────────────────────────────────────┐
│  Thời gian           │ Action              │ Desired        │
├──────────────────────┼─────────────────────┼────────────────┤
│  Mỗi ngày 8:00 AM    │ Scale OUT           │ 5 instances    │
│  Mỗi ngày 10:00 PM   │ Scale IN            │ 2 instances    │
│  Black Friday        │ Scale OUT           │ 20 instances   │
│  Chủ nhật            │ Scale IN            │ 1 instance     │
└─────────────────────────────────────────────────────────────┘

Cron Expression Format:

cron(0 8 * * ? *)    # Mỗi ngày lúc 8:00 UTC
cron(0 22 * * ? *)   # Mỗi ngày lúc 22:00 UTC

5. Predictive Scaling

Sử dụng Machine Learning để phân tích traffic patterns và scale trước khi cần.

┌────────────────────────────────────────────────────────────────┐
│                     Predictive Scaling                         │
│                                                                │
│  Traffic    ^                                                  │
│  Pattern    │     ╭──╮                                         │
│             │    ╱    ╲      ← ML dự đoán traffic tăng         │
│             │   ╱      ╲                                       │
│             │──╱────────╲──                                    │
│             └──────────────────► Time                          │
│                                                                │
│  Scaling    ^                                                  │
│  Action     │  ╭──╮                                            │
│             │ ╱    ╲         ← Scale TRƯỚC khi traffic tăng    │
│             │╱      ╲                                          │
│             └──────────────────► Time                          │
│                                                                │
└────────────────────────────────────────────────────────────────┘

Yêu cầu:

  • Cần ít nhất 24 giờ historical data
  • Hoạt động tốt nhất với patterns định kỳ (daily, weekly)

Kết hợp với Load Balancer

Kiến trúc tích hợp

                              Internet


                    ┌─────────────────────────┐
                    │    Application Load     │
                    │       Balancer          │
                    └───────────┬─────────────┘

                    ┌───────────┴─────────────┐
                    │      Target Group       │◄── Health Check
                    │  (Auto-registered by    │    (từ ALB)
                    │       ASG)              │
                    └───────────┬─────────────┘

            ┌───────────────────┼────────────────────────┐
            ▼                   ▼                   ▼
      ┌──────────┐        ┌──────────┐        ┌──────────┐
      │   EC2    │        │   EC2    │        │   EC2    │
      │Instance 1│        │Instance 2│        │Instance 3│
      └──────────┘        └──────────┘        └──────────┘
            ▲                   ▲                   ▲
            └───────────────────┼────────────────────────┘

                    ┌───────────┴─────────────┐
                    │   Auto Scaling Group    │
                    │ • Auto-register to TG   │
                    │ • Health Check từ ELB   │
                    └─────────────────────────┘

ASG vs Target Group - So sánh chi tiết

Đặc điểmAuto Scaling GroupTarget Group
Thuộc vềEC2 Auto ScalingElastic Load Balancer
Mục đích chínhQuản lý số lượng instancesĐịnh tuyến traffic
Tạo/Xóa instances✅ Có❌ Không
Routing traffic❌ Không✅ Có
Health CheckEC2 hoặc ELBHTTP/HTTPS/TCP
Khi unhealthyTerminate & replaceNgừng gửi traffic

ASG hoạt động độc lập với Load Balancer

ASG và Load Balancer là 2 dịch vụ hoàn toàn độc lập, có thể dùng riêng lẻ hoặc kết hợp:

ScenarioASGLBUse Case
Chỉ dùng ASGBatch jobs, SQS workers, scheduled tasks
Chỉ dùng LBStatic fleet với số lượng cố định
Dùng cả haiWeb apps (Best practice)

Auto Registration vào Target Group

Khi ASG được attach với Target Group, việc register/deregister instances diễn ra hoàn toàn tự động:

┌─────────────────────────────────────────────────────────────────────────┐
│                    ASG + TARGET GROUP AUTO REGISTRATION                 │
├─────────────────────────────────────────────────────────────────────────┤
│                                                                         │
│  SCALE OUT (Thêm instance):                                             │
│  ─────────────────────────────                                          │
│  ASG launch instance ──► Boot & Health check ──► Auto register vào TG   │
│                                                  ──► LB gửi traffic     │
│                                                                         │
│  SCALE IN (Xóa instance):                                               │
│  ────────────────────────                                               │
│  ASG terminate ──► Auto deregister khỏi TG ──► Connection draining      │
│                                              ──► Instance terminated    │
│                                                                         │
└─────────────────────────────────────────────────────────────────────────┘
ActionASG tự động làm
Launch instance mớiRegister vào Target Group
Terminate instanceDeregister khỏi Target Group
Instance unhealthyTerminate, launch mới, register vào TG

[!NOTE] Điều này chỉ hoạt động khi bạn đã attach ASG với Target Group trong cấu hình ASG.


Health Checks

Các loại Health Check

┌─────────────────────────────────────────────────────────────────┐
│                      Health Check Types                         │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  1. EC2 Health Check (Default)                                  │
│     └── Kiểm tra: Instance status = running                     │
│     └── Khi fail: Instance bị terminate & replace               │
│                                                                 │
│  2. ELB Health Check                                            │
│     └── Kiểm tra: HTTP response từ application                  │
│     └── Khi fail: Instance bị mark unhealthy                    │
│     └── ASG sẽ terminate & launch instance mới                  │
│                                                                 │
│  3. Custom Health Check                                         │
│     └── Sử dụng API: set-instance-health                        │
│     └── Ứng dụng tự report health status                        │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

[!IMPORTANT] Khi sử dụng với Load Balancer, nên bật ELB Health Check để ASG có thể thay thế instances mà application không responsive.

Thứ tự replace instance unhealthy (default behavior)

Với health check failure, hành vi mặc định của EC2 Auto Scaling là terminate and launch:

  1. Tạo scaling activity để terminate instance unhealthy
  2. Đồng thời tạo scaling activity khác để launch instance thay thế (trong lúc terminate diễn ra)

Muốn đổi sang hướng ưu tiên availability (launch trước rồi terminate), cần cấu hình instance maintenance policy.

Nguồn: View the reason for health check failures, Instance maintenance policy for Auto Scaling group

Health Check Grace Period

Instance Launch ─────────────────────────────────────────► Running
                │                                         │
                │◄────── Grace Period (default 300s) ────►│
                │                                         │
                │  Trong thời gian này:                   │
                │  • Không check health                   │
                │  • Instance đang boot/init              │
                │  • Application đang start               │

                                              Health Check bắt đầu

Instance Lifecycle

Lifecycle States

┌─────────────────────────────────────────────────────────────────────┐
│                        Instance Lifecycle                           │
│                                                                     │
│  ┌─────────┐    ┌─────────────┐    ┌───────────┐    ┌─────────────┐ │
│  │ Pending │───►│Pending:Wait │───►│InService  │───►│ Terminating │ │
│  └─────────┘    └─────────────┘    └───────────┘    └─────────────┘ │
│       │              │                   │                │         │
│       │              │                   │                │         │
│       │         Lifecycle Hook     Normal Running    Lifecycle Hook │
│       │         (optional)                            (optional)    │
│       │                                                             │
│  Launch                                                   Terminate │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

Lifecycle Hooks

Cho phép thực hiện custom actions khi instance đang scale:

Use Cases:

  • Scale OUT Hook: Install software, pull config từ S3, register vào service discovery
  • Scale IN Hook: Drain connections, backup logs, deregister từ external systems
┌───────────────────────────────────────────────────────────────────┐
│                      Lifecycle Hook Flow                          │
│                                                                   │
│  Scale OUT:                                                       │
│  Pending ──► Pending:Wait ──► [Custom Action] ──► InService       │
│                     │                                             │
│                    ├── Pull config from S3                        │
│                    ├── Register to DNS                            │
│                    └── Warm up cache                              │
│                                                                   │
│  Scale IN:                                                        │
│  InService ──► Terminating:Wait ──► [Custom Action] ──► Terminated│
│                        │                                          │
│                       ├── Drain connections                       │
│                       ├── Upload logs to S3                       │
│                       └── Notify monitoring system                │
│                                                                   │
└───────────────────────────────────────────────────────────────────┘

Multi-AZ Deployment

AZ Rebalancing

ASG tự động phân phối instances đều giữa các Availability Zones:

┌─────────────────────────────────────────────────────────────────┐
│                    Auto Scaling Group                           │
│                    Desired: 6 instances                         │
│                                                                 │
│    AZ-a              AZ-b              AZ-c                     │
│  ┌──────┐          ┌──────┐          ┌──────┐                   │
│  │ I-1  │          │ I-3  │          │ I-5  │                   │
│  │ I-2  │          │ I-4  │          │ I-6  │                   │
│  └──────┘          └──────┘          └──────┘                   │
│    2 instances       2 instances       2 instances              │
│                                                                 │
│  ✅ Evenly distributed across AZs                               │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

[!NOTE] Khi một AZ gặp vấn đề, ASG sẽ tự động launch instances ở các AZ còn lại.

Thứ tự hành động khi AZ bị lệch (AZ rebalancing)

Khi distribution giữa các AZ bị lệch (ví dụ terminate thủ công nhiều instance ở một AZ), ASG sẽ rebalance theo thứ tự:

  1. Launch instance mới ở AZ đang thiếu
  2. Terminate instance cũ ở AZ dư

Thiết kế này giúp hạn chế ảnh hưởng đến hiệu năng và độ sẵn sàng. Trong quá trình rebalancing, ASG có thể tạm thời vượt max capacity (tối đa 10% hoặc ít nhất 1 instance).

Nguồn: Control which Auto Scaling instances terminate during scale in


Scaling với Spot & Mixed Instances

Mixed Instances Policy

Kết hợp On-Demand và Spot instances để tối ưu chi phí:

┌─────────────────────────────────────────────────────────────────┐
│               Mixed Instances Auto Scaling                      │
│                                                                 │
│   On-Demand Instances (Base Capacity)                           │
│   ┌────┐ ┌────┐                                                 │
│   │ OD │ │ OD │  ← Guaranteed capacity (2 instances)            │
│   └────┘ └────┘                                                 │
│                                                                 │
│   Spot Instances (Scale capacity - 70% cheaper!)                │
│   ┌────┐ ┌────┐ ┌────┐ ┌────┐                                   │
│   │ SP │ │ SP │ │ SP │ │ SP │  ← Cost-optimized (4 instances)   │
│   └────┘ └────┘ └────┘ └────┘                                   │
│                                                                 │
│   Configuration:                                                │
│   • On-Demand Base: 2                                           │
│   • On-Demand Percentage Above Base: 30%                        │
│   • Spot Allocation: Lowest Price or Capacity Optimized         │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Cooldown Period

Thời gian chờ giữa các scaling activities:

┌─────────────────────────────────────────────────────────────────┐
│                      Cooldown Period                            │
│                                                                 │
│  Scale OUT ────► Cooldown (300s) ────► Ready for next scale     │
│      │                                                          │
│       │ Trong cooldown:                                         │
│       │ • Không trigger thêm scaling                            │
│       │ • Ignore CloudWatch alarms                              │
│       │ • Chờ instances ổn định                                 │
│                                                                 │
│  Default: 300 seconds (5 phút)                                  │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

[!TIP] Với Target Tracking, AWS tự động quản lý cooldown tối ưu. Không cần configure thủ công.


Termination Policies

Khi scale IN, ASG quyết định terminate instance nào dựa trên policy:

PolicyMô tả
DefaultAZ có nhiều instances nhất → Outdated configs (①Launch Config ②Different LT ③Oldest version current LT) → Closest to billing hour → Random
OldestInstanceTerminate instance cũ nhất
NewestInstanceTerminate instance mới nhất
OldestLaunchConfigurationTerminate instance dùng Launch Config cũ nhất
OldestLaunchTemplateTerminate instance dùng Launch Template cũ nhất
ClosestToNextInstanceHourTerminate instance gần billing hour nhất
AllocationStrategyDựa trên allocation strategy (Spot/On-Demand)

Default Termination Policy Flow

┌──────────────────────────────────────────────────────────────────────┐
│                    Default Termination Policy                        │
│                                                                      │
│  1. Chọn AZ có nhiều instances nhất                                  │
│           │                                                          │
│           ▼                                                          │
│  2. Tìm instances dùng outdated configurations (theo thứ tự):        │
│     ① Instances dùng Launch Configuration (ưu tiên terminate đầu)    │
│     ② Instances dùng Launch Template khác với current LT             │
│     ③ Instances dùng oldest version của current Launch Template      │
│                                                                      │
│     → Nếu nhiều instances cùng dùng Launch Config:                   │
│       chọn instance có oldest Launch Config                          │
│           │                                                          │
│           ▼                                                          │
│  3. Nếu vẫn nhiều instances cùng điều kiện:                          │
│     Chọn instance gần next billing hour nhất                         │
│           │                                                          │
│           ▼                                                          │
│  4. Nếu vẫn còn tie: Random                                          │
│                                                                      │
│  ⚠ Launch Config luôn bị coi là outdated hơn Launch Template!        │
└──────────────────────────────────────────────────────────────────────┘

Monitoring & Metrics

CloudWatch Metrics cho ASG

MetricÝ nghĩa
GroupMinSizeMinimum size của ASG
GroupMaxSizeMaximum size của ASG
GroupDesiredCapacityDesired capacity hiện tại
GroupInServiceInstancesSố instances đang InService
GroupPendingInstancesSố instances đang Pending
GroupTerminatingInstancesSố instances đang Terminating
GroupTotalInstancesTổng số instances

Enable Group Metrics

aws autoscaling enable-metrics-collection \
    --auto-scaling-group-name my-asg \
    --granularity "1Minute"

Instance Protection

Bảo vệ instances khỏi bị terminate khi scale IN:

┌─────────────────────────────────────────────────────────────────┐
│                   Instance Protection                           │
│                                                                 │
│   ┌────────┐  ┌────────┐  ┌────────┐  ┌────────┐                │
│   │  EC2   │  │  EC2   │  │  EC2   │  │  EC2   │                │
│   │  (🔒)  │  │        │  │  (🔒)  │  │        │                │
│   └────────┘  └────────┘  └────────┘  └────────┘                │
│   Protected   Normal      Protected   Normal                    │
│                                                                 │
│   Khi Scale IN: Chỉ terminate instances KHÔNG protected         │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Use Cases:

  • Master/Primary instances
  • Instances đang xử lý long-running jobs
  • Instances cần manual intervention trước khi terminate

Instance Refresh

Update instances trong ASG với zero/minimal downtime:

┌─────────────────────────────────────────────────────────────────┐
│                    Instance Refresh                             │
│                                                                 │
│  Before: All instances use AMI v1                               │
│  ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐                            │
│  │AMI-1 │ │AMI-1 │ │AMI-1 │ │AMI-1 │                            │
│  └──────┘ └──────┘ └──────┘ └──────┘                            │
│                                                                 │
│  During Refresh (min healthy: 50%):                             │
│  ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐                            │
│  │AMI-2 │ │AMI-2 │ │AMI-1 │ │AMI-1 │  ← Rolling update          │
│  └──────┘ └──────┘ └──────┘ └──────┘                            │
│                                                                 │
│  After: All instances use AMI v2                                │
│  ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐                            │
│  │AMI-2 │ │AMI-2 │ │AMI-2 │ │AMI-2 │                            │
│  └──────┘ └──────┘ └──────┘ └──────┘                            │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘

Warm Pools (Preview)

Pre-initialized instances để giảm thời gian scale OUT.

Khái niệm

Warm Pool là một nhóm các instances đã được pre-initialized (đã boot, đã cài đặt software) nhưng chưa phục vụ traffic. Khi cần scale OUT, ASG sẽ lấy instance từ Warm Pool thay vì launch mới từ đầu.

Kiến trúc

┌───────────────────────────────────────────────────────────────────────────┐
│                         AUTO SCALING GROUP                                │
├───────────────────────────────────────────────────────────────────────────┤
│                                                                           │
│   ACTIVE INSTANCES (InService)              WARM POOL                     │
│   ================================          ==========================    │
│                                                                           │
│   ┌──────────┐ ┌──────────┐ ┌──────────┐   ┌──────────┐ ┌──────────┐      │
│   │ Instance │ │ Instance │ │ Instance │   │ Instance │ │ Instance │      │
│   │    A     │ │    B     │ │    C     │   │    D     │ │    E     │      │
│   │ [RUNNING]│ │ [RUNNING]│ │ [RUNNING]│   │ [STOPPED]│ │ [STOPPED]│      │
│   └──────────┘ └──────────┘ └──────────┘   └──────────┘ └──────────┘      │
│        │            │            │              │             │           │
│        └────────────┴────────────┘              └─────────────┘           │
│                     │                                 │                   │
│            Serving Traffic                    Pre-warmed, Ready           │
│                                               (Boot completed,            │
│                                                App installed)             │
│                                                                           │
└───────────────────────────────────────────────────────────────────────────┘

Scale OUT Flow

┌────────────────────────────────────────────────────────────────────────────┐
│                         SCALE OUT COMPARISON                               │
├────────────────────────────────────────────────────────────────────────────┤
│                                                                            │
│  WITHOUT WARM POOL (Traditional):                                          │
│  ─────────────────────────────────                                         │
│                                                                            │
│  CloudWatch     Launch        Boot OS      Install      Register           │
│   Alarm    ──►  Instance  ──►  (60s)   ──►  App    ──►  to ELB    ──► Ready│
│    │              │             │          (120s)       (30s)              │
│    └──────────────┴─────────────┴────────────┴───────────┘                 │
│                        Total: 3-5 minutes                                  │
│                                                                            │
├────────────────────────────────────────────────────────────────────────────┤
│                                                                            │
│  WITH WARM POOL (Optimized):                                               │
│  ──────────────────────────────                                            │
│                                                                            │
│  CloudWatch     Start from      Register                                   │
│   Alarm    ──►  Warm Pool   ──►  to ELB   ──► Ready                        │
│    │            (10-20s)         (30s)                                     │
│    └────────────┴────────────────┘                                         │
│                Total: 30-60 seconds                                        │
│                                                                            │
└────────────────────────────────────────────────────────────────────────────┘

Warm Pool States

StateMô tảCost
StoppedInstance đã boot xong, sau đó bị stopChỉ trả tiền EBS
RunningInstance running nhưng chưa serve trafficTrả tiền EC2 + EBS
HibernatedInstance hibernated (RAM saved to EBS)Chỉ trả tiền EBS

Benefits

  • Faster scale out: Giảm từ 3-5 phút xuống còn 30-60 giây
  • Pre-configured: Instances đã boot, cài software, pull config
  • Cost effective: Dùng Stopped state để tiết kiệm chi phí
  • Reliability: Instances đã được verify hoạt động trước khi serve traffic

Exam Tips (Cloud Practitioner / SAA)

Key Points to Remember

  1. Auto Scaling = Horizontal Scaling

    • Thêm/bớt instances (không phải tăng size của instance)
  2. Free Service

    • Auto Scaling miễn phí, chỉ trả tiền cho EC2 instances được launch
  3. Scaling Policy Priority

    • Target Tracking > Step Scaling > Simple Scaling
    • Target Tracking là recommended cho hầu hết use cases
  4. Health Check Types

    • EC2 (default) - chỉ check instance status
    • ELB - check application response (recommended khi dùng với ALB)
  5. Cooldown Period

    • Ngăn scaling quá nhanh
    • Default 300 seconds
    • Target Tracking tự quản lý cooldown
  6. Launch Template vs Launch Configuration

    • Launch Template là recommended (versioning, mới hơn)
    • Launch Configuration là legacy (không thể modify)
  7. Multi-AZ

    • ASG tự động distribute instances across AZs
    • AZ Rebalancing đảm bảo even distribution
  8. Predictive Scaling

    • Sử dụng ML để dự đoán traffic
    • Scale TRƯỚC khi cần

Common Exam Scenarios

ScenarioSolution
Scale based on CPUTarget Tracking với ASGAverageCPUUtilization
Scale at specific timesScheduled Scaling
Scale for predictable patternsPredictive Scaling
Handle sudden traffic spikesStep Scaling hoặc Target Tracking
Update instances với new AMIInstance Refresh
Scale fasterWarm Pools
Reduce costsMixed Instances (On-Demand + Spot)

Tài liệu tham khảo