APM Health Check Alert
3줄 요약
- APM, Health Check, Alert는 서비스 상태를 사람이 행동할 수 있는 신호로 바꾸는 운영 장치다.
- 핵심은 지표를 많이 보는 것이 아니라 latency, error rate, throughput, saturation, readiness, SLO burn rate를 사용자 영향과 연결하는 것이다.
- Spring 백엔드 개발자는 Actuator health, APM transaction, alert rule, SLI/SLO, runbook을 보고 장애 감지와 완화 판단을 설명할 수 있어야 한다.
핵심 정리
- APM은 transaction latency, error, throughput, external call, DB query 같은 애플리케이션 관점의 지표를 보여 준다.
- Liveness는 프로세스 재시작 필요 여부이고 readiness는 트래픽 수신 가능 여부다. 둘을 섞으면 재시작 폭주나 잘못된 트래픽 유입이 생긴다.
- Alert rule은 사람을 깨우는 비용이 있다. page 알림은 즉시 행동이 필요한 사용자 영향 신호에만 연결해야 한다.
- SLI는 측정 지표, SLO는 목표 수준, error budget은 허용 가능한 실패량이다. 완벽함이 아니라 우선순위를 정하는 기준이다.
- 좋은 알림은 증상을 말하고, 영향 범위와 첫 확인 링크, runbook, 담당자를 함께 준다.
헷갈리는 지점
- Health가 UP이면 서비스가 정상이라고 생각하기 쉽다.
- 핵심은 health는 한 종류의 신호일 뿐이고, 핵심 API latency, error rate, saturation과 함께 봐야 한다는 점이다.
- 알림이 많을수록 안전하다고 생각하기 쉽다.
- 핵심은 행동 불가능한 알림은 noise가 되어 중요한 장애 알림까지 무시하게 만든다는 점이다.
- SLO를 SLA처럼 법적 약속으로만 생각하기 쉽다.
- 핵심은 SLO가 개발 속도와 안정성 투자의 균형을 정하는 내부 운영 기준이 될 수 있다는 점이다.
확인 질문
- APM에서 가장 먼저 볼 네 가지 신호는 무엇인가?
- latency, error rate, throughput, saturation이며, Spring에서는 DB/external call 시간도 함께 본다.
- Readiness와 liveness를 분리해야 하는 이유는 무엇인가?
- readiness는 트래픽 수신 가능 여부이고 liveness는 재시작 필요 여부라 서로 다른 조치를 유도하기 때문이다.
- 좋은 alert rule의 조건은 무엇인가?
- 사용자 영향과 연결되고, 지속 시간과 severity가 있으며, runbook과 첫 확인 지표가 포함되어야 한다.