클라우드 환경에서 ‘확장성(Scalability)’과 ‘고가용성(High Availability)’은 가장 기본이자 중요한 개념이다. 특히 AWS에서는 이 둘을 손쉽게 구성할 수 있는 다양한 기능들을 제공하고 있어서, 구조를 잘 잡아두면 장애 상황에서도 탄탄한 서비스를 유지할 수 있다.
스케일링은 시스템이 늘어나는 부하를 어떻게 감당하느냐에 대한 이야기다. 크게 두 가지로 나뉜다.
말 그대로 인스턴스의 성능을 ‘업그레이드’하는 방식
ex) t2.micro → t2.large
간단하지만, 하드웨어 사양에 물리적인 한계가 있다
주로 RDS, ElastiCache 같은 DB에 사용
인스턴스 개수를 늘리는 방식
Auto Scaling Group + Load Balancer 조합으로 구현
무중단으로 탄력적인 확장이 가능하고, 클라우드 환경에서 표준처럼 사용됨
ex) 웹 애플리케이션, 마이크로서비스 구조
‘고장 나도 살아있는 시스템’을 만드는 개념. 특정 장애에도 서비스가 계속 유지되도록 구성하는 것이 핵심이다.
대기 인스턴스를 둬서 장애 발생 시 전환
ex) RDS Multi-AZ (평상시엔 하나만 사용, 장애 나면 자동 전환)
여러 인스턴스가 동시에 서비스 제공
인스턴스 중 하나가 죽어도 나머지가 커버
Auto Scaling Group + Multi-AZ 로 구성

로드밸런서는 여러 서버에 트래픽을 분산시켜주는 역할을 한다. 사용자에게는 하나의 엔드포인트만 보이고, 내부적으로는 다수의 서버로 분산되는 구조다.

트래픽 분산으로 성능 안정화
서버 장애 시에도 트래픽 자동 우회
단일 진입점 제공
정기적인 헬스 체크 수행
SSL 종료 및 세션 유지 지원
AZ 간 트래픽 분산 가능

동일 사용자가 항상 동일한 인스턴스로 연결되도록 유지하는 기능
ALB, CLB, NLB에서 지원
로드밸런서에서 쿠키를 생성하여 세션 유지를 보장
단점: 부하 불균형 발생 가능
각 AZ에 있는 인스턴스들을 균등하게 분산할지 설정하는 기능
ALB: 기본 활성화, 비용 없음
NLB/GLB: 기본 비활성화, AZ 간 데이터 전송 시 비용 발생
HTTPS 트래픽을 암호화하여 보안 유지
ACM에서 손쉽게 SSL 인증서 관리 가능
ALB/NLB에서는 SNI(Server Name Indication)를 통해 여러 인증서 동시 지원
로드밸런서에서 인스턴스를 제거할 때, 현재 진행 중인 요청은 끝까지 처리하도록 대기
ex) 결제 중인 사용자가 있을 때, 완료 후 인스턴스 제거
기본값 300초 (설정 가능)
AWS에서는 확장성과 고가용성을 아주 쉽게 구성할 수 있는 도구들이 준비되어 있다. Auto Scaling, Multi-AZ, Load Balancer, Health Check, Sticky Session, SSL 등 다양한 요소들을 적절히 조합하면 안정적인 서비스를 운영할 수 있다.