3rd Party Registration

3rd Party Registration은 마이크로서비스 아키텍처에서 서비스 디스커버리를 위한 패턴 중 하나이다.

이 패턴에서는 서비스 인스턴스가 직접 자신을 서비스 레지스트리에 등록하지 않고, 별도의 외부 컴포넌트가 서비스의 등록과 해제를 담당한다.

주요 특징:

  • 서비스 인스턴스와 레지스트리 간의 결합도 감소
  • 중앙 집중식 서비스 관리
  • 다양한 언어와 프레임워크에 대한 일관된 등록 메커니즘 제공

3rd Party Registration 패턴은 마이크로서비스 아키텍처에서 서비스 디스커버리를 효과적으로 관리할 수 있는 방법이지만, 추가적인 복잡성을 감수해야 하므로, 시스템의 규모와 요구사항을 고려하여 적절히 적용해야 한다.

3rd Party Registration
https://nginxstore.com/blog/microservices/%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98msa%EC%9D%98-%EC%84%9C%EB%B9%84%EC%8A%A4-%EA%B2%80%EC%83%89/

작동 원리

  1. 외부 등록자(3rd party registrar)가 서비스 인스턴스의 시작과 종료를 모니터링한다.
  2. 새로운 서비스 인스턴스가 시작되면 등록자가 이를 감지하고 서비스 레지스트리에 등록한다.
  3. 서비스 인스턴스가 종료되면 등록자가 이를 감지하고 레지스트리에서 해당 인스턴스를 제거한다.
  4. 등록자는 주기적으로 서비스 인스턴스의 상태를 확인하고, 필요시 레지스트리를 업데이트한다.

장점

  1. 서비스 코드 간소화: 서비스 자체에 등록 로직이 필요 없어 코드가 단순해진다.
  2. 일관된 관리: 모든 서비스의 등록을 중앙에서 관리할 수 있다.
  3. 언어 독립적: 다양한 프로그래밍 언어로 작성된 서비스에 대해 동일한 등록 메커니즘을 사용할 수 있다.
  4. 고급 기능 구현 용이: 헬스 체크, 자동 스케일링 등의 기능을 쉽게 구현할 수 있다.

단점

  1. 추가 컴포넌트 필요: 별도의 등록자 컴포넌트를 구현하고 관리해야 한다.
  2. 복잡성 증가: 전체 시스템의 복잡도가 증가할 수 있다.
  3. 단일 실패 지점: 등록자가 중앙 집중식이므로 장애 시 전체 시스템에 영향을 줄 수 있다.

구현 예시

  1. Netflix Prana: JVM 기반이 아닌 애플리케이션을 Eureka에 등록하는 사이드카 애플리케이션
  2. AWS Auto Scaling Groups: EC2 인스턴스를 자동으로 Elastic Load Balancer에 등록/해제
  3. Kubernetes: 서비스 인스턴스를 자동으로 내장된 서비스 레지스트리에 등록/해제

사용 시 고려사항

  1. 고가용성: 등록자 컴포넌트는 높은 가용성을 보장해야 한다.
  2. 확장성: 많은 수의 서비스 인스턴스를 처리할 수 있어야 한다.
  3. 보안: 등록 프로세스의 보안을 철저히 관리해야 한다.
  4. 모니터링: 등록자의 동작을 지속적으로 모니터링해야 한다.

참고 및 출처