3rd Party Registration
3rd Party Registration은 마이크로서비스 아키텍처에서 서비스 디스커버리를 위한 패턴 중 하나이다.
이 패턴에서는 서비스 인스턴스가 직접 자신을 서비스 레지스트리에 등록하지 않고, 별도의 외부 컴포넌트가 서비스의 등록과 해제를 담당한다.
주요 특징:
- 서비스 인스턴스와 레지스트리 간의 결합도 감소
- 중앙 집중식 서비스 관리
- 다양한 언어와 프레임워크에 대한 일관된 등록 메커니즘 제공
3rd Party Registration 패턴은 마이크로서비스 아키텍처에서 서비스 디스커버리를 효과적으로 관리할 수 있는 방법이지만, 추가적인 복잡성을 감수해야 하므로, 시스템의 규모와 요구사항을 고려하여 적절히 적용해야 한다.
작동 원리
- 외부 등록자(3rd party registrar)가 서비스 인스턴스의 시작과 종료를 모니터링한다.
- 새로운 서비스 인스턴스가 시작되면 등록자가 이를 감지하고 서비스 레지스트리에 등록한다.
- 서비스 인스턴스가 종료되면 등록자가 이를 감지하고 레지스트리에서 해당 인스턴스를 제거한다.
- 등록자는 주기적으로 서비스 인스턴스의 상태를 확인하고, 필요시 레지스트리를 업데이트한다.
장점
- 서비스 코드 간소화: 서비스 자체에 등록 로직이 필요 없어 코드가 단순해진다.
- 일관된 관리: 모든 서비스의 등록을 중앙에서 관리할 수 있다.
- 언어 독립적: 다양한 프로그래밍 언어로 작성된 서비스에 대해 동일한 등록 메커니즘을 사용할 수 있다.
- 고급 기능 구현 용이: 헬스 체크, 자동 스케일링 등의 기능을 쉽게 구현할 수 있다.
단점
- 추가 컴포넌트 필요: 별도의 등록자 컴포넌트를 구현하고 관리해야 한다.
- 복잡성 증가: 전체 시스템의 복잡도가 증가할 수 있다.
- 단일 실패 지점: 등록자가 중앙 집중식이므로 장애 시 전체 시스템에 영향을 줄 수 있다.
구현 예시
- Netflix Prana: JVM 기반이 아닌 애플리케이션을 Eureka에 등록하는 사이드카 애플리케이션
- AWS Auto Scaling Groups: EC2 인스턴스를 자동으로 Elastic Load Balancer에 등록/해제
- Kubernetes: 서비스 인스턴스를 자동으로 내장된 서비스 레지스트리에 등록/해제
사용 시 고려사항
- 고가용성: 등록자 컴포넌트는 높은 가용성을 보장해야 한다.
- 확장성: 많은 수의 서비스 인스턴스를 처리할 수 있어야 한다.
- 보안: 등록 프로세스의 보안을 철저히 관리해야 한다.
- 모니터링: 등록자의 동작을 지속적으로 모니터링해야 한다.