377
15
장
관측가능성과 모니터링
15.3.2
내부 헬스 체크
클라우드 네이티브 애플리케이션은 복잡하고 예측할 수 없으며 감지하기 어려운 방법으로 장
애가 발생한다. 애플리케이션은 예상하지 못한 장애가 발생해도 복구할 수 있고 성능 저하가
우아하게 (!) 발생하도록 설계되어야 한다. 하지만 아이러니하게도 복원력이 뛰어날수록 블랙
박스 모니터링으로 장애를 감지하기가 더 어렵다.
이러한 문제를 해결하기 위해서 애플리케이션은 자체 헬스 체크를 수행할 수 있어야 하며 수행
해야만 한다. 특정 기능이나 서비스의 개발자는
healthy
상태여야 하는 최적의 모니터링 위치
를 알고 컨테이너 밖 (
HTTP
엔드포인트 )에서 모니터링하는 방식으로 결과를 출력하는 코드를
작성할 수 있다.
사용자가 만족하는가?
쿠버네티스는 애플리케이션이 활성 상태거나 준비 상태인지 알리는 간단한 메커니즘을 제공하
므로 내부 모니터링을 시작하기에 좋다 (‘
5
.
2
.
1
절 활성 프로브’ 참조 ). 일반적으로 쿠버네티스
의 활성/준비성 프로브는 매우 간단하다. 애플리케이션은 요청에 항상 ‘
OK
’로 응답한다. 애플
리케이션이 응답하지 않으면 쿠버네티스는 다운 상태거나 준비가 되지 않은 상태로 판단한다.
하지만 많은 개발자의 쓰린 경험에서 알 수 있듯이 프로그램이 실행되었다고 해서 반드시 올바
르게 작동하는 건 아니다. 좀 더 정교한 준비성 프로브는 ‘애플리케이션이 어떤 작업을 수행해
야 합니까?’라고 물어야 한다.
예를 들어 데이터베이스와 통신해야 하는 경우 데이터베이스 연결이 유효하고 ...