Heartbeat의 정의
Heartbeat(하트비트)는 말 그대로 ‘심장 박동’을 뜻하는 단어로, IT 시스템에서는 특정 서버나 프로세스가 정상적으로 살아있는지를 주기적으로 확인하기 위해 보내는 신호를 의미합니다. 마치 병원에서 환자의 맥박을 체크해 생존 여부를 판단하듯, 시스템도 일정 시간마다 신호를 주고받으며 상대방이 정상 작동 중인지를 확인합니다.
이 신호는 보통 매우 가벼운 형태로 구성됩니다. 예를 들어 PING 요청을 보내고 PONG 응답을 받는 방식이나, 특정 엔드포인트(/health)에 주기적으로 HTTP 요청을 보내 200 OK 응답이 오는지 확인하는 방식이 대표적입니다.
동작 원리와 예시
Heartbeat는 일반적으로 다음과 같은 흐름으로 동작합니다.
- 모니터링 대상 서버가 일정 주기(예: 5초마다)로 ‘나 살아있어’라는 신호를 전송
- 모니터링 서버 또는 감시 시스템이 이 신호가 정해진 시간 안에 도착하는지 확인
- 만약 정해진 횟수 이상 신호가 오지 않으면 해당 서버를 ‘장애 상태’로 판단
예를 들어 두 대의 서버가 클러스터로 묶여 있고 서로 Heartbeat를 주고받는다고 가정해봅시다. 평소에는 3초마다 서로에게 ‘살아있음’ 신호를 보내다가, 어느 순간 한쪽에서 신호가 3번 연속 오지 않으면 나머지 서버는 상대방이 죽었다고 판단하고 자신이 대신 작업을 이어받는 페일오버(Failover)를 수행합니다. 이는 마치 짝을 이룬 등산객이 서로에게 무전으로 안부를 확인하다가, 응답이 끊기면 사고가 났다고 판단하고 구조에 나서는 것과 비슷한 원리입니다.
실무에서 왜 쓰는가
Heartbeat는 고가용성(High Availability) 시스템을 구축할 때 핵심적인 역할을 합니다. 서버 장애를 사람이 직접 감지하고 대응하는 것은 느리고 비효율적이기 때문에, 시스템 스스로 상태를 감지하고 자동으로 대응할 수 있도록 만드는 것이 목적입니다.
실제로 데이터베이스 클러스터, 로드밸런서, 쿠버네티스의 liveness probe, 마이크로서비스 간 헬스체크 등 다양한 곳에서 Heartbeat 개념이 활용됩니다. 신호가 끊기면 트래픽을 다른 서버로 자동 전환하거나, 장애가 발생한 컨테이너를 자동으로 재시작하는 등의 조치가 즉시 이루어집니다.
결국 Heartbeat는 단순한 신호처럼 보이지만, 서비스 중단 없이 안정적으로 시스템을 운영하기 위한 가장 기본적이면서도 중요한 장치라고 할 수 있습니다.