이번 장은 로드밸런싱과 오토스케일링을 다룬다.
서비스가 커지면 서버 한 대로는 감당이 안 된다.
여러 대로 나누고(로드밸런싱), 트래픽에 따라 대수를 자동 조절하는(오토스케일링) 것이 이 장의 주제다.
이 장의 목표는 다음과 같다.
- 로드밸런서의 역할과 종류를 안다.
- 오토스케일링의 동작 원리를 이해한다.
- 둘을 결합한 표준 아키텍처를 그린다.
1. 로드밸런서란
로드밸런서(Load Balancer)는 들어오는 트래픽을 여러 서버에 나눠 주는 장치다.
- 서버 한 대에 부하가 몰리지 않게 분산한다.
- 서버 하나가 죽어도 나머지로 트래픽을 보내 서비스가 유지된다.
- 헬스 체크로 정상 서버에만 트래픽을 보낸다.
AWS의 로드밸런서를 ELB(Elastic Load Balancing)라고 부른다.
2. ELB의 종류
ELB에는 세 가지가 있다.
| 종류 | 계층 | 용도 |
|---|---|---|
| ALB (Application) | L7 (HTTP/HTTPS) | 웹 애플리케이션, 경로 기반 라우팅 |
| NLB (Network) | L4 (TCP/UDP) | 초고성능, 낮은 지연 |
| GWLB (Gateway) | L3 | 방화벽 등 보안 어플라이언스 |
대부분의 웹 서비스는 ALB를 쓴다.
ALB는 URL 경로로 라우팅할 수 있다.
예를 들어 /api는 API 서버 그룹으로, /img는 이미지 서버 그룹으로 보낸다.
3. 대상 그룹과 헬스 체크
대상 그룹(Target Group)은 로드밸런서가 트래픽을 보낼 서버들의 묶음이다.
로드밸런서는 각 대상에 주기적으로 헬스 체크를 보낸다.
- 예:
/health경로에 요청을 보내 200 응답이 오는지 확인. - 응답이 없으면 그 서버를 "비정상"으로 표시하고 트래픽을 끊는다.
- 다시 정상이 되면 자동으로 트래픽을 재개한다.
이 덕분에 서버 한 대가 죽어도 사용자는 알아채지 못한다.
4. Auto Scaling — 서버 대수 자동 조절
Auto Scaling Group(ASG)은 서버 대수를 자동으로 조절한다.
세 가지 값을 정한다.
- 최소(min): 항상 유지할 최소 대수. (예: 2)
- 희망(desired): 지금 유지하려는 대수. (예: 2)
- 최대(max): 늘릴 수 있는 상한. (예: 10)
그리고 조정 정책(scaling policy)을 건다.
예를 들어 "평균 CPU가 70%를 넘으면 인스턴스를 추가하라"고 정한다.
트래픽이 몰리면 서버가 자동으로 늘고, 잦아들면 자동으로 준다.
이것이 클라우드의 핵심 장점인 탄력성(elasticity)이다.
5. 시작 템플릿
ASG가 새 인스턴스를 만들 때 어떤 설정으로 만들지 정의한 것이 시작 템플릿(Launch Template)이다.
AMI, 인스턴스 유형, 보안그룹, 사용자 데이터(부팅 스크립트)를 담는다.
사용자 데이터에 앱 설치·시작 스크립트를 넣어 두면, 새 인스턴스가 뜨자마자 서비스에 투입된다.
6. 표준 아키텍처
지금까지 배운 것을 모으면 웹 서비스의 표준 그림이 나온다.
사용자
│
[Route 53 DNS]
│
[ALB] ← 퍼블릭 서브넷 (여러 AZ)
│
[Auto Scaling Group: EC2 여러 대] ← 프라이빗 서브넷 (여러 AZ)
│
[RDS 멀티AZ] ← 프라이빗 서브넷
- ALB는 퍼블릭 서브넷에서 트래픽을 받는다.
- 실제 서버(EC2)는 프라이빗 서브넷에 두고 ASG로 관리한다.
- DB는 프라이빗 서브넷에 멀티AZ로 둔다.
여러 AZ에 걸쳐 있어 한 AZ가 죽어도 서비스가 살아 있다.
정리
- ELB는 트래픽을 분산하고 죽은 서버를 우회한다. 웹은 보통 ALB.
- 대상 그룹 + 헬스 체크로 정상 서버에만 트래픽을 보낸다.
- Auto Scaling은 부하에 따라 서버 대수를 자동 조절한다.
- ALB + ASG + 멀티AZ RDS가 고가용성 웹의 표준이다.
다음 장부터는 고급 주제다. 서버 없이 코드를 실행하는 서버리스를 다룬다.
댓글 0
댓글은 운영자만 작성할 수 있어요.