트래픽이 갑자기 몰리면 어떻게 될까요?
새로운 서비스를 출시했는데 갑자기 수천 명이 동시에 접속한다면 어떻게 될까요? 서버가 하나뿐이라면 과부하로 다운될 것입니다.
반대로, 평소에 대비해 서버를 10대씩 켜두면 트래픽이 없는 새벽에도 비용이 낭비됩니다.
AWS의 Auto Scaling과 로드 밸런서는 이 두 가지 문제를 자동으로 해결합니다.
---
도로 교통으로 생각해보세요
명절 연휴 고속도로를 상상해보세요. 차가 많으면 차선이 더 필요하고, 차가 없으면 차선이 필요 없습니다.
Auto Scaling = 교통량에 따라 자동으로 차선이 열리고 닫히는 스마트 도로. 차가 많으면 차선 추가, 차가 없으면 차선 축소. Elastic Load Balancing = 여러 차선에 차량을 고르게 배분하는 교통 경찰.
이 둘을 함께 사용하면, 많은 사용자가 몰려도 서비스가 끊기지 않고, 사용자가 없을 때는 비용을 절약할 수 있습니다.
---
Auto Scaling — 서버를 자동으로 늘리고 줄이기
Amazon EC2 Auto Scaling은 트래픽 변화에 따라 EC2 인스턴스의 수를 자동으로 조절합니다.
어떻게 동작하나요? 예를 들어 CPU 사용률이 70%를 넘으면 서버를 1대 더 추가하고, 20% 미만이면 서버를 1대 줄이도록 설정할 수 있습니다.
세 가지 숫자를 설정합니다.
최솟값(Minimum)은 항상 켜져 있어야 하는 최소 서버 수입니다. 트래픽이 아무리 없어도 이 숫자 이하로 내려가지 않습니다.
최댓값(Maximum)은 최대로 늘어날 수 있는 서버 수입니다. 비용이 너무 많이 나가지 않도록 상한선을 정합니다.
희망값(Desired)은 평소에 유지하려는 서버 수입니다. 특별한 이벤트가 없을 때의 기본 상태입니다.
Auto Scaling의 핵심 장점은 두 가지입니다. 고가용성: 서버가 고장나도 자동으로 새 서버를 추가합니다. 비용 최적화: 필요한 만큼만 서버를 켜두므로 낭비가 없습니다.
---
Elastic Load Balancing — 트래픽을 고르게 분배하기
로드 밸런서는 들어오는 사용자 요청을 여러 서버에 골고루 나눠주는 서비스입니다.
왜 필요한가요? 서버가 3대 있더라도 로드 밸런서가 없으면 모든 트래픽이 한 서버로 몰릴 수 있습니다. 로드 밸런서는 각 서버의 상태를 확인하고, 건강한 서버에만 트래픽을 보냅니다. 한 서버가 다운되면 자동으로 다른 서버로 우회합니다.
AWS에는 세 종류의 로드 밸런서가 있습니다.
ALB(Application Load Balancer)는 웹 애플리케이션에 가장 많이 쓰입니다. HTTP와 HTTPS 트래픽을 처리합니다. URL 경로에 따라 다른 서버로 보내는 것도 가능합니다.
NLB(Network Load Balancer)는 극도로 빠른 속도가 필요할 때 씁니다. TCP와 UDP 트래픽을 처리하며, 초당 수백만 건의 요청도 처리할 수 있습니다. 게임 서버나 실시간 스트리밍에 적합합니다.
GLB(Gateway Load Balancer)는 트래픽을 보안 장비(방화벽, 침입 탐지 시스템 등) 를 통해 먼저 검사하고 싶을 때 씁니다.
---
EC2 인스턴스 유형 패밀리
EC2를 사용할 때 어떤 사양의 서버를 고를지도 중요합니다. AWS는 용도별로 여러 인스턴스 패밀리를 제공합니다.
| 패밀리 | 특징 | 언제 씁니까? | |--------|------|------------| | 범용(General Purpose) | CPU와 메모리가 균형 잡힘 | 웹 서버, 개발 환경, 중간 규모 데이터베이스 | | 컴퓨팅 최적화(Compute Optimized) | CPU 성능이 특히 뛰어남 | 과학 시뮬레이션, 게임 서버, 영상 인코딩 | | 메모리 최적화(Memory Optimized) | 메모리(RAM)가 특히 많음 | 대용량 인메모리 데이터베이스, 실시간 빅데이터 분석 | | 스토리지 최적화(Storage Optimized) | 디스크 읽기/쓰기 속도가 빠름 | 데이터 웨어하우스, 분산 파일 시스템 | | 가속 컴퓨팅(Accelerated Computing) | GPU(그래픽 처리 장치) 탑재 | 머신러닝 학습, 그래픽 렌더링 |
---
Dedicated Hosts와 Dedicated Instances의 차이
대부분의 AWS 고객은 다른 고객과 같은 물리 서버의 공간을 나눠 씁니다. 하지만 법적, 보안적, 라이선스 이유로 서버를 독점해야 하는 경우도 있습니다.
Dedicated Instances는 다른 고객의 인스턴스가 같은 물리 서버에서 실행되지 않습니다. 단, 같은 AWS 계정 안의 다른 인스턴스와는 물리 서버를 공유할 수 있습니다.
Dedicated Hosts는 물리 서버 전체를 독점합니다. 서버에 몇 개의 소켓과 코어가 있는지까지 확인하고 관리할 수 있습니다. 주로 기존 소프트웨어 라이선스를 그대로 활용해야 할 때(BYOL, Bring Your Own License) 씁니다.
---
시험 핵심 정리
"트래픽에 따라 서버 수를 자동으로 조절" → Amazon EC2 Auto Scaling "여러 서버에 트래픽을 고르게 분배" → Elastic Load Balancing (ELB) "HTTP/HTTPS 웹 트래픽용 로드 밸런서" → ALB (Application Load Balancer) "극저지연 TCP/UDP 로드 밸런서" → NLB (Network Load Balancer) "CPU 집약 작업에 적합" → 컴퓨팅 최적화 인스턴스 "대용량 메모리가 필요한 작업" → 메모리 최적화 인스턴스 "기존 소프트웨어 라이선스(BYOL) 활용" → Dedicated Hosts Auto Scaling + ELB 조합 = 고가용성과 비용 최적화를 동시에 달성하는 핵심 패턴