지금까지 Config Server
에 대해서 알아보았다. 덕분에 수많은 서비스들의 설정 파일들을 손쉽게 관리할 수 있게 되었다.
설정 파일은 알겠는데 그럼 서비스는 누가 관리
할까? 이름은 뭔지, 어디에 있는지 등 서비스 식별 담당이 필요하다.
원시적인 방법으로 모든 서비스의 정보를 정리해놓고 볼 수도 있겠지만 너무 번거롭고 오류 가능성이 높다.
도서관을 생각해보자. 수많은 책들 사이에서 원하는 책을 찾기 위해서 어떤 과정을 거치는가?
오래된 도서관이라면 일일이 돌아다니면서 원하는 책을 찾아야 한다. 하지만 요즘은 어떤가? 도서 검색대를 사용하면 책이 있는 책장으로 가는 길부터 심지어는 책장의 몇 번째 줄에 있는지까지 알 수 있다.
도서 검색대가 원하는 책의 정보를 모두 알려준 것이다. 단지 필요한 정보는 책의 이름뿐이다.
MSA에서 이와 비슷한 역할을 할 수 있는 것이 Service Discovery
이고, Spring Cloud Netflix Eureka
가 지원해준다.
도서관으로 비유했지만 실제 서비스들은 훨씬 더 복잡하다. 위치 정보(IP 정보, Port 번호 등)가 쉽게 바뀌고, 서비스가 꺼지기도 새로 생기기도 한다.
이를 효과적으로 관리할 수 있도록 도와주는 기술이 Spring Cloud Netflix Eureka
이다.
서비스의 정보를 가지고 있는 Eureka Server와 등록된 서비스들인 Eureka Client가 있다.
Eureka Server는 마이크로서비스들의 정보를 가지고 있는 미들웨어 서버
다. 각 서비스의 상태 정보(IP, Port, Instance Id 등)를 지닌 레지스트리를 갖는다.
Eureka Server는 등록된 레지스트리에 일정 간격(30초)으로 ping을 보내 살았는지(UP) 죽었는지(DOWN)를 확인한다. 일정 횟수 이상 반응이 없다면 레지스트리에서 제외시킨다.
로드밸런서 역할도 하는데 내부적으로 Ribbon을 사용하기 때문에 Round Robin 방식으로 로드밸런싱한다.
Eureka Client는 Eureka Server에 자신의 정보를 등록하기만 하면 된다. Ip, Port, Instance Id를 전달하고 REST 통신으로 Eureka Server와 서로 상호작용한다.
Eureka가 무엇인지 알아봤으니 다음 글에서는 Eureka를 직접 구현해보면서 깊이 알아가보자.
https://velog.io/@korea3611/Spring-BootSpring-Cloud-Netflix-Eureka-%EC%84%9C%EB%B2%84-%EB%A7%8C%EB%93%A4%EA%B8%B0-MSA1
https://velog.io/@lopahn2/Spring-Cloud-Eureka-Server
https://m.blog.naver.com/qjawnswkd/222307979571
https://backtony.github.io/spring/2022-05-31-spring-cloud-1/
https://kobumddaring.tistory.com/44