Infra

클라우드 인프라에서 HA(High Availability)를 보장하는 방법 고민

HWBB 2025. 6. 24. 18:15

🔥 클라우드 인프라에서 HA(High Availability)를 보장하는 진짜 방법

Active-Active, DR, AZ, Docker, 그리고 진짜 고가용성의 본질까지 한방에 정리


📌 목차

  1. Active-Active, DR, AZ, Cloud란?
  2. Standby 전략: Hot / Warm / Cold
  3. 애플리케이션 장애에서의 HA 보장 방법
  4. Docker만으로는 HA가 안 되는 이유
  5. 왜 인스턴스를 2개 이상 둬야 하는가?
  6. 마무리: 진짜 HA 구성은 이렇게 한다

1. ✅ Active-Active, DR, AZ, Cloud의 관계

🔹 Active-Active

  • 두 시스템이 동시에 서비스 처리 (부하 분산 + 장애 허용)
  • 성능과 가용성을 동시에 잡는 구조
  • 단, 데이터 동기화/복잡도 ↑

🔹 DR (Disaster Recovery)

  • 장애 시 백업 시스템으로 서비스 전환
  • Active-Passive 구조 (Hot/Warm/Cold Standby)
  • RTO(복구 시간), RPO(데이터 손실 허용 시간)가 핵심 지표

🔹 AZ (Availability Zone)

  • 물리적으로 분리된 데이터센터 그룹 (한 리전에 2~3개 존재)
  • 빠른 네트워크 + 장애 격리 → Active-Active or DR 구성에 유리

🔹 Cloud

  • 위 모든 걸 유연하게 구성할 수 있는 기반 인프라
  • 인프라 자동화, 리전/AZ 분산, 스토리지 복제 등 지원

2. 🔁 DR 전략: Hot / Warm / Cold Standby

항목 Hot Warm Cold
가용성 높음 중간 낮음
전환 속도 (RTO) 수초~분 수분 수십분~수시간
데이터 손실 (RPO) 거의 없음 몇 분 수십 분~수시간
비용 💸💸💸 💸💸 💸
운영 방식 항상 실행 일부 실행 꺼져 있음

✅ 진짜 장애 대응은 돈으로 사는 거다.
SLA 빡세면 무조건 Hot, 예산 없으면 Cold.


3. 🚨 애플리케이션 장애 시 HA를 보장하는 방법

  • 컨테이너 수평 확장 (Multi Instance)
  • 로드밸런서 + 헬스체크
  • 컨테이너 상태 모니터링 + 자동 재시작
  • Kubernetes liveness/readiness probe
  • 서킷 브레이커, Retry, Timeout 설정
  • 로그 수집 + 실시간 알림

죽더라도 유저는 몰라야 한다. 그게 진짜 고가용성이다.


4. 🐳 Docker만으로는 HA가 안 되는 이유

Docker는 컨테이너를 "싸는 도구"일 뿐,
죽었을 때 살아나고, 트래픽을 분산하고, 자동 복구하는 건 Docker 밖에서 해야 한다.

왜?

  • Docker는 앱이 죽으면 그냥 죽음 (재시작 설정 필요)
  • 하나의 인스턴스에 띄우면 SPOF 발생
  • 트래픽 분산도 없음 (LB 필요)
  • 데이터는 stateless하지 않으면 복구 불가

5. 🤔 인스턴스를 두 개 이상 두는 이유

"AZ에 배포했으니까 괜찮다"는 착각

❌ AZ는 하드웨어 수준의 고가용성
❌ 인스턴스 장애, OS 크래시, 앱 죽음은 AZ가 멀쩡해도 발생

진짜 이유는?

  • 하나 죽으면 나머지로 트래픽 우회
  • ALB 같은 로드밸런서 구성 필요
  • 클러스터링, 헬스체크, 자동 스케일링 구성 필요

6. 🏗️ 최소 HA 구성도 (AWS 예시)

+----------------------------+
|      AWS ALB              |
|  (Health Check + Routing) |
+----------------------------+
        |           |
        v           v
+----------------+ +----------------+
| EC2 #1 (AZ-A)  | | EC2 #2 (AZ-B)  |
| Docker App     | | Docker App     |
+----------------+ +----------------+
        |           |
       RDS Multi-AZ (DB)
        |
     S3, Redis (External State)