탄력성과 고가용성의 핵심, ELB와 Auto Scaling
이 두 서비스는 고가용성과 탄력성이라는 클라우드의 핵심 가치를 구현하는 "단짝"입니다. 덤프 문제에서 "트래픽 급증에 대비하고..." 또는 "인스턴스 장애에도 서비스를..." 같은 시나리오가 나온다면 100% 이 두 서비스를 묻는 문제입니다.
1. Load Balancer (ELB): 트래픽 분산의 "교통 경찰"
ELB(Elastic Load Balancing)는 이름 그대로 트래픽(Load)을 여러 대상(주로 EC2 인스턴스)에 분산(Balancing)시켜주는 서비스입니다. 왜 필요할까요?
- 고가용성: 하나의 EC2 인스턴스가 장애로 다운되어도, 로드 밸런서가 정상적인 다른 인스턴스로만 트래픽을 보내주어 서비스 중단을 방지합니다.
- 부하 분산: 대량의 트래픽을 여러 인스턴스에 골고루 나눠주어 한 서버가 과부하되는 것을 막습니다.
- 단일 진입점: 클라이언트는 수십 대의 서버 IP를 알 필요 없이, 로드 밸런서의 대표 DNS 주소 하나로만 접근하면 됩니다.
SAA 시험에서는 특히 ALB와 NLB의 차이를 명확히 구분해야 합니다.
ALB (Application Load Balancer) - L7
- 계층: Layer 7 (HTTP/HTTPS)
- 특징: 애플리케이션 계층에서 작동하여 HTTP 헤더, URL 경로 등 "콘텐츠(내용)"를 보고 트래픽을 분산합니다.
- 핵심 기능:
- 경로 기반 라우팅:
example.com/api는 A 서버 그룹으로, example.com/images는 B 서버 그룹으로 분산
- 호스트 기반 라우팅:
api.example.com과 blog.example.com 요청을 다른 서버 그룹으로 분산
- 언제 사용하나?
- 일반적인 웹사이트, MSA 아키텍처.
- 덤프 문제에서 "URL 경로에 따라 다른 서버로..."라는 말이 나오면 100% ALB입니다.
NLB (Network Load Balancer) - L4
- 계층: Layer 4 (TCP/UDP)
- 특징: 네트워크 계층에서 작동합니다. IP 주소와 포트만 보고 트래픽을 매우 빠른 속도로 pass-through 합니다.
- 핵심 기능:
- 초고성능 및 낮은 지연 시간: ALB보다 훨씬 빠르고 수백만 건의 요청을 처리할 수 있습니다.
- 고정 IP(Elastic IP) 할당 가능: 로드 밸런서에 고정 IP를 부여할 수 있습니다.
- 언제 사용하나?
- 성능이 매우 중요한 실시간 게임 서버, IoT 데이터 수집, 금융권 통신.
- 덤프 문제에서 "극단적인 성능", "수백만 건의 요청", "낮은 지연 시간", "고정 IP"가 필요하다고 하면 NLB가 정답입니다.
2. Auto Scaling: 수요에 맞춘 "고무줄" 서버
Auto Scaling은 정의된 조건에 따라 EC2 인스턴스 수를 자동으로 늘리거나(Scale-Out) 줄여주는(Scale-In) 서비스입니다.
- 탄력성 및 비용 효율: 트래픽이 몰리면 서버를 늘려 대응하고, 트래픽이 없으면 서버를 줄여 비용을 절감합니다.
- 고가용성 및 자가 치유: EC2 인스턴스가 비정상 상태가 되면, Auto Scaling 그룹이 이를 자동으로 감지하여 종료시키고 새 인스턴스를 다시 시작시켜 항상 원하는 수의 건강한 인스턴스를 유지합니다.
핵심 구성 요소
-
시작 템플릿 (Launch Template)
- "무엇을" 시작할지에 대한 정의서입니다. (AMI, 인스턴스 유형, 보안 그룹, 키 페어 등)
- (참고: 과거에는 '시작 구성(Launch Configuration)'을 썼지만, 현재는 '시작 템플릿' 사용이 권장됩니다.)
-
Auto Scaling Group (ASG)
- "어디서", "몇 개를" 관리할지에 대한 그룹입니다.
- Min (최소): 아무리 트래픽이 없어도 유지할 최소 인스턴스 수.
- Max (최대): 아무리 트래픽이 많아도 늘어날 최대 인스턴스 수. (비용 상한선)
- Desired (원하는 용량): 현재 유지하려는 인스턴스 수. ASG는 이 숫자를 맞추기 위해 노력합니다.
-
조정 정책 (Scaling Policies)
- "언제" 늘리고 줄일지에 대한 규칙입니다.
- 대상 추적 조정 (Target Tracking): 가장 많이 쓰입니다. (예: "그룹의 평균 CPU 사용률이 50%가 되도록 인스턴스 수를 조절해줘")
- 예약된 조정 (Scheduled Scaling): 예측 가능한 트래픽에 사용합니다. (예: "매주 금요일 오후 6시에 인스턴스를 5대로 늘려줘")
3. ELB + Auto Scaling:
이 두 서비스는 항상 함께 작동하여 완벽한 아키텍처를 만듭니다.
[사용자] → [ELB] → [Auto Scaling Group (EC2 인스턴스들)]
이 조합이 어떻게 작동하는지 시나리오로 이해하면 덤프 문제 풀이가 쉬워집니다.
이처럼 ELB는 트래픽을 분산하고, ASG는 서버의 수(탄력성)와 건강 상태(자가 치유)를 책임집니다.