클러스터 환경에서 의존 관계 모델링
클러스터 환경에서 구성 요소를 시작하는 순서를 반영해 의존 관계를 모델링하면 안된다. * 분산 시스템으로 동작하는 애플리케이션은 유연성과 기민성 면에서 뛰어나다. * 구성 요소 간의 복잡한 의존 관계를 보면, 이들 의존 관계를 각 구성 요소를 시작하는 순서에 반영해 모델링하고 싶은 유혹에 빠지기 쉽지만 그리 현명한 방법이 아니다.
예시
- 클러스터에서 20여 개의 API 컨테이너와 50여 개의 웹 애플리케이션 컨테이너를 실행한다.
의존 관계 모델링 (X) * 웹 애플리케이션 컨테이너 50개보다 API 컨테이너 20개를 먼저 실행하도록 하면 웹 애플리케이션은 모든 API 컨테이너가 실행 되길 기다려야 한다. * 하지만 API 컨테이너가 하나 부족하더라도 50개의 웹 애플리케이션 컨테이너를 실행하는 데는 문제가 없다.
디펜던시 체크와 헬스 체크 사용 (O) * 가능한 한 빨리 컨테이너를 실행도록 처리 * 일부 컨테이너가 의존 관계를 만족하지 못한 상태라면 재실행되거나 다른 컨테이너로 교체 * 대규모 애플리케이션의 경우에도 완전 동작 상태가 되는 데 몇 분 정도가 걸리지만 그동안에도 애플리케이션이 동작하며 요청을 처리할 수 있다.
디펜던시 체크와 헬스 체크 주의점
헬스 체크 * 주기적으로 자주 실행되므로, 시스템에 부하를 주는 내용이어서는 안 된다. * 자원을 너무 많이 소모하지 않으면서 애플리케이션이 실질적으로 동작 중인지 검증할 수 있는 핵심적인 부분을 테스트 한다.
디펜던시 체크 * 애플리케이션 시작 시에만 실행되므로 테스트에 소모되는 리소스에 덜 민감 * 테스트 대상이 빠짐없이 정확하도록 주의. 디펜던시 체크에서 누락된 의존 관계가 있고 이 문제를 플랫폼이 해결하지 못한다면 애플리케이션에도 문제가 생긴다.