SAABlog
중급

AWS Fault Injection Simulator: 카오스 엔지니어링으로 시스템 복원력 테스트하기

AWS FIS로 장애 주입 실험을 수행하는 방법. EC2, ECS, RDS 장애 시뮬레이션과 SAA-C03 시험 핵심 정리.

PHILOLAMB-
Fault Injection Simulator카오스 엔지니어링복원력장애 테스트FIS

관련 시험 도메인

  • Domain 2: Design Resilient Architectures

핵심 요약

**AWS Fault Injection Simulator (FIS)**는 AWS 워크로드에 제어된 장애를 주입하여 애플리케이션의 복원력을 테스트하는 관리형 카오스 엔지니어링 서비스입니다. EC2 중단, AZ 장애, 네트워크 지연 등을 시뮬레이션할 수 있습니다.

시험 팁

시험 핵심: "애플리케이션 복원력 테스트" → AWS FIS, "장애 주입 실험" → AWS FIS, "게임 데이 시뮬레이션" → AWS FIS


AWS FIS는 언제 사용해야 할까?

적합한 경우

AWS FIS 적합 시나리오:
├── 복원력 검증
│   └── 장애 발생 시 시스템이 정상 동작하는지 테스트
├── 게임 데이(Game Day) 시뮬레이션
│   └── 실제 장애 시나리오 재현 및 대응 연습
├── CI/CD 파이프라인 통합
│   └── 배포 전 자동화된 복원력 테스트
├── AZ/리전 장애 대비
│   └── Multi-AZ, Multi-Region 아키텍처 검증
└── 모니터링/알람 검증
    └── 장애 시 CloudWatch 알람이 제대로 동작하는지 확인

부적합한 경우

AWS FIS가 적합하지 않은 상황:
├── 프로덕션 첫 배포 (테스트 환경에서 먼저)
├── 복원력 아키텍처가 없는 시스템
│   → 먼저 Multi-AZ, Auto Scaling 구성
├── 단순 기능 테스트
│   → 일반 테스트 도구 사용
└── 성능/부하 테스트만 목적
    → AWS Distributed Load Testing 등 사용

AWS FIS 핵심 개념

아키텍처

┌─────────────────────────────────────────────────────────────┐
│                AWS Fault Injection Simulator                 │
├─────────────────────────────────────────────────────────────┤
│                                                              │
│   ┌───────────────────────────────────────────────────┐     │
│   │              실험 템플릿 (Experiment Template)      │     │
│   │  ┌─────────────────────────────────────────────┐  │     │
│   │  │ 액션 (Actions)                               │  │     │
│   │  │  • aws:ec2:stop-instances                   │  │     │
│   │  │  • aws:ec2:terminate-instances              │  │     │
│   │  │  • aws:ecs:stop-task                        │  │     │
│   │  │  • aws:rds:failover-db-cluster              │  │     │
│   │  └─────────────────────────────────────────────┘  │     │
│   │  ┌─────────────────────────────────────────────┐  │     │
│   │  │ 대상 (Targets)                               │  │     │
│   │  │  • 리소스 ID                                 │  │     │
│   │  │  • 태그 필터                                 │  │     │
│   │  │  • 리소스 유형                               │  │     │
│   │  └─────────────────────────────────────────────┘  │     │
│   │  ┌─────────────────────────────────────────────┐  │     │
│   │  │ 중지 조건 (Stop Conditions)                  │  │     │
│   │  │  • CloudWatch 알람 연결                      │  │     │
│   │  │  • 임계값 초과 시 자동 롤백                  │  │     │
│   │  └─────────────────────────────────────────────┘  │     │
│   └───────────────────────────────────────────────────┘     │
│                           │                                  │
│                           ▼                                  │
│   ┌───────────────────────────────────────────────────┐     │
│   │              실험 실행 (Experiment)                │     │
│   │                                                    │     │
│   │  [Target Resources: EC2, ECS, RDS, EKS...]        │     │
│   │                                                    │     │
│   └───────────────────────────────────────────────────┘     │
│                                                              │
└─────────────────────────────────────────────────────────────┘

