이번 포스트에서는 Liveness와 Readiness의 정의와 차이에 대해 간단히 정리하고자 합니다.
Liveness
시스템이나 프로세스가 지금 작업을 할 수 있는 상태인지를 의미합니다.
예를 들어, 어플리케이션은 정상적으로 떠있지만, memory leak이 있거나 무언가의 사유로 어플리케이션이 당장 응답을 할 수 없는 상태라면, Liveness 가 비정상인 상태일 것 입니다.
Readiness
Readiness는 서버가 실행가능한 상태로 준비가 잘 되어 있는지를 보여주는 지표입니다.
예를 들어, 특정 서버가 실행 되기 위한 상태, Readiness를 만족하기 위해서
반드시 그 이전에 /tmp/must/read/before/config 이라는 파일을 읽어와야만 한다고 가정해봅시다.
당연히 해당 파일을 읽기 전, 읽고 있는 중에는 Readiness를 충족시키지 못한 상태이였다가 해당 설정 파일을 모두 읽은 후에야 Readiness를 만족하는 상태가 될 것입니다.
체크방법
쿠버네티스에서는 위의 Liveness와 Readiness를 체크 할 수 있는 방법으로 주로 아래 3가지를 사용합니다.
1. exec
특정 경로에 있는 파일을 cat명령어를 이용하여 열어봄으로써 해당 서비스의 Liveness를 체크 할 수 있습니다.
쿠버네티스에서는 /tmp/healthy파일을 통해 확인합니다.
2. http get
해당 서비스에 http 요청을 보내 해당 서버의 Liveness도 체크 할 수 있습니다.
쿠버네티스에서는 /healthz경로로 Get요청을 보냄으로써 확인합니다.
3. tcp socket
당연히 TCP 소켓통신을 통해서도 Liveness를 체크할 수 있습니다.
'java,springboot' 카테고리의 다른 글
[Java] Java에서 JSON 다루기(mapper, converter) (0) | 2024.04.04 |
---|---|
[성능개선]KMP알고리즘 활용하여 50% 성능개선 해보기 (1) | 2024.03.11 |
[Springboot] Reactive Redis 총 정리(config, generic, test) (1) | 2024.02.06 |
try-with-resources 사용법 및 주의점 (1) | 2023.12.05 |
브라우저에서 RTSP프로토콜 스트리밍 하기 (1) | 2023.10.30 |