Architecture

image.png

동작 순서

1. Prod EKS 장애 발생
   └ 노드 다운, Pod CrashLoop 등

2. CloudWatch Agent (DaemonSet)가 이상 지표 감지
   └ cluster_node_count 0, pod_restart 급증 등

3. CloudWatch Alarm → ALARM 상태 전환
   └ Composite Alarm: 복합 조건 충족

4. CloudWatch가 상태 변경 이벤트 발생
   └ {"source": "aws.cloudwatch", "detail": {"state": {"value": "ALARM"}}}

5. Prod 리전 EventBridge Rule이 이벤트 캐치
   └ event_pattern: source=aws.cloudwatch, state=ALARM

6. EventBridge가 DR 리전 EventBridge로 포워딩
   └ 크로스 리전 타겟 설정(DR 리전의 "Event Bus"를 선택하여 전달하는 구조 - 아래 사진 참고)

7. DR 리전 EventBridge Rule이 수신
   └ Lambda 트리거

8. Lambda 실행
   └ 이벤트 검증 → Prod 헬스체크 한번 더 → 중복 실행 체크
   └ 통과하면 CodeBuild 호출 (TF_VAR_dr_mode=active)

9. CodeBuild 실행
   └ CodeCommit에서 Terraform 코드 clone
   └ terraform init → apply
   └ ASG desired 0 → 2 (또는 EKS 노드그룹 스케일업)

10. DR 리소스 활성화 완료
    └ 인스턴스 기동 → 서비스 Ready

11. Route 53 트래픽 전환
    └ DNS failover로 DR 엔드포인명

참고

EventBridge 리전간 전달 방법

image.png

"다른 AWS 계정의 대상"에 해당 리전에 해당하는 "ARN" 삽입