Self Registration Self Registration은 각 마이크로서비스 인스턴스가 자신의 정보를 서비스 레지스트리에 직접 등록하고 관리하는 패턴이다. 서비스가 시작될 때 자동으로 등록되고, 종료될 때 해제되는 방식으로 동작한다.
Self Registration 패턴은 마이크로서비스 환경에서 동적으로 변화하는 서비스 인스턴스를 효과적으로 관리할 수 있게 해주는 중요한 패턴이다. 하지만 구현의 복잡성과 유지보수 측면에서 주의가 필요하며, 프로젝트의 규모와 요구사항에 따라 적절히 선택해야 한다.
주요 특징 자동 등록: 서비스 인스턴스가 시작될 때 자신의 정보(호스트, IP 주소, 포트 등)를 레지스트리에 등록한다. 자동 해제: 서비스가 종료될 때 레지스트리에서 자신의 정보를 제거한다. 헬스체크: 주기적으로 레지스트리에 헬스체크 신호를 보내 자신이 살아있음을 알린다. 상태 관리: 서비스 인스턴스가 자신의 상태를 가장 잘 알기 때문에, UP/DOWN 외에도 STARTING, AVAILABLE 등 더 복잡한 상태 모델을 구현할 수 있다. 구현 방법 서비스 레지스트리 설정: Eureka, Consul, ZooKeeper 등의 도구를 사용하여 중앙 레지스트리를 구축한다. 서비스 등록 코드 구현: 각 마이크로서비스에 자신을 레지스트리에 등록하는 코드를 추가한다. 헬스체크 메커니즘 구현: 주기적으로 레지스트리에 헬스체크 신호를 보내는 로직을 구현한다. 서비스 디스커버리 클라이언트 구현: 다른 서비스들이 등록된 서비스를 찾고 통신할 수 있도록 한다. 장점 구현이 비교적 간단하다. 추가적인 시스템 컴포넌트가 필요하지 않다. 서비스가 자신의 상태를 가장 잘 알기 때문에 정확한 정보를 제공할 수 있다. 단점 서비스와 레지스트리 간의 결합도가 높아진다. 각 프로그래밍 언어와 프레임워크마다 등록 로직을 구현해야 한다. 서비스가 비정상적으로 종료될 경우 레지스트리에서 자동으로 제거되지 않을 수 있다. 구현 예시 Netflix Eureka는 셀프 등록 패턴의 대표적인 예시이다.
Eureka 클라이언트는 다음과 같은 방식으로 동작한다:
...