AWS

AWS 클라우드 따라잡기 8장

고가용성 — ELB와 Auto Scaling

이번 장은 로드밸런싱과 오토스케일링을 다룬다.

AWS 8장 개념도

서비스가 커지면 서버 한 대로는 감당이 안 된다.

여러 대로 나누고(로드밸런싱), 트래픽에 따라 대수를 자동 조절하는(오토스케일링) 것이 이 장의 주제다.

이 장의 목표는 다음과 같다.

  • 로드밸런서의 역할과 종류를 안다.
  • 오토스케일링의 동작 원리를 이해한다.
  • 둘을 결합한 표준 아키텍처를 그린다.

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