📈 Scalability
Scalability 애플리케이션이나 시스템이 부하 증가에 적응하여 더 많은 요청을 처리할 수 있는 능력
- 시스템이 커지는 것 ≠ 단순 성능 증가
- 부하에 “적응”할 수 있어야 함
Scalability의 두 가지 방식
- Vertical Scalability
- Horizontal Scalability (Elasticity)
Scalability ≠ High Availability → 서로 연관은 있지만 개념적으로 다름
⬆️ Vertical Scalability (Scale Up / Down)
인스턴스 자체의 크기를 키우는 방식
개념
- 기존 인스턴스의 사양을 상향
- 예시
t2.micro→t2.large
특징
- 비분산 시스템에서 일반적
- 데이터베이스에서 자주 사용
- RDS
- ElastiCache
- 물리적 한계 존재
- 하드웨어 최대 스펙 제한
- junior operator → senior operator (한 명의 역량을 키움)
➡️ Horizontal Scalability (Scale Out / In)
인스턴스 개수를 늘리는 방식
개념
- 동일한 시스템을 여러 대로 분산
- 분산 시스템 구조 필수
특징
- 웹 애플리케이션 / 모던 애플리케이션에서 일반적
- 클라우드 환경에서 매우 쉬움
- Amazon EC2 기반
- operator 여러 명 투입 (사람 수를 늘려 처리량 증가)
🟦 High Availability (고가용성)
장애가 발생해도 서비스가 계속 동작하도록 하는 구조
정의
- 애플리케이션을 최소 2개 이상의 데이터 센터에서 실행
- AWS에서는:
- Availability Zone(AZ) 단위
목적
- 단일 데이터 센터 장애를 견딜 수 있음
HA 구현 방식
- Passive
- 예: RDS Multi-AZ
- Active
- 예: Horizontal Scaling (다중 인스턴스)
🧠 EC2에서의 Scalability & HA
EC2 기준 확장 방식
- Vertical Scaling
- 인스턴스 타입 변경
t2.nano → u-12tb1.metal
- Horizontal Scaling
- 인스턴스 개수 증가
- Auto Scaling Group
- High Availability
- Multi-AZ 배치
- ASG + Load Balancer (Multi-AZ)
⚖️ Load Balancing 개념
Load Balancer
들어오는 트래픽을 여러 서버(EC2)로 분산하는 서버
User
↓
Load Balancer
↓ ↓ ↓
EC2 EC2 EC2
🎯 왜 Load Balancer를 사용하는가?
- 트래픽을 여러 인스턴스에 분산
- 애플리케이션의 단일 진입점(DNS) 제공
- 인스턴스 장애를 자동 감지 & 우회
- Health Check 수행
- SSL 종료 (HTTPS)
- 세션 유지 (Sticky Session)
- AZ 간 고가용성
- Public / Private 트래픽 분리
☁️ Elastic Load Balancer (ELB)
AWS에서 제공하는 완전관리형 Load Balancer
특징
-
AWS가:
-
가용성
-
패치
-
업그레이드
-
장애 대응
전부 관리
-
-
설정 옵션은 제한적 (단순화)
-
AWS 서비스와 깊은 통합
- EC2
- Auto Scaling Group
- ECS
- ACM
- CloudWatch
- Route 53
- WAF
- Global Accelerator
❤️ Health Checks
Load Balancer가 인스턴스 상태를 판단하는 기준
동작 방식
- 특정:
- 프로토콜 (HTTP)
- 포트
- 경로 (
/health)
- 응답 코드:
- 200 OK → 정상
- 그 외 → 비정상
LB → EC2
HTTP :4567 /health
🧰 AWS Load Balancer 종류 (4가지)
1️⃣ Classic Load Balancer (CLB – v1)
- 2009
- 프로토콜
- HTTP / HTTPS
- TCP / SSL
- 고정 DNS
- 구형, 신규 사용 ❌
2️⃣ Application Load Balancer (ALB – v2)
Layer 7 (HTTP 기반)
- HTTP / HTTPS / WebSocket
- Target Group 기반
- URL Path / Hostname / Query / Header 기반 라우팅
- HTTP → HTTPS Redirect 지원
- 마이크로서비스, 컨테이너에 최적
- ECS 동적 포트 매핑 지원
ALB Target Group 대상
- EC2 (ASG 관리 가능)
- ECS Task
- Lambda (HTTP → JSON 이벤트 변환)
- Private IP 주소
- Target Group 단위 Health Check
ALB 핵심 동작 구조
User
↓
ALB
├─/users → TargetGroup A
└─/search → TargetGroup B
ALB – 알아두기
- 고정 DNS:
xxx.region.elb.amazonaws.com - EC2는 클라이언트 실제 IP를 직접 보지 못함
- 헤더로 전달
X-Forwarded-ForX-Forwarded-PortX-Forwarded-Proto
3️⃣ Network Load Balancer (NLB – v2)
Layer 4 (TCP/UDP)
- 초고성능
- 수백만 요청 처리
- 초저지연
- AZ당 고정 IP
- Elastic IP 연결 가능 (화이트리스트 유리)
- Free Tier ❌
Target Group
- EC2
- Private IP
- ALB
4️⃣ Gateway Load Balancer (GWLB)
네트워크 보안 장비용 Load Balancer
사용 목적
- 3rd party 네트워크 장비 운영
- Firewall
- IDS / IPS
- Deep Packet Inspection
특징
- Layer 3 (IP Packet)
- GENEVE 프로토콜 (6081)
- 기능 결합
- Gateway + Load Balancer
🍪 Sticky Sessions (Session Affinity)
동일 클라이언트를 항상 같은 인스턴스로 전달
- 지원
- CLB
- ALB
- NLB
- 쿠키 기반
- 세션 유지 목적
- 단점
- 부하 불균형 발생 가능
쿠키 유형
- Application-based Cookie
- Target / Load Balancer 생성
- Duration-based Cookie
- AWS 생성
- ALB:
AWSALB - CLB:
AWSELB
🔁 Cross-Zone Load Balancing
AZ 간 트래픽을 균등 분산
동작 차이
- ❌ 미사용
- 각 AZ 내에서만 분산
- ✅ 사용
- 전체 AZ 인스턴스에 균등 분산
기본 설정
- ALB
- 기본 활성화
- AZ 간 트래픽 비용 ❌
- NLB / GWLB
- 기본 비활성화
- 활성 시 AZ 간 트래픽 비용 발생
- CLB
- 기본 비활성화
- 활성 시 비용 ❌
🔐 SSL / TLS 기본 개념
- 전송 중 암호화 (In-flight)
- SSL = 구버전 용어
- TLS = 현재 표준
- 인증서 발급:
- CA (Digicert, LetsEncrypt 등)
- 인증서는 만료 & 갱신 필요
🔒 Load Balancer SSL 인증서
- X.509 인증서 사용
- 관리 방법
- ACM
- 직접 업로드
- HTTPS Listener:
- 기본 인증서 필수
- 다중 인증서 가능 (SNI)
🌐 SNI (Server Name Indication)
하나의 Load Balancer에 여러 SSL 인증서 적용
- 클라이언트가 Hostname 전달
- ALB / NLB / CloudFront 지원
- CLB ❌
⏳ Connection Draining / Deregistration Delay
인스턴스 제거 시 기존 요청 처리 시간 보장
- CLB: Connection Draining
- ALB / NLB: Deregistration Delay
- 설정 범위
- 1 ~ 3600초 (기본 300초)
- 0으로 설정 시 비활성화
📦 Auto Scaling Group (ASG)
부하에 따라 EC2를 자동으로 증감
ASG 목표
- Scale Out / Scale In
- Min / Desired / Max 개수 유지
- 인스턴스 장애 시 자동 복구
- Load Balancer와 자동 연동
- ASG 자체 비용 ❌ (EC2만 과금)
🧩 ASG 구성 요소
- Launch Template
- AMI
- Instance Type
- User Data
- EBS
- Security Group
- IAM Role
- VPC / Subnet
- Load Balancer
- Scaling Policy
📊 ASG Scaling 방식
CloudWatch 기반
- CPUUtilization
- RequestCountPerTarget
- Network In / Out
- Custom Metric
📐 Scaling Policies 종류
Dynamic Scaling
- Target Tracking
- 예: CPU 40% 유지
- Step / Simple Scaling
- 조건별 증감
Scheduled Scaling
- 시간 기반 예측
- 예: 금요일 17시 Min=10
Predictive Scaling
- 과거 트래픽 분석
- 미리 스케일링 예약
⏱️ Scaling Cooldown
스케일링 후 안정화 시간
- 기본: 300초
- Cooldown 중 추가 스케일링 ❌
- 권장:
- 미리 구성된 AMI 사용
- 부팅 시간 단축