Github 소스코드
Service Discovery ?
- 보통의 경우 한 서비스에서 다른 서비스를 호출할 때 IP와 Port정보를 이용하여 해당 서비스를 식별하여 요청한다. 하지만 클라우드 환경에서는 IP와 Port정보가 Auto-scaling 등으로 인해 동적으로 바뀌게 된다. 그렇기 때문에 해당하는 서비스를 식별할 수 있는 다른 방법이 필요하다.
- Service Discovery는 서비스의 위치와 가용 상태 등을 관리하여 클라이언트 서비스가 요청할 서비스를 식별 가능토록 한다.
Service Discovery의 종류
- Client Side Discovery
- 생성된 서비스는 Service Registry에 서비스를 등록되고, 서비스를 사용할 클라이언트는 Service Registry에서 서비스의 위치를 찾아 호출하는 방식이다.
- Server Side Discovery
- 서비스를 사용할 클라이언트와 Service Registry 사이에 Load Balancer를 두는 방식이다.
- 클라이언트는 Load Balancer에 서비스를 요청하고 Load Balancer가 Service Registry에 호출할 서비스의 위치를 질의하는 방식이다.
Eureka Server
- 실습환경
- Spring boot 2.4.x
- Spring cloud 2020.0.0
- Dependency
- Eureka Server
- Springboot main클래스에 @EnableEurekaServer 설정
- .yml or .properties 설정
- 위 설정을 마치고 Springboot main메서드를 실행하고 해당 포트로 이동하면 Eureka Dashboard를 확인할 수 있다.
Test Service 작성
실습환경
- Spring boot 2.5.0
- Spring cloud 2020.0.3
- Eureka Discovery Client
- Spring web
- .yml or .properties 설정
- Test Service 실행 후 Eureka Server에 등록된 것을 확인
다양한 서버 구동 방법을 통한 여러 개 서비스 인스턴스 등록
방법 1 - IDE사용 (intellij Ultimate)
- Run/Debug Configurations
- 아래와 같이 설정
- 각각 실행
- Eureka Server에 2개 인스턴스가 등록된 것을 확인
방법 2 - Maven명령어 사용
- mvn spring-boot:run -Dspring-boot.run.jvmArguments='-Dserver.port=8082'
방법 3 - 컴파일 후 jar파일 실행
- mvn clean compile package
- 프로젝트 폴더에 target폴더가 생성
- target폴더의 jar파일 실행
- java -jar -Dserver.port=8082 ./target/project_name.jar
Random Port
여러 방식을 통해 프로젝트를 수행해보았다. 하지만 매번 실행마다 포트를 설정해주어야 하는 불편함이 있다.
- spring이 제공해주는 random port기능을 이용해보자.
- .yml or .properties 설정
- 포트번호를 0으로 설정한다.
- 포트번호를 0으로 설정한다.
- 두 개 인스턴스 등록
- 첫 번째 서비스는 IDE에서 실행
- 두 번째 서비스는 mvn명령어를 통해 실행
- mvn spring-boot:run
- 포트 번호를 따로 설정해주지 않아도 된다.
- 등록된 인스턴스 확인
- 등록된 인스턴스에 마우스 커서를 올리면 왼쪽 하단에 랜덤화된 포트번호를 확인 할 수 있다.

'Spring Cloud' 카테고리의 다른 글
| 패스트캠퍼스 챌린지 30일차 - Spring Cloud 1 (0) | 2021.10.05 |
|---|---|
| 🌱 Spring Cloud - MSA간 통신 (RestTemplate, Feign Client) 🌱 (0) | 2021.08.20 |
| 🌱 Spring Cloud - API Gateway Service (Load Balancing) 🌱 (0) | 2021.08.20 |
| 🌱 Spring Cloud - API Gateway Service (Routing) 🌱 (0) | 2021.08.20 |








