Service Discovery

김성환·2022년 8월 16일
0

MSA

목록 보기
2/7

Service Discovery란?

클라이언트가 필요한 서비스가 어디에 있는지 알려주는 서비스를 의미한다.
우리는 해당 서비스를 Eureka 서버를 사용하여 실습을 할 것이다.

Service Discovery의 기능

Service Discovery의 기능은 크게 2가지이다.
1. 등록
2. 검색
개발자가 개발한 micro 서비스를 사용할 수 있도록 등록해주고, Api Gateway 혹은 라우터에게 그 서비스들을 알려주도록 검색하는 기능을 제공한다.

Eureka 서버

개발자가 개발한 micro 서비스들을 등록하고 검색하기 위해서는 유레카 서버를 생성해야 한다.
@EnableEurekaServer 이라는 어노테이션을 사용하는데, 해당 애플리케이션을 서버로 등록해주는 어노테이션을 의미한다.
아래와 같이 main함수에 해당 어노테이션을 넣어주면 된다.
그렇게 되면 이 서버는 유레카 서버가 활성화 된 것이다.

@SpringBootApplication
@EnableEurekaServer
public class DiscoveryserviceApplication {
    public static void main(String[] args) {
        SpringApplication.run(DiscoveryserviceApplication.class, args);
    }
}

Eureka Client

서버와 상호작용을 더 쉽게 해주는 것을 Eureka Client라 부른다.
Eureka Client LoadBalancer 방식을 기본으로 사용하는 로드밸런서를 내장하고 있다.
로드밸런싱 방식에는 여러방식이 있지만 server 와 client로 구분해 살펴볼 수 있다.

  • server side loadBalancing : 스위치를 거쳐 분산처리를 하는 방식
  • client side loadBalancing : 스위치를 거치지 않고 클라이언트가 처리하는 방식

설정

유레카 서버 혹은 micro서비스를 등록하기 위해서는 설정이 필요하다.
방법 1. 설정파일인 application.yml을 작성
방법 2. 별도의 설정 클래스를 만들어 설정을 적용
yml파일에 들어갈 유레카 서버 속성을 살펴보자

유레카 서버 속성

  • 유레카 설정 구분
  • 자기 보호 모드
  • 레지스트리 등록 여부/캐싱 여부
  • 레지스트리 갱신 - 서비스 등록 관련
  • 레지스트리 갱신 - 서비스 해제 관련
  • IP 주소 우선하기
  • 유레카 피어링 설정

유레카 설정 구분

유레카의 설정에는 크게 3가지로 구분할 수 있다.

  • eureka.server. : Eureka Server 관련 설정
  • eureka.client. : 클라이언트가 레지스트리에서 다른 서비스의 정보를 얻을 수 있는 설정
  • eureka.instance. : 포트나 이름 등 현재 Eureka Client 의 행동을 재정의하는 설정

자기 보호 모드

일시적인 네트워크 장애로 인한 서비스 해제 막기 위한 모드이다.(운영단계에서는 항상 활성화시켜야한다.) eureka.server.enable-self-preservation
유레카 서버는 서비스의 각 인스턴스로부터 생존신호(heartbeat) 메시지를 받게 되는데, 설정된 기간 동안 하트비트 메시지를 받지 못하면 레지스트리에서 서비스가 삭제됨.
이때, 등록된 모든 서비스가 해제되는 것을 방지하기 위해 자기 보호 모드가 필요한것이다.

레지스트리 등록 여부/캐싱 여부

eureka.client.register-with-eureka : 레지스트리에 자신을 등록할지에 대한 여부
eureka.client.fetch-registry : 레지스트리에 있는 정보를 가져올지에 대한 여부
만약 해당 속성을 true 로 설정 시 검색할 때마다 Eureka Server 를 호출하는 대신 레지스트리가 로컬로 캐싱됨
또한 30초마다 Eureka Client 가 유레카 레지스트리 변경 사항 여부 재확인함

Eureka에 대한 용어 정리

  • Service Registration: 서비스가 자기 자신의 정보를 Eureka에 등록하는 행동
  • Service Registry: 서비스가 스스로 등록한 정보들의 목록, 가용한 서비스들의 위치 정보로 갱신됨
  • Service Discovery: 서비스 클라이언트가 요청을 보내고자 하는 대상의 정보를 Service Registry를 통해 발견하는 과정
  • Eureka Client: 서비스들의 위치 정보를 알아내기 위해 Eureka에 질의하는 서비스를 가리킴 (like Service consumer)
  • Eureka Service: Eureka Client에 의해 발견의 대상이 되도록 Eureka에 등록을 요청한 서비스를 가리킴 (like Service provider)
  • Eureka Server: Eureka Service가 자기 자신을 등록(Service Registration)하는 서버이자 Eureka Client가 가용한 서비스 목록(Service Registry)을 요청하는 서버
  • Eureka Instance: Eureka에 등록되어 목록에서 조회 가능한 Eureka Service를 의미
profile
개발자가 되고 싶다

0개의 댓글