Development(개발)/개발 Core

Error, Fault, Failure 의 차이(오류,결함,장애), RCA보고서

버터젤리 2025. 7. 13. 15:39

Error, Fault, Failure — 헷갈리는 개념 정리와 실무 사례

개발하다 보면 장애가 터졌을 때 이런 질문을 많이 받습니다.

  • 이건 개발자가 실수한 거야?
  • 아니면 시스템이 이상한 건가?
  • 이건 버그야, 아니면 장애야?

이럴 때 필요한 게 바로, 세 가지 개념의 구분입니다:

오류(Error), 결함(Fault), 장애(Failure)

 

용어 정의 설명
🟥 Error (오류) 사람이 만든 실수 잘못된 코드, 잘못된 입력, 설정 오타 등
🟧 Fault (결함) 오류로 인해 시스템에 잘못된 설정 또는 값이 적용된 상태 오류가 코드나 설정, 인프라에 남아 있는 상태
시스템이 실행되면 장애가 발생될 것으로 예상되는 상태
🟨 Failure (장애) 결함으로 인해 서비스에서 피해가 발생한 상태 사용자 또는 모니터링 관점에서 서비스가 망가진 상태

 

[사람의 실수]   →   Error  
         ↓  
[시스템 내에 남은 문제] →   Fault  
         ↓  
[실행되어 장애 발생]   →   Failure

 

 

예시


🛠 실무 예시 1: 로그 수집기 Fluentd에서 데이터 누락

단계내용
Error 개발자가 Fluentd 설정 파일에서 잘못된 Kafka 플러그인 이름 입력
Fault 이 잘못된 설정이 운영 서버에 반영됨
Failure Kafka로 로그가 전송되지 않아, 대시보드와 S3에 데이터 누락 발생
 

🛠 실무 예시 2: 웹 API 응답 지연

단계내용
Error FastAPI 코드에서 await 키워드 빠뜨림 (비동기 함수 누락)
Fault 블로킹 코드가 운영에 반영되어 I/O 작업 병목 발생
Failure 사용자가 API 호출 시 응답이 늦어지거나 타임아웃 발생 (HTTP 504)
 
Error는 인간의 실수,

Fault는 그 실수가 시스템에 남은 흔적,

Failure는 그 흔적이 실행되어 실제로 시스템이 고장난 상태입니다.

 

🎯 왜 이 구분이 중요한가?

🔍 원인 분석 정확도 향상 장애 보고서나 RCA에서 원인을 단계별로 분리 가능
🧰 적절한 대응 전략 수립 Error는 교육/검토로, Fault는 테스트/검증으로, Failure는 복구 시스템으로 대응
🧑‍💻 엔지니어 간 커뮤니케이션 통일 “이건 단순 Error야, Fault로 넘어가기 전에 잡자” 같은 표현 가능
 
 

 

이걸 기반으로 장애발생에 대한 보고서를 작성한다.
RCA보고서 (Root Cause Analysis)

 

 

 

RCA(Root Cause Analysis)

Root Cause Analysis
원인 분석:
- Error: 설정 파일에서 Kafka 플러그인 타입 오타 발생
- Fault: 잘못된 설정이 CI/CD를 통해 운영에 반영됨
- Failure: Kafka로 로그 전송 실패 → S3 적재 누락 → 모니터링 지표 결손

 

 

 

여기에 더해서 실제로 보고서를 작성할 때는 항목이 더 추가 된다.

항목 설명
(1) Incident Summary 언제, 어떤 시스템에서, 어떤 문제가 발생했는지 요약
(2) Error (오류) 사람이 만든 실수 (코드, 설정, 환경변수 등)
(3) Fault (결함) 오류로 인해 시스템에 남은 문제
(4) Failure (장애) 실제 서비스나 기능이 중단된 상태
(5) Detection 장애를 어떻게 인지했는가 (모니터링, 사용자 제보 등)
(6) Impact 사용자나 시스템에 미친 영향
(7) Resolution 장애를 어떻게 해결했는지
(8) Prevention / RCA 같은 일이 재발하지 않기 위해 어떤 조치를 할 것인가

 

 

예시