핵심 용어

용어설명
실험 템플릿 (Experiment Template)실행할 액션, 대상, 중지 조건을 정의한 청사진
액션 (Action)수행할 장애 주입 동작 (EC2 중지, 네트워크 지연 등)
대상 (Target)장애를 주입할 AWS 리소스 (ID, 태그, 필터로 지정)
중지 조건 (Stop Condition)실험 자동 중단 조건 (CloudWatch 알람 연결)
시나리오 라이브러리사전 구성된 실험 템플릿 모음

지원 액션

주요 장애 유형

AWS FIS 지원 액션:
├── EC2
│   ├── aws:ec2:stop-instances (인스턴스 중지)
│   ├── aws:ec2:terminate-instances (인스턴스 종료)
│   ├── aws:ec2:reboot-instances (인스턴스 재부팅)
│   └── aws:ec2:send-spot-instance-interruptions (스팟 중단)
│
├── ECS
│   ├── aws:ecs:stop-task (태스크 중지)
│   └── aws:ecs:drain-container-instances
│
├── EKS
│   ├── aws:eks:terminate-nodegroup-instances
│   └── aws:eks:pod-delete
│
├── RDS
│   ├── aws:rds:failover-db-cluster (페일오버)
│   └── aws:rds:reboot-db-instances
│
├── 네트워크
│   ├── aws:network:disrupt-connectivity (연결 차단)
│   └── aws:ssm:send-command (네트워크 지연 주입)
│
└── AZ 수준
    └── aws:ec2:asg-insufficient-instance-capacity
        (AZ 용량 부족 시뮬레이션)

FIS 실험 설계

안전한 실험을 위한 가드레일

실험 안전 장치:
├── 중지 조건 설정 (필수!)
│   ├── CloudWatch 알람 연결
│   │   └── 에러율 > 5% → 실험 자동 중단
│   ├── 응답 시간 임계값
│   │   └── P99 지연 > 3초 → 실험 중단
│   └── 서비스 가용성 알람
│
├── 대상 범위 제한
│   ├── 태그 필터로 테스트 환경만 대상
│   ├── 리소스 비율 지정 (예: 30%만)
│   └── 특정 AZ만 대상
│
└── 점진적 실험
    ├── 1단계: 개발 환경에서 테스트
    ├── 2단계: 스테이징 환경에서 테스트
    └── 3단계: 프로덕션에서 제한된 범위로 테스트

시험 팁

시험 포인트: FIS 실험에는 반드시 **중지 조건(Stop Condition)**을 설정해야 합니다. CloudWatch 알람을 연결하여 임계값 초과 시 자동으로 실험을 중단할 수 있습니다.

일반적인 실험 시나리오

시나리오액션검증 포인트
EC2 인스턴스 장애stop-instancesAuto Scaling이 새 인스턴스 시작하는지
AZ 장애특정 AZ의 모든 인스턴스 중지Multi-AZ 페일오버 동작
RDS 페일오버failover-db-cluster애플리케이션 자동 재연결
ECS 태스크 장애stop-task서비스가 태스크 재시작하는지
네트워크 지연SSM으로 tc 명령 실행타임아웃/재시도 로직 동작

CI/CD 파이프라인 통합

자동화된 복원력 테스트

┌─────────────────────────────────────────────────────────────┐
│              CI/CD + FIS 통합 아키텍처                       │
├─────────────────────────────────────────────────────────────┤
│                                                              │
│   [Code Commit] → [Build] → [Deploy to Staging]             │
│                                    │                         │
│                                    ▼                         │
│                        ┌─────────────────┐                  │
│                        │   AWS FIS       │                  │
│                        │   실험 실행      │                  │
│                        └─────────────────┘                  │
│                                    │                         │
│                          ┌────────┴────────┐                │
│                          ▼                 ▼                │
│                      [성공]            [실패]               │
│                          │                 │                │
│                          ▼                 ▼                │
│               [Deploy to Prod]     [롤백 + 알림]            │
│                                                              │
└─────────────────────────────────────────────────────────────┘

