본문으로 건너뛰기

Day 5: CDN, 로드 밸런싱, 고가용성

  • CDN(Content Delivery Network)
    • 콘텐츠 배포 원리
    • 엣지 서버(Edge Server), 캐싱(Cache) 메커니즘
  • 로드 밸런서(Load Balancer)
    • L4/L7 로드 밸런싱 차이점
    • 라운드 로빈, 가중치 기반 분산, 해시 기반 분산
  • 고가용성(High Availability) 구성
    • 이중화(Active-Standby, Active-Active)
    • 장애 감지와 Failover 처리

1. CDN(Content Delivery Network)

CDN은 지리적으로 분산된 서버 네트워크를 통해 사용자와 가장 가까운 서버(엣지 서버)에서 콘텐츠를 제공함으로써, **지연(latency)**을 줄이고 전송 속도를 높이는 기술이다.

1.1 콘텐츠 배포 원리

  1. 사용자가 웹 페이지나 미디어 파일을 요청한다.
  2. CDN은 사용자의 위치를 판단하여, 가까운 엣지 서버로 트래픽을 유도한다(주로 DNS 라우팅, Anycast, 지리적 IP 매핑 활용).
  3. 엣지 서버에서 캐싱된 콘텐츠를 제공한다. 만약 캐시가 없다면, 원본 서버(Origin)에서 콘텐츠를 가져와 캐시에 저장 후 사용자에게 전달한다.
  4. 이후 동일 또는 유사 위치의 사용자는 엣지 서버에 이미 캐싱된 콘텐츠를 빠르게 받는다.

1.2 엣지 서버(Edge Server), 캐싱(Cache) 메커니즘

  • 엣지 서버:

    • 사용자와 물리적 거리를 최소화하는 CDN 서버.
    • 세계 각 지역에 분산되어 있어 트래픽을 효율적으로 분산 처리하고, 전송 지연을 줄여준다.
  • 캐싱(Cache):

    • 자주 요청되는 콘텐츠(이미지, 동영상, 정적 파일)를 엣지 서버 디스크/메모리에 임시 저장한다.
    • **캐시 적중률(Cache Hit Rate)**이 높을수록 원본 서버 부하가 줄고, 응답 속도도 빨라진다.
    • **TTL(Time To Live)**이나 캐시 무효화 정책 등을 통해 최신 콘텐츠를 적절히 유지한다.

2. 로드 밸런서(Load Balancer)

로드 밸런서는 여러 서버(또는 서비스)들에 걸쳐 트래픽을 효율적으로 분산하여, 자원 활용률을 높이고 응답 지연을 줄이는 장치/기술이다.

2.1 L4 vs L7 로드 밸런싱

  1. L4 로드 밸런싱

    • OSI 4계층(전송 계층; TCP/UDP) 정보를 기반으로 트래픽을 분산한다.
    • IP 주소, 포트번호, 프로토콜(TCP/UDP) 등의 정보만 확인.
    • 빠르고 단순하며, 세션 기반으로 연결을 재분배할 수 있지만, 애플리케이션 계층 정보를 활용하기 어렵다.
  2. L7 로드 밸런싱

    • OSI 7계층(애플리케이션 계층) 정보를 기반으로 트래픽을 분산한다.
    • HTTP 헤더, 쿠키, URI 패턴 등 콘텐츠 레벨 정보를 확인해 세분화된 로드 밸런싱 가능.
    • 예) 특정 URL 패턴은 서버 A, 로그인 요청은 서버 B로 보내는 식
    • 상대적으로 L4보다 처리 부담이 크다.

2.2 로드 밸런싱 알고리즘

  1. 라운드 로빈(Round Robin)

    • 순차적으로 서버에 요청을 분배.
    • 구성·구현이 간단하며, 서버들이 성능이 유사한 경우에 유리.
  2. 가중치(Weighted) 기반 분산

    • 각 서버의 성능이나 부하 상황에 따라 가중치(Weight)를 부여해, 높은 가중치 서버에 더 많은 요청을 분배.
    • 서버 자원이 균등하지 않을 때 적합.
  3. 해시(Hash) 기반 분산

    • 클라이언트 IP, 세션 ID, URI 등의 값을 해시하여 특정 서버에 매핑.
    • 같은 클라이언트나 세션 요청이 항상 동일 서버로 전달되어 세션 스티키(Sticky) 효과 구현이 가능.

3. 고가용성(High Availability) 구성

고가용성이란 서비스가 장애 없이 안정적으로 운영되도록 하는 설계 기법을 말한다. 서버, 네트워크 장비, 스토리지 등에서 중단 시간을 최소화하기 위해 여러 대의 장비를 이중화하고, 장애에 대비한 Failover 방식을 갖춘다.

3.1 이중화(Active-Standby, Active-Active)

  1. Active-Standby

    • 하나의 노드(Active)가 정상 운영 중일 때, 나머지 노드(Standby)는 대기 상태.
    • Active 노드에 장애가 발생하면 Standby 노드가 즉시 인계(Failover) 받아 서비스를 유지.
    • 구성/관리 단순, 자원 활용률이 낮은 편(Standby는 대기).
  2. Active-Active

    • 여러 노드가 동시에 운영(Active) 상태.
    • 특정 노드 장애 시 나머지 노드들이 업무를 분담한다.
    • 자원 활용률이 높지만, 충돌 없이 동기화(세션, DB, 캐시 등)가 잘 이뤄져야 함.

3.2 장애 감지와 Failover 처리

  1. 장애 감지

    • 모니터링 에이전트, 헬스 체크(Heartbeats), Ping/Probe 등을 통해 서버/서비스 상태를 실시간 확인.
    • 특정 임계점(Timeout, 에러율 등) 이상이면 장애로 판정.
  2. Failover

    • 장애 노드의 트래픽을 정상 노드(Standby 또는 다른 Active)로 자동 전환한다.
    • DNS, 로드 밸런서 설정, 라우팅 변경 등을 통해 사용자 요청을 재할당.
    • Failover 후에도 빠른 장애 복구(Repair/Re-sync) 과정을 통해 정상 노드를 복원.

요약

  1. CDN
    • 엣지 서버와 캐싱을 통해 사용자 가까운 곳에서 콘텐츠를 서비스, 지연 최소화 및 서버 부하 분산.
  2. 로드 밸런싱
    • 트래픽을 여러 서버에 효율적으로 배분해 성능과 안정성을 향상.
    • L4 vs L7, 라운드 로빈, 가중치, 해시 기반 등 상황에 맞춰 알고리즘 선택.
  3. 고가용성(HA)
    • Active-Standby, Active-Active로 이중화 구성.
    • 장애 감지와 Failover 메커니즘을 구축해 서비스 중단 최소화.