반응형
해당 내용은 인프런 이도원님의 "Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)"를 듣고 정리한 내용입니다.
1. Spring Cloud Netflix Eureka란?
- Netflix Eureka란?
- 넷플릭스에서 MSA를 위해 Spring Cloud에 기부한 오픈 소스이다.
- MSA에서 회원, 상품, 주문 등등 각각의 서비스들에 대한 정보를 저장하여 외부에서 서비스 호출 시 그에 맞는 서비스 서버로 전달해주는 미들웨어이다.
2. Service Discovery?
- Client가 서비스를 호출할 때 서비스의 위치(즉, IP와 PORT 정보)를 알아야 호출할 수 있는데 이러한 정보들을 저장, 관리하는 것을 Service Discovery라고 한다.
- 구현 방법은 크게 Client-side Discovery 방식과 Server-side Discovery 방식이 있다.
- Client-side Discovery
- Client 서비스가 Service Registry에서 서비스의 위치를 찾아서 호출하는 방식으로 대표적으로 Netflix Eureka가 있다.
- Service 인스턴스의 위치는 인스턴스가 생성될 때 regitry에 등록되고, 인스턴스가 종료될 때 registry에서 삭제된다.
- 장점
- 상대적으로 간단하다.
- 클라이언트가 사용가능한 서비스를 알고 있어 서비스별로 개별적인 로드밸런싱 방법을 선택할 수 있다.
- 단점
- Client와 service registry간에 의존성이 발생한다.
- Client에서 service를 찾는 로직, 즉 discovery 로직을 구현해야한다.
- Server-Side Discovery
- 클라이언트가 별도의 로드밸런스를 통해 서비스 요청을 보내면 로드밸런서가 service Registry에 서비스 네트워크 주소를 질의한 후 사용가능한 서비스로 요청을 라우팅한다. 대표적으로는 AWS Elastic Load Balancer(ELB)가 있다.
- Client-Side Discovery와 동일하게 각 서비스는 Service Registry에 등록되고 해제된다.
- 장점
- discovery 관련된 세부 내용을 클라이언트로 분리할 수 있다.
- Client는 discovery 로직을 구현할 필요 없다.
- 단점
- 로드밸런서는 배포환경에 구축되어야 한다.
- 서비스 디스커버리가 죽게되면 전체 시스템이 동작하지 않기 때문에 높은 가용성이 요구되며 관리가 필요하다.
3.Spring Cloud와 Spring Boot와의 호환성
- Spring Cloud에서 지원되는 Spring Boot의 버전이 별로도 존재하기 때문에 맞는 버전을 선택하여야 한다.
4. Spring Cloud Netflix Eureka 프로젝트 생성 및 기본 설정
- 신규 프로젝트 생성
- Spring 프로젝트 생성
프로젝트 구성 시 이도원 강사님이 Maven 프로젝트로 구성하였기에 동일하게 Maven 프로젝트로 생성 - 스프링부트의 버전은 위에서 이야기 것과 같이 Spring Cloud 버젼별로 동작하는 스프링 Boot 버젼이 존재하기에 이 프로젝트는 Spring Cloud를 2020.0 버전을 사용할 예정이라 Boot Version을 2.5로 선택.
해당 프로젝트에서는 Eureka만 구축할 예정이기에 Dependecies에 Eureka만 선택하여 프로젝트 생성
- Spring 프로젝트 생성
- Eureka 서비스 레지스트리 등록
- Eureka 서버를 사용하기 위해서는 Eureka 서비스 레지스트리 등록이 필요하다.
SpringBootApplication 내에 @EnableEurekaServer 어노테이션 추가를 통해 레지스트리 등록을 한다.
- Eureka 서버를 사용하기 위해서는 Eureka 서비스 레지스트리 등록이 필요하다.
- Spring 프로퍼티 설정
- Eureka 서비스를 위한 프로퍼티 설정을 한다. *.properties 또는 *.yml 파일로 설정을 하며 해당 프로젝트에서는 yml 파일을 이용하여 설정한다.
- server.port : 하나의 웹서비스처럼 서버 역할을 해야하므로 서버를 올리기 위한 port를 지정한다.
- spring.application.name : 어플리케이션 이름을 지정한다.
- eureka.client.register-with-eureka
- true가 default 값이다.
- Eureka 클라이언트 역할을 수행하기 위한 설정 값으로 서버 역할만 수행하기 때문에 false로 설정한다. - eureka.client.fetch-registry
- true가 default값
- service registry에 있는 정보를 가져올지에 대한 설정으로 false 설정 시 Eureka server를 호출하지 않게 된다.
- true 시에는 Eureka Client가 service registry에서 변경 사항 여부 재확인.
- Eureka 서버 run 및 정상 여부 확인
- 브라우저에서 위에서 설정한 포트로 어플리케이션이 정상적으로 호출되는지 확인한다.
정상적으로 실행 시 아래와 같은 화면이 보여지게 된다.
- 브라우저에서 위에서 설정한 포트로 어플리케이션이 정상적으로 호출되는지 확인한다.
반응형
'Backend > Spring Cloud' 카테고리의 다른 글
Spring Cloud Config Server (0) | 2022.06.23 |
---|---|
Spring Cloud Gateway - Load Balancer (0) | 2022.06.21 |
Spring Cloud Gateway Filter (0) | 2022.04.19 |
Spring Cloud Gateway - 개념 및 프로젝트 생성 (0) | 2022.03.31 |
Spring Cloud Netflix Eureka - Client Load Balancer 설정 (0) | 2022.03.28 |