본문 바로가기
Engineering WIKI/Docker

[도커 교과서] 8장 헬스 체크와 디펜던시 체크로 애플리케이션의 신뢰성 확보하기

by wonos 2023. 3. 1.
  • 도커는 컨테이너를 실행할때마다 애플리케이션의 기본 상태를 체크한다.
  • 의존 관계를 만족하는지 점검하는 디펜던시 체크 기능도 도커 이미지에 추가할 수 있다. 디펜던시 체크는 애플리케이션 실행 전에 필요한 요구 사항을 확인하는 기능으로, 실행 시점이 헬스 체크와는 조금 다르다. 모든 요구사항이 확인되면 디펜던시 체크가 성공하고 애플리케이션이 실행된다. 반대로 만족하지 못하는 요구 사항이 있다면 디펜던시 체크가 실패해 애플리케이션이 실행되지 않는다.

CMD 인스트럭션에 정의된 명령은 컨테이너를 실행할 때 실행된다.

curl은 웹 애플리케이션이나 API를 테스트하는 데 매우 유용한 도구다.

  • 도커 컴포즈는 애플리케이션의 상태에 이상이 생겼을 때 어느 정도 복원할 수 있는 기능이 있다. 그러나 도커 컴포즈도 이상이 생긴 컨테이너를 새 컨테이너로 대체하지는 않는다. (단일 서버에서 애플리케이션을 실행 중이라면 더 심각한 장애를 일으킬 수 있기 때문이다. 하지만 종료된 컨테이너를 재시작하거나 이미지에 정의되지 않은 헬스 체크를 추가할 수는 있다.)
  • 헬스 체크 명령어
    • interval : 헬스 체크 실시 간격을 의미한다. 여기서는 5초로 설정됐다.
    • timeout : 그때까지 응답을 받지 못하면 실패로 간주하는 제한 시간을 의미한다.
    • retries : 컨테이너 상태를 이상으로 간주할 때까지 필요한 연속 실패 횟수를 의미한다.
    • start_period : 컨테이너 실행 후 첫 헬스 체크를 실시하는 시간 간격을 의미한다. 애플리케이션을 시작하는데 시간이 오래 걸리는 경우 필요하다.

헬스 체크를 실시하는데도 CPU와 메모리 자원이 필요하므로 운영 환경에서는 좀 더 간격을 길게 잡는 것이 낫다.