더북(TheBook)

애플리케이션 수준의 서비스 디스커버리는 넷플릭스와 피보탈 덕분에 대중화되었습니다. 넷플릭스는 유레카(Eureka)라는 고가용성 서비스 레지스트리, 유레카 자바 클라이언트, 리본(Ribbon, 유레카 클라이언트를 지원하는 정교한 HTTP 클라이언트) 등 여러 가지 컴포넌트를 개발하고 오픈 소스화했습니다. 피보탈은 이 넷플릭스 컴포넌트를 아주 쉽게 사용할 수 있게 스프링 클라우드(Spring Cloud)라는 스프링 기반의 프레임워크를 개발했습니다. 스프링 클라우드 기반의 서비스는 유레카에 자동 등록되며, 스프링 클라우드 기반의 클라이언트는 유레카를 기본 서비스 디스커버리로 사용합니다.

애플리케이션 수준의 서비스 디스커버리는 다양한 플랫폼에 서비스가 배포된 경우에도 처리 가능한 장점이 있습니다. 가령 일부 서비스만 쿠버네티스(12장)에 배포하고 나머지는 레거시 환경에서 실행하고 싶을 때도 있겠죠. 쿠버네티스에 기반한 서비스 디스커버리는 쿠버네티스 내부에서만 동작하지만 유레카를 이용하는 애플리케이션 수준의 디스커버리는 두 환경 모두 잘 동작합니다.

그러나 사용하는 언어(즉, 프레임워크)에 맞는 서비스 디스커버리 라이브러리가 필요한 단점도 있습니다. 이를테면 스프링 클라우드는 스프링 개발자에게는 도움이 되겠지만, 다른 자바 프레임워크나 Node.js, 고 언어 등 비JVM 언어를 사용하는 개발자는 다른 서비스 디스커버리 프레임워크를 찾아보아야 하겠죠. 서비스 레지스트리를 직접 설정/관리하는 업무가 가중되는 부담도 있습니다. 따라서 배포 인프라 업체가 제공한 서비스 디스커버리 메커니즘을 활용하는 것이 좋습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.