EKS 복원력과 고가용성

지원 버전: EKS 1.28+, Istio 1.20+, Karpenter 1.0+ 마지막 업데이트: 2026년 2월 23일

Amazon EKS 클러스터의 복원력(Resilience)은 장애 발생 시 서비스 영향을 최소화하고 신속하게 복구하는 능력을 의미합니다. 이 문서에서는 EKS 환경에서 고가용성과 복원력을 구현하기 위한 전략, 아키텍처 패턴 및 모범 사례를 제공합니다.

목차


복원력 개요와 성숙도 모델

복원력의 정의

복원력(Resilience)은 두 가지 핵심 요소로 구성됩니다:

1. 장애 영향 최소화 (Failure Impact Minimization)

  • 장애 발생 시 영향 범위(Blast Radius)를 제한

  • 전체 시스템이 아닌 일부 구성 요소만 영향을 받도록 설계

  • 격리(Isolation)와 중복성(Redundancy)을 통한 장애 격리

2. 복구 능력 (Recovery Ability)

  • 장애 감지 후 자동 복구까지의 시간(RTO) 최소화

  • 데이터 손실 없는 복구(RPO) 보장

  • 자가 치유(Self-healing) 메커니즘 구현

4단계 성숙도 모델

Level
이름
장애 범위
복구 시간
핵심 기술

Level 1

기본 (Pod-level)

단일 Pod

초 단위

Probes, Resource Limits, PDB

Level 2

Multi-AZ

가용 영역

분 단위

Topology Spread, ARC Zonal Shift

Level 3

Cell-Based

셀 단위

분 단위

Shuffle Sharding, Cell Isolation

Level 4

Multi-Region

리전 단위

분~시간

Active-Active, Active-Passive

모든 서비스가 Level 4를 필요로 하지는 않습니다. SLA 요구사항, 규정 준수 요건, 예산에 따라 적절한 수준을 선택하세요.

Level 1: 기본 복원력 (Pod-level)

가장 기본적인 복원력 수준으로, 단일 Pod 장애에 대응합니다.

Liveness/Readiness/Startup Probes

Resource Limits 설정

기본 PodDisruptionBudget


Multi-AZ 전략 (Level 2)

Multi-AZ 전략은 가용 영역(AZ) 장애에 대비하여 워크로드를 여러 AZ에 분산 배치합니다.

Pod Topology Spread Constraints

Pod를 여러 AZ에 균등하게 분산 배치하는 핵심 메커니즘입니다.

Hard Constraint (강제 분산)

조건을 만족하지 못하면 Pod가 스케줄링되지 않습니다.

Soft Constraint (선호 분산)

조건을 만족하지 못해도 Pod가 스케줄링됩니다.

Hard와 Soft 결합

파라미터
설명

maxSkew

토폴로지 도메인 간 Pod 수 최대 차이

topologyKey

분산 기준 노드 레이블 (zone, hostname 등)

whenUnsatisfiable

DoNotSchedule (Hard) 또는 ScheduleAnyway (Soft)

minDomains

최소 도메인 수 (3 AZ 사용 시 3 권장)

Karpenter Multi-AZ Node Provisioning

Karpenter를 사용하여 여러 AZ에 노드를 자동으로 프로비저닝합니다.

NodePool 설정

Spot과 On-Demand 혼합 전략

ARC Zonal Shift

AWS Application Recovery Controller (ARC)의 Zonal Shift는 특정 AZ 장애 시 트래픽을 자동으로 다른 AZ로 전환합니다.

Zonal Autoshift 구성

수동 Zonal Shift 실행

스토리지 고려사항

WaitForFirstConsumer StorageClass

EBS 볼륨이 특정 AZ에 고정되는 것을 방지합니다.

EFS for Cross-AZ Access

여러 AZ에서 동시 접근이 필요한 경우 EFS를 사용합니다.

Istio Locality-Aware Routing

동일 AZ 내 트래픽을 우선 라우팅하여 Cross-AZ 전송 비용을 절감합니다.

비용 절감 효과:

  • Locality-aware routing으로 80%+ 트래픽을 동일 AZ 내에서 처리

  • Cross-AZ 전송 비용 60-80% 절감 가능

  • 네트워크 지연 시간 감소 (동일 AZ 내 <1ms)


Cell-Based Architecture (Level 3)

Cell-Based Architecture는 시스템을 독립적인 셀로 분리하여 장애 영향 범위를 제한합니다.

Cell의 정의

셀(Cell)은 다음 요소를 포함하는 자체 완결형 서비스 단위입니다:

  • 애플리케이션 인스턴스: 독립적으로 운영되는 서비스 Pod

  • 데이터 저장소: 셀 전용 데이터베이스 또는 파티션

  • 캐시: 셀 전용 Redis/ElastiCache 인스턴스

  • 메시지 큐: 셀 전용 SQS 큐 또는 Kafka 토픽

Cell 파티셔닝 전략

전략
설명
장점
단점

고객 기반

고객 ID 범위별 분리

데이터 지역성 우수

고객 규모 불균형 가능

지역 기반

지리적 위치별 분리

규정 준수 용이

글로벌 고객 처리 복잡

용량 기반

부하 수준별 분리

리소스 효율성

동적 재할당 필요

티어 기반

서비스 티어별 분리

SLA 차별화 용이

관리 복잡성 증가

Namespace 기반 Cell 구현

Cluster 기반 Cell 구현

더 강력한 격리가 필요한 경우 클러스터 단위로 셀을 분리합니다.

Shuffle Sharding

