📈 Scalability

Scalability 애플리케이션이나 시스템이 부하 증가에 적응하여 더 많은 요청을 처리할 수 있는 능력

  • 시스템이 커지는 것 ≠ 단순 성능 증가
  • 부하에 “적응”할 수 있어야 함

Scalability의 두 가지 방식

  • Vertical Scalability
  • Horizontal Scalability (Elasticity)

Scalability ≠ High Availability → 서로 연관은 있지만 개념적으로 다름


⬆️ Vertical Scalability (Scale Up / Down)

인스턴스 자체의 크기를 키우는 방식

개념

  • 기존 인스턴스의 사양을 상향
  • 예시
    • t2.microt2.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-For
    • X-Forwarded-Port
    • X-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 사용
    • 부팅 시간 단축