본 포스팅은 인프런
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
강의를 기반으로 작성된 포스팅입니다.
Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA) - 인프런 | 강의
Spring framework의 Spring Cloud 제품군을 이용하여 마이크로서비스 애플리케이션을 개발해 보는 과정입니다. Cloud Native Application으로써의 Spring Cloud를 어떻게 사용하는지, 구성을 어떻게 하는지에 대해
www.inflearn.com
본문에 앞서
아래의 사진은 하나의 마이크로 서비스가
세가지 인스턴스에 의해서 확장되어 개발되는 경우이다.
일종의 로드밸런서 역할을 하는것처럼
부하분산 처리가 되어있다고 가정해보자.
하나의 PC에서 여러개의 서비스를 실행하려면
반드시 PORT를 나누어 실행하여야 한다.
따라서, 8080, 8081, 8082로 나누어져있다.
만약 가용할 수 있는 PC가 2대 이상이라면
서버 IP 1번, 2번, 3번 위 사진의 my-server숫자
방식으로 사용할 수 있다.
서버가 다르기 때문에 같은 포트로 사용할 수 있다.
Spring Cloud Netflix Eureka
우리가 만들고있는 모든 마이크로 서비스는 모두
Spring Cloud Netflix Eureka 라는 제품에 먼저 등록한다.
이렇게 Eureka가 해주는 역할을 Service Discovery라고 한다.
Service Discovery
외부에서 다른 서비스들이 마이크로 서비스를 검색하기 위해서 사용되는 개념.
일종의 전화번호부와 비슷하다.
key, value 형태로 저장된다고 생각하면된다.
기존 넷플릭스에서 사용하던 자사의 Cloud 기술을
스프링에 기부하여 사용할 수 있도록 만들어졌다.
1. 클라이언트는 제일먼저 자신이 필요한 요청 정보를
Load Balancer 혹은 API Gateway에 전달하게된다.
2. 요청 정보가 Service Discovery에 전달되어
필요한 정보가 어디에 있는지 응답받는다.
3. 응답받은 서버로 요청을 보내고 응답을 받는다.
Service Discovery 정리
각각의 마이크로 서비스가 어디에 누가 저장되어 있으며
요청 정보가 들어왔을때 그 요청정보에 따라서 필요한 서비스의 위치를
알려주는 역할을 한다.
사용하기
Spring Boot의 버전과 Spring Cloud의 호환 버전을
아래의 Spring Cloud 공식 홈페이지에서 확인하여 적용하자.
https://spring.io/projects/spring-cloud
Spring Cloud
Spring Cloud is an umbrella project consisting of independent projects with, in principle, different release cadences. To manage the portfolio a BOM (Bill of Materials) is published with a curated set of dependencies on the individual project. Go here to r
spring.io
Maven, Gradle 설정
Application 클래스에 @EnableEurekaServer 어노테이션 추가
- Eureka가 서버 역할을 하기위해서는 서버의 자격으로 등록해야한다.
그 작업을 해주는것이 @EnableEurekaServer 어노테이션이다.
즉, Service Discovery로써 어플리케이션을 기동한다 라는 뜻이다.
application.yml or application.properties
port
- Eureka 서버가 웹서비스의 성격으로 기동됨에 있어서
포트 번호를 지정하는 설정
spring.application.name
- 마이크로 서비스를 담당하는 Spring Cloud, Spring Boot
프레임워크에서 마이크로 서비스에 고유의 ID를 부여해야 하는데
그 ID의 역할로써 name을 등록한다.
eureka.client.register-with-eureka
eureka.client.fetch-registry
- Eureka 라이브러리가 포함된채 Spring Boot가 기동되면
기본적으로 Eureka 클라이언트의 역할로써 어딘가에 등록하는
작업을 실행하게 된다.
위 두가지는 설정하지 않으면 기본적으로 true로 설정되어
현재 작업하고 있는것을 클라이언트 역할로 전화번호부에
등록하듯이 자신의 정보를 자신에게 등록하기 때문에
false로 두어야한다.
참고
다시 말해서 Eureka 서버 자체는 기동을 하되
자기 자신의 정보를 외부에 있는 다른 마이크로 서비스가
Eureka 서버로부터 어떤 정보를 주고받는 역할을
할 필요가 없기 때문.
실행
아래 사진에서 설정한 포트로 실행되어
콘솔에 출력되는것을 볼 수 있다.
실행화면
가능하다면 localhost가 아닌 IP주소로 접속하는것을 권장한다.
위 사진은 유레카 대시보드 화면이다.
등록된 시간, 어떠한 서비스가 등록되어 있는지 조회가 가능하다.
'프로그래밍 공부 > Spring' 카테고리의 다른 글
Spring Cloud란? (0) | 2023.01.31 |
---|---|
AOP와 Spring AOP (0) | 2022.12.29 |
Spring Security란? (0) | 2022.01.19 |
Spring 컴포넌트 스캔, 의존관계 자동주입 (0) | 2021.12.31 |
Spring 싱글톤 컨테이너 (0) | 2021.12.30 |