이 영역을 누르면 첫 페이지로 이동
일반인의 웹 개발일기 블로그의 첫 페이지로 이동

일반인의 웹 개발일기

페이지 맨 위로 올라가기

일반인의 웹 개발일기

웹 개발과 관련된 모든 이야기

[MSA] Service Discovery Server 이해하기 (3)

  • 2022.11.22 11:02
  • 개발 이야기/MSA
반응형

MSA는 클라우드 환경에서 수많은 서비스들이 자동 스케일링, 확장 등 서비스 인스턴스가 수시로 생성되고 또 소멸을 반복하게 되면서 서비스의 정보(IP, PORT 등)는 계속해서 변경되는데 계속해서 변경되는 서비스를 식별해서 호출하기는 상당히 어렵다.

 

그래서 많은 서비스들을 유지 관리하기 위해 서비스 디스커버리 패턴을 적용할 필요가 있다.


서비스 디스커버리 (Service Discovery)
서비스 인스턴스를 식별하여 서비스를 등록하고 등록한 서비스의 검색을 수행한다.

 

서비스 디스커버리 서버의 동작 방식에 따라 Client Side, Server Side 방식이 존재한다.

 

Client Side Discovery

Client Side Discovery는 클라이언트가 서비스를 호출할 때 디스커버리 서버에 서비스의 위치를 확인하여 해당 서비스를 호출하는 방식이다.

Client Side Service Discovery

장점

  1. 서비스별로 소프트웨어적으로 로드 밸런싱을 구현할 수 있다.
  2. 상대적으로 간단해서 구현하기 쉽다.

단점

  1. 서비스별로 로직을 구현해야 하기 때문에 종속성이 올라간다.
  2. 언어, 프레임워크 별로 따로 구현을 해야 한다.

하드웨어 장비없이 소프트웨어적으로 로드 밸런싱의 방법을 구현하는 방식은 비용적으로도 메리트가 있는 것 같다.

대신 서비스별로 다른 언어, 다른 프레임워크를 사용한다면 따로 구현을 또 해줘야하는 단점이 있다. 대표적으로는 넷플릭스의 유레카(Eureka)가 대표적이다.

 

Server Side Discovery

Server Side Discovery는 클라이언트가 로드 밸런서(프록시)를 호출하면 로드 밸런서에서 디스커버리 서버에 서비스의  위치를 확인하여 해당 서비스로 라우팅하는 방식이다.

Server Side Service Discovery

장점

  1. 디스커버리 로직을 클라이언트로부터 분리하여 클라이언트 측에서는 구현할 필요가 없다.

단점

  1. 배포 환경에 구축이 되어야 하며, 설정 및 관리가 필요하다.
  2. 서비스 디스커버리 서버가 죽으면 전체 시스템이 동작하지 않을 수 있다.

클라이언트 측에는 구현할 필요가 없어 의존성이 떨어지게 되는 점은 좋지만 그래서 더 많은 관리를 필요로 하는 것 같다.

대표적인 예로는 AWS Elastic Load Balancer(ELB)가 있다.


어떤 방식이 옳다고는 딱 잡아 말하진 못하지만 모든 기술 및 기능들은 운영 상황에 맞게 사용하면 된다.

 

간단하게 서비스 디스커버리 서버에 대한 필요성과, 동작 방식 대한 장단점을 정리해 봤고

아래 링크에서 실제 구현 소스를 확인해보자!

 

[MSA] Spring Boot로 Service Discovery 구축하기 - Netflix OSS Eureka Server

 

[MSA] Spring Boot로 Service Discovery 구축하기 - Netflix OSS Eureka Server

이전 글에서 이야기했듯이 MSA에서는 기본적으로 여러 서비스를 등록하고 등록한 서비스의 검색을 수행하는 서비스 디스커버리 서버(Service Discovery Server)가 필요하다. 디스커버리 서버 Client-Side

diary-developer.tistory.com

 

MSA에 대하여 (4) - Config Server

MSA에서 서비스가 많아지면서 그만큼 설정정보 파일도 많아지게 되었는데 설정 파일을 서비스에 적용하려면 서버를 재기동해야 한다. 만약 공통으로 사용하는 설정이라고 생각해보자. 그럼 변

diary-developer.tistory.com

 

반응형

'개발 이야기 > MSA' 카테고리의 다른 글

[MSA] Service Discovery 구축하기 - Spring Boot + Netflix OSS Eureka Server  (0) 2022.12.02
[MSA] API Gateway 구축하기 - Spring Boot + Spring Cloud Gateway  (0) 2022.12.02
[MSA] Config Server 이해하기 - Spring Cloud Config (4)  (0) 2022.11.22
[MSA] API Gateway 이해하기 - Spring Cloud Gateway (2)  (0) 2022.11.21
[MSA] MSA 개념 이해하기 (1)  (2) 2022.11.21

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [MSA] API Gateway 구축하기 - Spring Boot + Spring Cloud Gateway

    [MSA] API Gateway 구축하기 - Spring Boot + Spring Cloud Gateway

    2022.12.02
  • [MSA] Config Server 이해하기 - Spring Cloud Config (4)

    [MSA] Config Server 이해하기 - Spring Cloud Config (4)

    2022.11.22
  • [MSA] API Gateway 이해하기 - Spring Cloud Gateway (2)

    [MSA] API Gateway 이해하기 - Spring Cloud Gateway (2)

    2022.11.21
  • [MSA] MSA 개념 이해하기 (1)

    [MSA] MSA 개념 이해하기 (1)

    2022.11.21
다른 글 더 둘러보기

정보

일반인의 웹 개발일기 블로그의 첫 페이지로 이동

일반인의 웹 개발일기

  • 일반인의 웹 개발일기의 첫 페이지로 이동
반응형

검색

메뉴

  • 홈
  • 태그
  • 방명록

카테고리

  • 분류 전체보기 (47)
    • 사이드 프로젝트 (3)
      • 크롤링 (2)
    • 개발 이야기 (18)
      • MSA (7)
      • Spring Boot (3)
      • JPA (0)
      • Docker (1)
      • Javascript (2)
      • AWS (Amazon Web Services) (5)
      • Jenkins (0)
    • Database (4)
      • PostgreSQL (2)
      • MySQL (1)
      • Oracle (1)
    • 에러 정리 (4)
      • Docker (1)
      • JPA (1)
      • Python (1)
      • PostgreSQL (1)
    • 운영체제 (3)
      • Linux (3)
    • 게임 (8)
      • 마인크래프트(Minecraft) (2)
      • 팰월드(PalWorld) (6)
    • 워킹홀리데이 (6)
      • 일본 워킹 홀리데이 (6)

공지사항

인기 글

최근 글

정보

흔하디흔한개발자의 일반인의 웹 개발일기

일반인의 웹 개발일기

흔하디흔한개발자

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © 흔하디흔한개발자. Designed by Fraccino.

티스토리툴바