업타임 모니터링 직접 붙이기: 헬스체크부터 장애 감지까지
업타임 모니터링을 직접 구축하는 실전 가이드. 헬스체크 엔드포인트 설계, 응답시간 측정, 장애 감지 임계값 설정, 알림 연동까지 개발자 관점에서 정리했습니다.
서비스가 다운되었는데 사용자 문의로 처음 알게 되는 상황은 피해야 합니다. 업타임 모니터링은 외부에서 주기적으로 서비스를 호출해 살아 있는지 확인하고, 이상이 감지되면 팀에 알리는 체계입니다. SaaS 도구를 쓸 수도 있지만, 직접 붙이면 헬스체크의 깊이와 알림 조건을 원하는 대로 통제할 수 있습니다. 이 글에서는 헬스체크 엔드포인트 설계부터 응답시간 측정, 장애 감지 로직, 알림 연동까지 실무에서 바로 적용할 수 있는 순서로 정리합니다.
헬스체크 엔드포인트부터 제대로 설계하기
업타임 모니터링의 출발점은 헬스체크 엔드포인트입니다. 단순히 200을 반환하는 것으로는 부족합니다. 프로세스는 살아 있어도 DB 커넥션이 끊겼거나 외부 API가 응답하지 않으면 실제로는 장애 상태이기 때문입니다. 따라서 얕은 체크와 깊은 체크를 구분해 설계하는 것이 좋습니다.
- 얕은 체크(liveness)는 프로세스가 요청을 받아 응답할 수 있는지만 빠르게 확인합니다.
- 깊은 체크(readiness)는 DB, 캐시, 큐, 핵심 외부 API의 연결 상태까지 점검합니다.
- 각 의존성의 상태를 개별 항목으로 응답 본문에 담아 어디가 문제인지 즉시 파악할 수 있게 합니다.
- 깊은 체크는 부하가 크므로 호출 주기를 얕은 체크보다 길게 잡습니다.
- 헬스체크 엔드포인트 자체는 인증을 최소화하되 외부 노출 시 정보 유출에 주의합니다.
응답은 JSON으로 각 컴포넌트의 상태(up/down)와 확인에 걸린 시간을 함께 반환하면, 나중에 장애 원인을 추적할 때 로그만으로도 상당 부분을 재구성할 수 있습니다.
응답시간과 상태를 어떻게 측정할 것인가
헬스체크가 통과하는지 여부만큼 중요한 것이 응답시간입니다. 서비스가 죽지는 않았지만 응답이 3초씩 걸린다면 사용자 입장에서는 사실상 장애입니다. 모니터링 주체는 매 호출마다 상태 코드, 응답시간, 타임스탬프를 기록해야 합니다.
- 여러 리전이나 위치에서 호출해 특정 네트워크 경로 문제와 실제 장애를 구분합니다.
- 응답시간은 평균보다 p95, p99 같은 백분위 지표로 봐야 꼬리 지연을 놓치지 않습니다.
- 타임아웃 값을 명확히 정해 무한 대기로 모니터가 멈추지 않게 합니다.
- 연속 실패 횟수를 카운트해 일시적 네트워크 흔들림과 지속 장애를 분리합니다.
- 측정 데이터를 시계열로 저장해 추세와 배포 시점의 상관관계를 확인합니다.
단발성 실패 한 번에 알림을 보내면 팀은 곧 알림을 무시하기 시작합니다. 좋은 장애 감지는 '언제 울릴지'보다 '언제 울리지 않을지'를 먼저 정의하는 데서 시작됩니다.
장애 감지 임계값과 알림 연동
수집한 데이터를 바탕으로 언제 장애로 판단할지 규칙을 세웁니다. 핵심은 오탐(false positive)을 줄이는 것입니다. 너무 민감하면 알림 피로가 쌓이고, 너무 둔감하면 장애를 늦게 인지합니다. 임계값은 서비스 특성에 맞춰 반복 조정해야 하는 값입니다.
- 연속 N회 실패 또는 일정 시간 내 실패율이 임계치를 넘으면 장애로 판정합니다.
- 응답시간이 정상 기준의 몇 배를 특정 시간 이상 초과하면 성능 저하로 별도 분류합니다.
- 복구가 확인되면 자동으로 해제 알림을 보내 상황 종료를 명확히 합니다.
- 동일 장애에 대한 중복 알림은 그룹핑하거나 억제 시간을 두어 스팸을 방지합니다.
- 심각도에 따라 채널을 나눠 야간에는 긴급 건만 담당자를 호출하도록 합니다.
알림 채널은 팀이 실제로 보는 곳으로 연결해야 합니다. 이메일만으로는 즉시성이 떨어지므로 메신저, 온콜 시스템, 대시보드를 조합하는 것이 일반적입니다. 알림에는 어떤 컴포넌트가, 언제부터, 어떤 상태로 문제가 되었는지를 포함해 수신자가 추가 조사 없이 첫 판단을 내릴 수 있게 합니다.
DevCowork로 헬스체크와 알림을 한곳에서 연결하기
직접 구축한 헬스체크와 응답시간 데이터도 결국 팀의 협업 흐름과 연결될 때 가치를 발휘합니다. DevCowork는 모니터링 지표를 프로젝트 대시보드에 모아 보여주고, 장애 감지 시점에 담당 채널과 이슈 트래킹을 자동으로 연결합니다. 응답시간 추세와 배포 이력을 같은 화면에서 비교할 수 있어, 알림을 받은 뒤 원인 파악과 대응 기록까지 하나의 흐름으로 이어집니다. 이미 운영 중인 헬스체크 엔드포인트가 있다면 그대로 연동해 업타임 모니터링 체계를 팀 협업 안으로 가져올 수 있습니다.