비용 구조

가격 (US East 기준)

항목비용
액션-분 (Action-minute)$0.10/액션-분

예시: 5개 EC2 인스턴스를 10분간 중지하는 실험

  • 5 액션 × 10분 = 50 액션-분
  • 비용: 50 × $0.10 = $5.00

비용 최적화 팁

비용 절감 전략:
├── 짧은 실험 시간
│   └── 검증에 필요한 최소 시간만 실행
├── 대상 리소스 최소화
│   └── 전체가 아닌 샘플 리소스만 대상
├── 개발/테스트 환경 활용
│   └── 프로덕션 실험 전 비프로덕션에서 검증
└── 시나리오 라이브러리 활용
    └── 사전 구성된 템플릿으로 시행착오 감소

SAA-C03 시험 출제 포인트

자주 나오는 시나리오

  1. 복원력 테스트: "장애 발생 시 시스템 동작 검증" → AWS FIS
  2. 게임 데이: "실제 장애 시나리오 재현" → AWS FIS
  3. AZ 장애 시뮬레이션: "특정 AZ 장애 시 동작 확인" → AWS FIS
  4. 자동화된 테스트: "CI/CD에서 복원력 테스트" → AWS FIS
  5. 안전 장치: "중지 조건, CloudWatch 알람 연동" → FIS Stop Conditions

예상 문제

시험 팁

예상 문제 1: "Multi-AZ로 배포된 애플리케이션이 실제로 AZ 장애 시 정상 동작하는지 검증하려면 어떤 서비스를 사용해야 할까요?"

→ 정답: AWS Fault Injection Simulator (AZ 장애 시뮬레이션 후 페일오버 검증)

시험 팁

예상 문제 2: "FIS 실험 중 애플리케이션 에러율이 급증하면 자동으로 실험을 중단하려면?"

→ 정답: CloudWatch 알람을 FIS 실험의 Stop Condition으로 연결

시험 팁

예상 문제 3: "프로덕션 환경에서 카오스 엔지니어링 실험을 안전하게 수행하려면 어떤 조치가 필요할까요?"

→ 정답: Stop Conditions 설정 + 대상 리소스 범위 제한 + 점진적 실험


자주 묻는 질문 (FAQ)

Q: FIS와 타사 카오스 엔지니어링 도구의 차이점은?

AWS FIS는 AWS 서비스와 네이티브로 통합되어 IAM 권한, CloudWatch 알람, 타겟 필터링이 쉽습니다. Chaos Monkey, Gremlin 등 타사 도구는 멀티클라우드를 지원하지만 AWS 특화 기능은 FIS가 더 강력합니다.

Q: FIS 실험이 실제로 리소스를 종료하나요?

, 실제로 리소스에 영향을 줍니다. EC2 중지 액션은 실제로 인스턴스를 중지합니다. 따라서 테스트 환경에서 먼저 실험하고, 프로덕션에서는 제한된 범위로 실행하세요.

Q: 실험 중 문제가 생기면?

Stop Condition이 트리거되면 FIS가 자동으로 실험을 중단합니다. 수동으로도 콘솔/CLI에서 즉시 중단할 수 있습니다. 중단 후에도 이미 종료된 인스턴스는 Auto Scaling이 복구해야 합니다.

Q: 어떤 리전에서 사용 가능한가요?

FIS는 대부분의 AWS 상용 리전에서 사용 가능합니다. 새 리전 출시 시 AWS 문서를 확인하세요.

Q: FIS는 데이터를 손상시킬 수 있나요?

FIS 자체는 데이터를 직접 손상시키지 않습니다. 하지만 인스턴스 종료 시 EBS가 삭제되도록 설정되어 있다면 데이터 손실이 발생할 수 있습니다. 실험 전 데이터 백업과 EBS 설정을 확인하세요.


관련 글

참고 자료