항목 내용
(1) Incident Summary 2025-07-13 오전 10:15~10:40, Kafka 로그 수집 파이프라인에서 일부 로그 유실 발생
(2) Error (오류) 신입 엔지니어가 Fluentd 설정에서 @type kafka_buffered 대신 @type kafka로 잘못 설정
(3) Fault (결함) 설정 파일은 CI/CD 파이프라인을 통해 배포됨 → 잘못된 설정이 실제 시스템에 반영됨
(4) Failure (장애) Kafka에 로그가 전송되지 않음 → S3 저장 누락 발생 (15분간 약 1만 건 유실)
(5) Detection Prometheus에서 로그 수집량 급감 경고 발생 → SRE팀이 Slack으로 인지
(6) Impact 실시간 대시보드 누락, 일부 보안 감사 로그 누락 가능성 있음
(7) Resolution 올바른 설정으로 Fluentd 재배포, 수동으로 재수집 가능한 로그는 재처리함
(8) Prevention / RCA - CI 단계에서 Fluentd 설정 정적 검사 추가- Kafka 연동 전 송신 검증 유닛 테스트 추가- 설정 변경 시 두 명 이상 승인 프로세스 적용

 

 

 

🧠 팁: 현업에서 RCA를 잘 쓰는 팁

  • 감정 배제: 누구의 실수든 기록은 중립적으로 써야 함
    ❌ "개발자가 이상하게 설정함"
    ✅ "설정이 예상과 다르게 배포됨"
  • 3단 구분 꼭 포함 (Error → Fault → Failure)
    → 원인 추적이 명확해야 개선이 가능
  • 재발 방지 조치(Prevention)는 Actionable 하게
    → "테스트 강화하자" (X)
    → "CI 단계에 config linter 추가하고 PR 승인 체계를 도입" (O)
# 장애 보고서 (RCA)

## 1. 요약
- 발생 일시: 2025-07-13 10:15 ~ 10:40
- 시스템: Fluentd → Kafka 로그 수집 파이프라인
- 영향: 로그 유실 약 1만 건

## 2. 원인 분석
- Error: 설정 파일에 잘못된 Kafka 플러그인 유형 사용
- Fault: 잘못된 설정이 운영 시스템에 반영됨
- Failure: Kafka에 로그 미전송 → S3 적재 실패

## 3. 장애 감지 및 대응
- 감지: Prometheus 알림 + Slack 경고
- 대응: 설정 수정 후 Fluentd 재배포, 일부 로그 수동 재수집

## 4. 재발 방지 대책
- 설정 검사 자동화 (CI config linter 추가)
- 코드 리뷰 승인 절차 강화
- Kafka 연결 상태 테스트 추가

 

 

 

RCA 보고서 양식

# 🧯 장애 보고서 (Root Cause Analysis)

## 1. 장애 개요 (Incident Summary)
- 📅 발생 일시: [YYYY-MM-DD HH:MM ~ HH:MM]
- 📍 발생 위치(시스템/서비스명): [ex. Kafka → S3 데이터 파이프라인]
- 📉 사용자 영향도: [ex. 일부 로그 유실 / 전체 서비스 중단 / 지연 발생 등]
- 📋 장애 요약: [간단한 한 줄 설명]

---

## 2. 원인 분석 (Cause Analysis)

### 🔹 Error (오류)
- [사람 또는 시스템이 만든 실수. ex. 설정 오타, 잘못된 코드 커밋 등]

### 🔸 Fault (결함)
- [위 오류가 시스템에 남긴 문제. ex. 잘못된 설정이 프로덕션에 반영됨 등]

### ❌ Failure (장애)
- [결함이 실행되어 사용자에게 실제 영향을 준 현상]

---

## 3. 감지 및 대응 (Detection & Response)
- 🧪 감지 방식: [모니터링 경고 / 사용자 제보 / 로그 분석 등]
- ⚙️ 1차 대응: [ex. 서버 재시작 / 롤백 / 임시 핫픽스]
- 🛠 최종 해결: [ex. 설정 수정 후 재배포, DB 복구 등]

---

## 4. 영향 분석 (Impact)
- ⏱ 장애 시간: [ex. 총 25분]
- 👥 사용자 수 / 트래픽 영향: [ex. 일 평균 트래픽의 30% 영향]
- 📦 데이터 유실 여부: [ex. Kafka 메시지 15,000건 손실]

---

## 5. 재발 방지 대책 (Prevention)
- ✅ 기술적 조치:
  - [ex. 설정 정적 검사 도구 도입]
  - [ex. 서비스 헬스체크 주기 단축]
- 🧑‍💻 운영 프로세스 개선:
  - [ex. PR 2인 승인제 적용]
  - [ex. 배포 전 체크리스트에 항목 추가]

---

## 6. 첨부 자료
- 🔗 관련 로그/스크린샷/모니터링 그래프
- 🔗 Jira 티켓 / GitHub PR / Slack 캡처 등