AWS에서의 Auto Scaling과 LoadBalancer

Sb_chi·2025년 6월 18일

AWS 기초 개념 정리

목록 보기
5/5

🔍 Intro

AWS 서비스의 가장 큰 장점은 다른 서비스들과의 유기적인 연결이다. 이번 시간에는 ASG와 ELB를 활용해 트래픽 증가에 대응하고, 서비스 안정성을 높이는 방법을 정리했다.


Auto Scaling 이란?

Auto Scaling : 서버의 부하에 따라 컴퓨팅 자원을 자동으로 늘리거나 줄이는 기능

  • 서버를 사용하려는 사용자가 평소보다 많을 때

    	서버에 부하가 발생할 경우, 서버 인스턴스를 자동으로 추가해 서버에 트래픽을 분산시켜서 서비스가 끊기지 않게 한다.
  • 서버를 사용하려는 사용자가 평소보다 적을 때

    	서비스를 이용하려는 고객이 줄어들어, 부하가 줄면 불필요한 서버를 줄여 비용을 절감한다.

💡 Auto Scaling : 트래픽 변화에 유연하게 대응해 서비스 안정성비용 효율성을 동시에 확보하는 기술

  • 고가용성 보장 및 장애 대비와 안정적인 서비스 운영
📌

Auto Scaling: 원리

ASG : Auto Scaling 이라는 원리를 AWS에서 실제로 실행하는 도구

💡 AWS 서비스에서 Auto Scaling을 구현하기 위한 기능

1. Launch Template

2. Auto Scaling Group

3. Scaling Policy


AWS에서의 Auto Scaling

1. Launch Template의 기능

  • EC2 인스턴스 생성 시 사용할 값들을 미리 정의해 놓고, Auto Scaling으로 인스턴스가 증감할 때에, 템플릿을 기반으로 인스턴스가 생성되게 하는 것
항목설명예시
AMI어떤 운영체제(OS)를 쓸지Ubuntu, Amazon Linux, Windows 등
인스턴스 타입컴퓨터 사양 (CPU, 메모리)t3.micro, m5.large
키 페어EC2에 접속할 수 있는 Key pairMyKey.pem (개인 키 파일)
보안 그룹어떤 포트를 열지 정하는 방화벽80번(web), 22번(SSH) 허용 등
User Data인스턴스가 처음 켜질 때 자동으로 실행할 스크립트웹 서버 자동 설치 명령어 등
IAM Role인스턴스가 AWS 자원에 접근할 수 있는 권한S3, CloudWatch 로그 전송 권한 등
네트워크 설정어느 VPC, 서브넷에 속할지공인 IP 할당 여부퍼블릭/프라이빗 서브넷 설정 등

Launch Template 구성 예시

항목설정 값
AMIAmazon Linux 2023 (ami-xxxxxxxxxxxxxxxxx)
인스턴스 타입t3.micro
키 페어MyKeyPair
보안 그룹sg-xxxxxxxx (포트 80 허용)
User Data
# UserData 작성

#!/bin/bash
yum update -y
amazon-linux-extras install nginx1 -y
systemctl start nginx
systemctl enable nginx

목적에 따른 EC2 인스턴스 선택

타입 계열특징용도
t 계열 (t2, t3)버스트 성능, 저렴테스트/개발
m 계열 (m5, m6)균형 잡힌 성능웹 서버, 일반 백엔드
c 계열CPU 중심게임 서버, 데이터 처리
r 계열메모리 중심캐시 서버, DB 서버

🔒 보안 그룹 설정

방향프로토콜포트 범위소스
InboundTCP800.0.0.0/0

🎯 Launch Template이 Auto Scaling에서 하는 역할

Auto Scaling Group은 인스턴스를 자동으로 만들고 없애야 하는데, EC2가

무슨 OS를 써야 하고 , 무슨 사양으로 만들어야 하는지를 알아야 되기 때문에,

이걸 미리 정리해둔 Launch Template의 역할이 되게 중요하다.


2. Auto Scaling Group(ASG)란?

  • AWS에서 실제로 Auto Scaling을 구현하는 리소스

  • 주요 기능

    • 📌 1. EC2 인스턴스를 자동으로 늘리고 줄이며, 원하는 수의 인스턴스를 사용하게 조정
      CloudWatch 지표를 기반으로 자동 확장도 가능

    • 📌 2. EC2 자체 헬스 체크 , ELB 헬스 체크로 인스턴스 상태 확인(인스턴스가 죽으면, 종료 후 새로 생성)

    • 📌 3. ASG에 여러 가용영역을 지정하면, 인스턴스를 자동으로 분산 배치해서, 장애 대비

    • 📌 4. 원하는 시간대(Traffic 포화, 비포화 시간)에 미리 맞춰서 인스턴수 수를 변경 가능


