피드로 돌아가기
Dev.toBackend
원문 읽기
단순 Heartbeat를 넘어선 다각적 Health Check 도입으로 장애 진단 시간 단축
Health Checks in ASP.NET Core: Beyond the Basic /health Endpoint
AI 요약
Context
단순히 프로세스 생존 여부만 확인하는 200 OK 응답 방식의 한계로 인한 Silent Outage 발생. DB 연결 불가나 리소스 고갈 상황에서도 Liveness Probe가 정상으로 판단하여 장애 인지가 지연되는 구조적 문제 식별.
Technical Solution
- IHealthCheck 인터페이스 구현을 통한 의존성별 상태 검증 파이프라인 구축
- DB Connectivity 확인을 위한 SELECT 1 쿼리 기반의 가벼운 검증 로직 적용
- Redis 및 외부 API 장애 시 서비스 지속 가능 여부에 따라 HealthStatus.Degraded 상태를 부여하는 차등적 상태 설계
- 비즈니스 로직(예: 대기 큐 임계치 10,000건 초과)과 결합한 Custom Health Check 구현으로 애플리케이션 내부 상태 모니터링
- Liveness(프로세스 생존)와 Readiness(트래픽 수용 가능성) 엔드포인트를 분리하여 Kubernetes 오케스트레이션 최적화
- HealthChecks UI 도입을 통한 개별 체크 항목의 상태 및 응답 시간 시각화
실천 포인트
1. 단순 200 OK 반환 엔드포인트가 Heartbeat와 Health Check를 구분하고 있는지 확인
2. 핵심 의존성별로 Healthy, Degraded, Unhealthy 상태를 정의하고 이에 따른 Kubernetes Probe 전략 수립
3. DB 체크 시 성능 부하를 최소화하는 가벼운 쿼리(SELECT 1 등) 사용 여부 검토
4. 인프라 지표 외에 비즈니스 임계치(Queue size 등)를 포함한 Custom Check 구현 검토