Self-Healing Pipelines
“Building self-healing infrastructure is not about eliminating human judgement — it is about reserving human judgement for problems that actually need it.”
핵심 개념
Self-Healing Pipeline은 데이터 파이프라인의 일반적 장애를 자동으로 감지하고 복구하는 시스템이다. 핵심 원칙은 장애 유형별 전용 복구 로직을 분리하는 것 — 단일 “전부 재시도” 시스템으로는 CDC 체크포인트 계산, 메모리 기반 배치, 점진적 스케일링, 워터마크 중복 제거, 의존성 순회를 동시에 안전하게 처리할 수 없다.
복구 레이어 패턴
Halodoc의 6-레이어 아키텍처가 대표적 사례:
Layer 1: CDC 자동 복구
- 실패 태스크 감지 → 3-gate 적격성 검사(태스크 유형, 현재 상태, 에러 분류) → 안전한 재시작 체크포인트 계산(마지막 커밋 위치 - 버퍼)
- 원칙: 중복보다 데이터 완전성 — 다운스트림은 멱등성을 잘 처리하지만 데이터 갭은 잘 처리하지 못함
Layer 2: 소스-레이크 일관성 검증
- 소스와 레이크 간 고유 식별자 기반 비교
- 원칙: 기반부터 수정 — 다운스트림 보고 테이블 전에 bronze-to-silver 파이프라인을 먼저 복구
Layer 3: 미니 배치 처리
- 누적 파일 크기 기반 배치 할당(예: 2GB 단위)으로 OOM 방지
- 15GB 백로그 + 8GB executor → 8개의 2GB 배치로 안정적 처리
Layer 4: 스마트 메모리 스케일링
- Airflow
on_retry_callback에서 OOM 감지 시 점진적 메모리 증가(+25% → +40% → +60%) - 히스토리컬 메트릭 기반 동적 right-sizing이 기본선, 스케일링은 안전망
Layer 5: 웨어하우스 락 관리
- SQL 주석 워터마크(
-- ETL_INCREMENTAL__schema__table --)로 중복 세션 감지 → 고아 쿼리 취소 - 증분/백필 작업은 별도 워터마크로 동시 실행 허용
Layer 6: 캐스케이딩 의존성 복구
- BFS 탐색으로 전체 의존성 트리 구축 → 레이어별 병렬 실행
- 테이블을 최대 깊이에 배치하여 모든 업스트림 의존성 완료 보장
설계 원칙
- Alert first, act second: 자동 수정 시에도 항상 먼저 알림
- 장애 유형별 전용 로직: 범용 재시도가 아닌 특화된 복구
- 반복 장애부터 시작: 가장 자주 발생하는 장애 모드부터 자동화
- 영향 측정: 수동 개입 감소량 추적
메커니즘 위에 필요한 것 — 인시던트 운영 모델
위 6개 레이어는 복구 메커니즘이다. 그것만으로는 답할 수 없는 질문이 남는다:
- 이 알림이 진짜 문제인가, 노이즈인가? (triage)
- 누가 고쳐야 하는가? 자산 오너인가, 상류 팀인가, 플랫폼 팀인가? (RCA 기반 라우팅)
- 자동 복구가 실제로 문제를 해결했는지 어떻게 검증하는가?
- data downtime을 어떻게 측정하는가?
메커니즘을 라이프사이클로 감싸는 것이 Data Incident Operations다. Grab의 DPI(Data Production Issue) 모델이 대표 사례로, contract 위반을 구조화된 프로덕션 이슈로 만들어 인시던트의 86.9%를 자동 해결하고 95% 이상을 자동 제기한다.
두 관점의 관계:
- Self-Healing Pipelines — 어떻게 고치는가 (복구 로직)
- Data Incident Operations — 무엇을 언제 누구에게 (탐지·분류·라우팅·검증·측정)
특히 Halodoc의 원칙 “Alert first, act second” 는 DPI 모델의 notification and audit 단계와 같은 본능이고, “장애 유형별 전용 로직” 은 DPI의 작은 에러 택소노미 + 특화 diagnoser 와 같은 구조다.
연관 개념
- Data Incident Operations — 복구 메커니즘을 감싸는 인시던트 라이프사이클
- Data Pipeline Fundamentals — 파이프라인 유형과 운영 패턴
- Data Quality and Validation — 검증 체계와 카나리아 패턴
- Silent Failures and Data Integrity — 에러 없이 데이터가 유실되는 장애
- Change Data Capture — CDC 장애 복구 패턴
- Spark at Scale — Spark OOM 관리와 메모리 스케일링
- Data Contracts
- Stream Autoscaling — 스트리밍 잡의 자동 조정과 안전 가드