Shuffle Sharding은 각 고객을 여러 셀 중 일부에만 할당하여 장애 영향을 제한합니다.

Shuffle Sharding의 장점 (8개 셀에서 2개 선택):

  • 가능한 조합 수: C(8,2) = 28개

  • 단일 셀 장애 시 영향: 최대 25% 고객 (2/8)

  • 두 개의 다른 고객이 완전히 동일한 셀 조합을 가질 확률: 1/28 (약 3.6%)


Multi-Cluster/Multi-Region (Level 4)

Multi-Region 아키텍처는 리전 전체 장애에 대비하여 최고 수준의 복원력을 제공합니다.

아키텍처 패턴 비교

패턴
RTO
RPO
비용
복잡성
사용 사례

Active-Active

~0 (Zero)

~0 (Zero)

높음 (2x+)

높음

미션 크리티컬

Active-Passive

분 단위

분 단위

중간 (1.5x)

중간

비즈니스 크리티컬

Regional Isolation

해당 없음

해당 없음

중간

중간

데이터 규정 준수

Hub-Spoke

분 단위

분 단위

낮음

낮음

중앙 집중 관리

Global Accelerator 구성

ArgoCD ApplicationSet for Multi-Cluster Deployment

Cluster Generator

Git Directory Generator

Matrix Generator (클러스터 x 환경)

Istio Multi-Primary Federation

여러 클러스터 간 서비스 검색과 트래픽 관리를 위한 Istio Multi-Primary 설정입니다.


애플리케이션 복원력 패턴

PodDisruptionBudgets

PDB는 자발적 중단(voluntary disruption) 시 최소 가용 Pod 수를 보장합니다.

minAvailable 방식

maxUnavailable 방식

비율 기반 PDB

Graceful Shutdown

Pod 종료 시 진행 중인 요청을 완료하고 안전하게 종료하는 패턴입니다.

Graceful Shutdown 흐름:

  1. kubectl delete pod 또는 노드 drain 발생

  2. Pod가 Terminating 상태로 전환

  3. preStop 훅 실행 (5초 대기)

  4. Service Endpoint에서 Pod 제거 (새 트래픽 차단)

  5. SIGTERM 시그널 전송

  6. 애플리케이션이 진행 중인 요청 완료

  7. terminationGracePeriodSeconds 내에 종료되지 않으면 SIGKILL

Circuit Breaker via Istio

Istio DestinationRule을 사용한 Circuit Breaker 패턴입니다.

Retry/Timeout 정책

재시도 조건 설명:

  • 5xx: 서버 오류 응답

  • reset: 연결 리셋

  • connect-failure: 연결 실패

  • retriable-4xx: 재시도 가능한 4xx 오류 (408, 409 등)


카오스 엔지니어링

카오스 엔지니어링은 프로덕션 환경에서 장애에 대한 시스템의 복원력을 검증합니다.

AWS Fault Injection Service (FIS)

Pod 삭제 실험

AZ 장애 시뮬레이션

네트워크 지연 실험

Litmus Chaos (CNCF Incubating)

Litmus 설치

Pod 삭제 ChaosExperiment

Node Termination Experiment

DNS Chaos Experiment

Chaos Mesh

Chaos Mesh 설치

Network Partition

I/O Chaos

Time Manipulation

Game Day Framework

Game Day는 체계적인 카오스 엔지니어링 실습입니다.

5단계 프레임워크:

단계
활동
산출물

1. 정상 상태 기록

메트릭 베이스라인 수집

대시보드 스냅샷

2. 장애 주입

FIS/Litmus/Chaos Mesh 실험 실행

실험 로그

3. 복구 관찰

자동 복구 과정 모니터링

복구 시간 측정

4. 영향 분석

에러율, 지연시간 변화 분석

영향 보고서

5. 사후 리뷰

개선 항목 도출, Action Item

개선 계획


구현 체크리스트

Level 1: 기본 복원력 체크리스트

Level 2: Multi-AZ 체크리스트

Level 3: Cell-Based 체크리스트

Level 4: Multi-Region 체크리스트

비용 고려사항

항목
비용 영향
절감 전략

Multi-Region

2x+ 증가

Active-Passive로 대기 리전 비용 절감

Spot Instances

60-90% 절감

상태 없는 워크로드에 Spot 사용

Locality Routing

60-80% 절감

Cross-AZ 트래픽 최소화

Cell Architecture

10-20% 증가

장애 영향 감소로 운영 비용 절감

Chaos Engineering

월 $100-500

FIS 사용량 기반 과금


다음 단계

이 문서에서는 EKS 클러스터의 고가용성과 복원력 아키텍처에 대해 다루었습니다. 복원력 전략을 구현한 후에는 문제 발생 시 효과적인 디버깅이 중요합니다.

관련 문서

추가 학습 리소스

핵심 요약

  1. Level 1 (기본): Probes, Resource Limits, PDB로 Pod 수준 복원력 확보

  2. Level 2 (Multi-AZ): Topology Spread, ARC Zonal Shift로 AZ 장애 대응

  3. Level 3 (Cell-Based): Shuffle Sharding으로 장애 영향 범위 제한

  4. Level 4 (Multi-Region): Active-Active/Passive로 리전 장애 대응

  5. 카오스 엔지니어링: FIS, Litmus, Chaos Mesh로 복원력 검증

복원력은 한 번 구현하고 끝나는 것이 아니라, 지속적인 테스트와 개선이 필요한 여정입니다. 정기적인 Game Day를 통해 시스템의 약점을 발견하고 개선해 나가시기 바랍니다.

마지막 업데이트