3. Scaling Policy란?

  • 클라우드 컴퓨팅 환경에서 리소스를 자동으로 조정하는 규칙을 정의하는 정책
    ASG가 언제 인스턴스 숫자를 늘리고 줄이지를 정하는 자동화 규칙

  • Scaling Policy의 보편적인 3가지 방법

    - Target Tracking : CPU 사용률의 목표치를 정하고 목표치에 근사하게 자동으로 늘리고 줄임

    - Step Tracking : CPU 사용률 올라갈 시 인스턴스를 더 많이 늘림

    - Scheduled Scaling : 정해진 시간에 자동으로 인스턴스 수 조정

  • Scaling Policy의 특징

    1. 사용자가 갑자기 많아져도 대응 가능

    2. 트래픽이 적을 땐 자동으로 인스턴스를 줄여 비용 절감

    3. 서버의 증감을 자동으로 해주기 때문에 사람이 직접 서버 수를 늘리거나 줄일 필요없다.

    4. 부하에 대한 대응이 가능하기 때문에 고가용성 확보


Load Balancer란?

Load Balancer : 여러 개의 서버에 들어오는 트래픽을 분산시켜주는 서비스

  1. 서버에 들어오는 접속자 수가 갑자기 많아짐

  2. 적은 수의 서버로 갑자기 들어오는 트래픽 처리가 어려워짐

  3. 서버를 몇개 더 띄워서 트래픽 처리 예정

  4. 트래픽 분산을 Load Balancer라는 것을 통해 처리

🔥 Auto Scaling을 통해 인스턴스 수를 자동으로 늘리거나 줄이고, 

여러 대의 인스턴스에 사용자의 요청을 효율적으로 분산시키지 않으면,

트래픽이 특정 인스턴스에 몰려 서버가 과부하가 걸리거나 서비스 장애가 발생할 수 있다.

또한, 인스턴스가 늘고 줄어들 때마다 직접 IP나 주소를 관리하기 위해, Auto Scaling과 함께 ELB를 사용한다.

ELB (Elastic Load Balancer) 란?

  • AWS에서 제공하는 로드 밸런서

  • 사용자의 요청을 여러 대의 EC2 서버에 분산

  • Target Group을 통한 트래픽 분산 : 죽은 서버를 확인하고, 살아있는 서버에만 트래픽 전달

  • Auto Scaling과 연결되어 EC2가 늘어나도 자동으로 연결

  • 하나의 도메인 주소로 여러 서버 관리 가능

  • SSL 인증서를 붙여서 보안 접속 가능 (HTTPS)

👉 보통 사용하는 ELB는 ALB(Application Load Balancer) : 웹 트래픽을 URL, 도메인 기준으로 나눠주는 로드밸런서


ASG와 ELB의 동작 흐름

  1. 사용자가 도메인 접속 → 요청은 ELB로 진입

  2. Target Group을 참고해서 트래픽을 보낼 대상을 결정

  3. Target Group 내부의 헬스 체크 결과를 보고, 이상 없는 대상에게만 트래픽 분산

  4. Auto Scaling이 트래픽이나 CPU에 따라 EC2를 자동으로 증가/축소

  5. ELB는 새 EC2에 자동 연결, 종료된 인스턴스는 자동 제외


🔗 정리

1. Auto Scaling

서버의 부하에 따라 EC2 인스턴스를 자동으로 늘리거나 줄이는 기능

이를 통해 트래픽 변화에 유연하게 대응하고 비용을 절감한다.

2. Load Balancer

Elastic Load Balancer(ELB)는 여러 서버에 들어오는 트래픽을 분산시켜주는 서비스
사용자 요청을 효율적으로 처리하여 Traffic Jam을 막는다.

3. ASG와 ELB의 사용

ASG와 ELB를 함께 사용하면, ASG가 인스턴스를 자동으로 조정하고,
ELB가 트래픽을 이상없는 EC2 인스턴스에 분산시켜 서비스 안정성을 높인다.

4. 헬스 체크와 트래픽 분산

헬스 체크 기능을 통해 비정상 인스턴스를 신속히 감지하고, 문제가 있는 인스턴스를 ASG를 통해 자동으로 교체하거나 트래픽에서 제외하여 안정적인 서비스를 제공한다.

0개의 댓글