ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Service Discovery개념 및 netflix eureka 실습
    spring/cloud 2021. 4. 7. 13:00

    배경

    프로젝트에 적용한 기술을 공부하고 다듬는 것도 꾸준히 해야할 일이지만 새로운 기술을 배울 때만큼 열정적이지는 못한 것 같다. MSA아키텍처를 공부해야하긴 하고 미루고 미루다 인프런의 좋은 강의를 만난 것 같다.

     

     

    Service Discovery란?

    트래픽이 증가하면서 동일한 서비스를 제공하는 customer service를 증설했다고 하자. 이제 서비스를 이용하는 client는 여러 서버 중 적절히 하나를 골라 서비스를 요청하면 된다. 이때 서버를 고르는 작업을 따로 registry로 분리한 게 service discovery라고 생각하면 될 것 같다. client는 단지 service discovery에게 어떤 서버에게 서비스를 요청할지 물어보기만 하면 된다(Lookup) 이때 service discovery는 적절한 서버를 골라 그 서버의 IP와 포트정보만 넘겨주면 된다.

     

     

     

    spring cloud netflix eureka

     

    spring cloud netflix eureka는 위에서 언급한 service discovery서버 역할을 하는 대표적인 프레임워크다. 서버로 운영할 프로젝트를 생성하고 위처럼 의존성을 추가하자

     

    이후 application.yml에 다음과 같은 내용을 적자. 설정 내용을 보면 포트번호를 8761로 지정했고, 애플리케이션의 고유한 이름을 지정한 뒤, fetch-registry를 false로 둠으로써 스스로를 서버 검색 대상에서 제외하였고, register-with-eureka 또한 false로 둠으로써 서버 검색 등록 대상에서 제외하였다. 생각해보면 service discovery 서버는 당연히 서비스 서버의 대상에서 제외하는 게 맞다.

     

    이제 실행 클래스에 @EnableEurekaServer애노테이션 하나만 붙이면 모든 게 끝난다. 자세한 동작과정은 나중에 살펴보도록 하자.(이 시점 나도 모른다)

     

    실행한 후 브라우저로 http://localhost:8761로 접속해 보면

    예쁜 UI와 함께 현재 레지스트리에 등록된 인스턴스가 없는 걸 확인할 수 있다.(등록한 게 없으니 당연히 없다)

     

     

     

     

    인스턴스 등록하기

    이제 실제 서비스할 프로젝트를 생성하고 의존성에 위와 같이 클라이언트를 추가한다.

     

    포트를 0번으로 지정했는데 이는 현재 서버에서 비어 있는 포트 중 랜덤한 포트를 배정하라는 뜻이다. 인스턴스 아이디를 지정함으로써 service discovery의 UI를 통해 좀 더 명확한 이름을 확인할 수 있다. 이제 실행할 서버는 service discovery의 레지스트리에 등록되어야 하므로 옵션을 true로 켜주고 discovey의 URL을 적어주면 된다.

     

    마지막으로 애노테이션에 @EnableDiscoveryClient를 붙인 뒤 서버를 실행시키면 된다.

     

    그대로 잘 했다면 인스턴스가 등록된 걸 확인할 수 있다.

     

     

    마치며

    인프런 강의가 대략 27시간 정도던데 과연 얼마나 많은 클라우드 서비스를 이용해볼지 기대된다. 마음 같아선 이틀로 나눠 강의를 다 듣고 싶은데 좀 천천히 할 필요도 있는 것 같다.

    'spring > cloud' 카테고리의 다른 글

    Spring Cloud Gateway  (0) 2021.04.28
    Spring Cloud Config Server 구축  (0) 2021.04.28

    댓글

Designed by Tistory.