헬스체크란?

2026. 8. 15. 23:11·Infra

헬스체크란?

헬스체크

헬스체크란?

헬스체크란 서버나 애플리케이션이 정상적으로 동작하고 있는지 확인하는 기능이다.

프로세스가 살아있는지만 확인할 수도 있고, DB, Redis 같은 외부 의존성과 정상적으로 연결되어 있는지까지 확인할 수 있다.


헬스체크를 하는 이유

헬스체크는 장애를 감지하고 정상적인 대상에게만 트래픽을 전달하기 위해 사용한다.

환경에 따라 목적이 조금씩 다르지만 다음과 같다.

  • Load Balancer: 장애 서버를 트래픽 대상에서 제외
  • Docker: 컨테이너의 healthy, unhealthy 상태 판단
  • Kubernetes: 컨테이너 재시작 여부와 트래픽 수신 가능 여부 판단
  • Monitoring System: 장애 감지 및 알림

즉, 헬스체크를 통해 사용자의 요청을 계속 장애서버로 가는것을 방지할 수 있다.


헬스체크를 어떻게 구현 방법

간단한 방법은 /health 같은 API를 만드는 방법이다.

GET /health

정상적인 경우:

200 OK

를 반환하도록 구현하면된다.

직접 구현하면 DB나 Redis 연결 상태까지 검사하도록 만들 수도 있지만 해당 로직을 개발자가 직접 작성해야된다.

때문에 Spring Boot에서는 보통 Spring Boot Actuator를 사용한다.

/actuator/health

Actuator는 서버 상태뿐만 아니라 DB, Redis 같은 외부 의존성 상태와 메트릭 등 운영에 필요한 기능을 표준화된 방식으로 제공하기 때문에 직접 구현해야 할 코드가 줄어든다.


헬스체크의 주기 설정방법

환경에 따라 다르지만 일반적으로

몇 초마다 체크
+
연속 N회 실패하면 장애로 판단

하는 방식으로 설정한다.

예를 들어:

5초마다 확인
3회 연속 실패
→ 장애로 판단

처럼 구성할 수 있다.

다만 너무 자주 체크하면 불필요한 요청으로 서버에 부하를 줄 수 있고, 한 번의 실패만으로 장애라고 판단하면 일시적인 네트워크 문제에도 서버가 제외될 수 있다. 때문에 체크 주기와 실패 임계값을 함께 설정 한다.


Kubernetes의 헬스체크

Kubernetes에는 대표적으로 세 가지 Probe가 있다.

Liveness Probe
Readiness Probe
Startup Probe

Liveness Probe

현재 애플리케이션이 정상적으로 살아있는지 확인한다.

Liveness Probe가 일정 횟수 이상 실패하면 Kubernetes가 컨테이너를 재시작한다.

Liveness 실패
→ Container 재시작

Readiness Probe

현재 애플리케이션이 요청을 처리할 준비가 되었는지 확인한다.

예를 들어 애플리케이션 자체는 실행되고 있지만 DB 연결 문제 때문에 요청을 정상적으로 처리할 수 없는 상황이라면 Readiness가 실패할 수 있다.

Readiness 실패
→ 트래픽 대상에서 제외
→ Container는 계속 실행

따라서 Liveness와 Readiness의 핵심 차이는:

Liveness
→ 이 프로세스를 재시작해야 하는가?

Readiness
→ 이 서버에 지금 요청을 보내도 되는가?

다음과 같다.


Startup Probe

Startup Probe는 애플리케이션의 초기 실행이 완료되었는지 확인한다.

어떤 애플리케이션은 시작하는 데 시간이 오래 걸릴 수 있다.

예를 들어 서버가 정상적으로 시작하는 데 1분이 필요한데 Liveness Probe가 너무 일찍 동작하면:

서버 초기화 중
→ Liveness 실패
→ Container 재시작
→ 다시 초기화
→ 다시 실패

처럼 무한 재시작이 발생하게 된다.

Startup Probe를 사용하면 애플리케이션이 정상적으로 시작될 때까지 Liveness Probe의 간섭을 막을 수 있다.


헬스체크에서 알아두면 좋은 추가 개념

Failover

A 서버에 장애가 발생했을 때 정상적인 B 서버가 대신 요청을 처리하도록 전환하는 방식

Server A 장애
→ Server B가 처리

Graceful Shutdown

서버를 즉시 종료하지 않고 새로운 요청을 받지 않도록 한 뒤, 현재 처리 중인 요청을 완료하고 종료하는 방식

새 요청 차단
→ 기존 요청 처리
→ 서버 종료

Circuit Breaker

다른 서비스에 대한 호출이 반복적으로 실패할 경우 일정 시간 동안 해당 호출을 차단하여 장애 확산을 막는 패턴

반응형

'Infra' 카테고리의 다른 글

Kafka, 언제 그리고 왜 써야 할까?  (0) 2026.08.16
오라클 클라우드 Always Free 정책 변경 - ARM 인스턴스 4 OCPU/24GB → 2 OCPU/12GB로 축소하기  (0) 2026.06.14
오라클 클라우드 VPN 서버 구축 (WireGuard VPN)  (0) 2026.05.26
오라클 클라우드에 접속하는 봇들을 막자  (0) 2026.05.24
'Infra' 카테고리의 다른 글
  • Kafka, 언제 그리고 왜 써야 할까?
  • 오라클 클라우드 Always Free 정책 변경 - ARM 인스턴스 4 OCPU/24GB → 2 OCPU/12GB로 축소하기
  • 오라클 클라우드 VPN 서버 구축 (WireGuard VPN)
  • 오라클 클라우드에 접속하는 봇들을 막자
WHITE_FROST
WHITE_FROST
개발공부리뷰블로그
  • WHITE_FROST
    하얀하얀IT
    WHITE_FROST
  • 전체
    오늘
    어제
    • 분류 전체보기 (138)
      • Infra (5)
      • Project & Troubleshooting (14)
        • Troubleshooting (7)
        • Dev Tools (4)
      • Frontend (30)
        • Next.js (9)
        • React (13)
        • TypeScript (2)
        • JavaScript (6)
      • Mobile (17)
        • React Native (16)
        • Android (1)
      • Backend & Data (7)
        • Database (3)
        • Java (1)
        • Python (2)
        • Design Pattern (1)
      • AI (7)
        • Models & API (1)
        • AI Notes (6)
        • AI Tools (0)
        • Local AI (0)
        • Concepts (0)
      • Problem Solving (52)
        • Algorithm Notes (6)
        • Algorithm Practice (46)
      • Growth Log (9)
        • Study Log (6)
        • Tips (0)
        • Etc (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Claude
    코테
    hooks
    SWEA
    react
    boj
    리액트네이티브
    Python
    Ai
    java
    javascript
    D2
    React-Native cli
    d1
    프로그래머스
    코딩테스트
    오블완
    reactnative
    mongodb cloud
    React Hooks
    알고리즘
    티스토리챌린지
    react-native-maps
    Expo
    error
    Next.js
    ReactHook
    ios
    react-native
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
WHITE_FROST
헬스체크란?
상단으로

티스토리툴바