서비스 디스커버리

Spring Microservices in Action

Chapter 4

박영준

핵심 내용

  • 서비스 디스커버리의 중요성(feat. 클라우드)

  • 기존 부하 분산 방식과 서비스 디스커버리 장/단점 비교

  • 스프링 넷플릭스 유레카 서버 설정

  • 유레카에 스프링 부트 마이크로서비스 등록

  • 리본 라이브러리를 사용한 클라이언트 부하 분산

서비스 디스커버리?

분산 아키텍처에서 시스템의 물리적 위치를 찾는 행위

서비스 디스커버리의 중요성

  • 서비스 인스턴스 개수를 신속하게 수평 확장하거나 축소 가능

  • 애플리케이션의 회복성 향상에 도움이 됨

  • 이미 검증된 DNS나 로드 밸런서는?

전통적 방식의 서비스 위치 찾기

  • DNS + 로드 밸런서

  • 로드 밸런서가 단일 장애 지점(SPOF)이 될 수 있다.

  • 상용 로드 밸런서는 수평확장이 어렵다

  • 서비스 등록이나 제거가 정적으로 관리되기 때문에 빠른 대응이 어렵다.

  • 복잡하다

클라우드에서 서비스 디스커버리

  • 고가용성(High Availability)

  • 피어 투 피어(P2P)

  • 부하 분산(Load Balancing)

  • 회복성(Resilient)

  • 장애내성(Fault-tolerant)

서비스 디스커버리 일반 개념

1. 서비스 등록

2. 클라이언트가 서비스 주소 검색

3. 정보 공유

4. 상태 모니터링

유레카, 리본을 사용한 서비스 디스커버리

유레카 : 넷플릭스에서 만든 서비스 디스커버리 엔진

리본 : 넷플릭스에서 만든 클라이언트측 부하 분산기(로드 밸런서)

스프링 유레카 서비스 구축

DEMO

Made with Slides.com