
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
1. Launch Template의 기능
| 항목 | 설명 | 예시 |
|---|---|---|
| AMI | 어떤 운영체제(OS)를 쓸지 | Ubuntu, Amazon Linux, Windows 등 |
| 인스턴스 타입 | 컴퓨터 사양 (CPU, 메모리) | t3.micro, m5.large 등 |
| 키 페어 | EC2에 접속할 수 있는 Key pair | MyKey.pem (개인 키 파일) |
| 보안 그룹 | 어떤 포트를 열지 정하는 방화벽 | 80번(web), 22번(SSH) 허용 등 |
| User Data | 인스턴스가 처음 켜질 때 자동으로 실행할 스크립트 | 웹 서버 자동 설치 명령어 등 |
| IAM Role | 인스턴스가 AWS 자원에 접근할 수 있는 권한 | S3, CloudWatch 로그 전송 권한 등 |
| 네트워크 설정 | 어느 VPC, 서브넷에 속할지와 공인 IP 할당 여부 | 퍼블릭/프라이빗 서브넷 설정 등 |
Launch Template 구성 예시
| 항목 | 설정 값 |
|---|---|
| AMI | Amazon 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 서버 |
🔒 보안 그룹 설정
| 방향 | 프로토콜 | 포트 범위 | 소스 |
|---|---|---|---|
| Inbound | TCP | 80 | 0.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의 특징
사용자가 갑자기 많아져도 대응 가능
트래픽이 적을 땐 자동으로 인스턴스를 줄여 비용 절감
서버의 증감을 자동으로 해주기 때문에 사람이 직접 서버 수를 늘리거나 줄일 필요없다.
부하에 대한 대응이 가능하기 때문에 고가용성 확보
Load Balancer란?
Load Balancer : 여러 개의 서버에 들어오는 트래픽을 분산시켜주는 서비스
서버에 들어오는 접속자 수가 갑자기 많아짐
적은 수의 서버로 갑자기 들어오는 트래픽 처리가 어려워짐
서버를 몇개 더 띄워서 트래픽 처리 예정
트래픽 분산을 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의 동작 흐름
사용자가 도메인 접속 → 요청은 ELB로 진입
Target Group을 참고해서 트래픽을 보낼 대상을 결정
Target Group 내부의 헬스 체크 결과를 보고, 이상 없는 대상에게만 트래픽 분산
Auto Scaling이 트래픽이나 CPU에 따라 EC2를 자동으로 증가/축소
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를 통해 자동으로 교체하거나 트래픽에서 제외하여 안정적인 서비스를 제공한다.