Healthcheck
title: 2026-03-24 author: 강병호 (이름) date: 2026-03-24 (날짜) category: TIL/강병호/2026/03 (파일 경로 : TIL/{이름}/{연}/{월}) layout: post (자유) —
1. 헬스체크
서버나 애플리케이션이 현재 요청을 처리할 수 있는 상태인지 확인하는 프로세스입니다.
- 확인 방법: 특정 API 엔드포인트(예: /health)를 호출하여 HTTP 상태 코드를 확인하거나, 특정 포트로의 TCP 연결 성공 여부를 체크합니다.
- 도구: Spring 프레임워크 환경에서는 Spring Boot Actuator를 활용하여 데이터베이스 연결 상태, 디스크 여유 공간 등 상세한 지표를 포함한 헬스체크 기능을 손쉽게 구현할 수 있습니다.
2. 헬스체크가 필요한 이유
- 배포 검증: 새로운 코드를 배포한 직후, 신규 인스턴스가 정상적으로 구동되어 트래픽을 받을 준비가 되었는지 즉각 확인 가능합니다.
- 실시간 장애 감지: 운영 중인 서버에 문제가 생겼을 때 이를 빠르게 파악하여 자동화된 대응을 가능하게 합니다.
3. 로드 밸런서를 통한 장애 대응 메커니즘
다수의 서버를 운영하는 환경에서 헬스체크는 시스템 가용성을 지키는 핵심 역할을 합니다.
- 정상 상태: 로드 밸런서가 서버 A와 B 모두 건강하다고 판단하면 트래픽을 양쪽으로 분산합니다.
- 장애 발생 및 감지: 서버 A의 CPU/메모리 고갈, I/O 오류 등으로 인해 헬스체크 응답이 실패하거나 지연되면, 로드 밸런서는 이를 ‘비정상(Unhealthy)’ 상태로 간주합니다.
- 트래픽 차단: 로드 밸런서는 장애가 발생한 서버 A를 트래픽 전달 대상에서 즉시 제외하고, 모든 요청을 정상 상태인 서버 B로만 전달합니다.
4. 비정상 서버 방치의 위험성
장애 상태인 서버를 빠르게 격리하지 않을 경우 다음과 같은 연쇄 문제가 발생합니다.
-
사용자 경험 저하: 정상적인 서버가 있음에도 불구하고, 운 나쁘게 비정상 서버로 연결된 사용자는 오류 화면을 보게 됩니다.
-
트래픽 폭주(Retry Storm): 클라이언트 측에서 실패한 요청에 대해 재시도(Retry)를 반복할 경우, 전체 시스템의 트래픽이 급증하여 멀쩡한 서버까지 과부하로 무너질 위험이 있습니다.