💡 Today 요약
오늘은 MSA 강의 1주차를 수강했다
다 처음 듣는 용어들이라 생소하고.. 낯설었지만 자주 반복해서 들으니 대충 감이 오는 것 같다
반복 학습하여 내 것으로 만들자
💡 What I did?
- 알고리즘 문제
- MSA 1-1 ~ 1-5 수강
💡 What I Learned?
MSA
`MSA`(Microservices Architecture)는 애플리케이션을 독립적으로 배포하고 관리할 수 있는 작은 서비스들로 나누어 구성하는 소프트웨어 아키텍처 스타일을 말한다.
각 서비스는 `특정 비즈니스 기능`을 담당하며, `독립적`으로 개발, 배포, 확장될 수 있다.
따라서 특정 기능에 대한 성능 최적화와 확장이 용이하다.
Spring Cloud
`Spring Cloud`는 MSA 구현을 위한 다양한 도구와 프레임워크를 제공하는 Spring의 확장 플랫폼이다.
MSA를 쉽게 구현하고 운영할 수 있도록 돕는다.
Spring Cloud는 MSA를 지원하는 다양한 도구 모음을 제공한다.
주요 모듈로는 서비스 등록과 디스커버리를 위한 `Eureka`, 클라이언트 사이드 로드 밸런싱과 API 게이트웨이를 위한 `Ribbon과 Gateway`, 그리고 분산 추적을 위한 `Sleuth` 등이 있다.
오늘은 서비스 디스커버리 `Eureka`와 `FeignClient` `Ribbon`을 배웠다.
Eureka
먼저 `서비스 디스커버리`란 MSA에서 각 서비스의 위치를 동적으로 관리하고 찾아주는 기능을 수행한다.
`Eureka`란 넷플릭스가 개발한 서비스 디스커버리 서버이다. 해당 서버는 서비스 레지스트리를 구성하는 중앙 서버로 각 서비스를 `Eureka`서버에 등록하여 사용한다.
`spring-cloud-starter-netflix-eureka-client` 의존성을 사용하고, 애플리케이션 이름만 설정파일에 있으면 `Eureka`에 등록된다.
실습에서는 Eureka server 하나에 같은 기능을 하는 인스턴스 2개를 연결해보겠다.
먼저 프로젝트 생성 시 `Eureka Service` 디펜던시를 추가하여 프로젝트를 생성한다.
@SpringBootApplication
@EnableEurekaServer
public class ServerApplication {
public static void main(String[] args) {
SpringApplication.run(ServerApplication.class, args);
}
}
그 뒤 서버의 어플리케이션에 `EnableEurekaServer` 어노테이션을 추가하여 서버를 설정해준다.
설정파일은 다음과 같이 설정한다.
spring.application.name=server
server.port=19090
# 유레카 서버에 자신을 등록할지 여부 설정
# true로 설정하면 유레카 클라이언트가 유레카 서버에 자신을 등록함
eureka.client.register-with-eureka=false
# 유레카 서버로부터 레지스트리를 가져올지 여부 설정
# 유레카 서버에서는 일반적으로 false로 설정하여, 레지스트리를 가져오지 않도록 함
eureka.client.fetch-registry=false
# 유레카 서버 인스턴스의 호스트 이름 설정
# 유레카 서버가 자신의 호스트 이름을 다른 서비스에 알릴 때 사용
eureka.instance.hostname=localhost
# 유레카 클라이언트가 유레카 서버와 통신하기 위해 사용할 기본 서비스 URL 설정
eureka.client.service-url.defaultZone=http://localhost:19090/eureka/
그리고 클라이언트 어플리케이션의 설정 파일에는 다음과 같이 설정한다.
spring.application.name=first
server.port=19091
# 유레카 클라이언트가 유레카 서버와 통신하기 위해 사용할 기본 서비스 URL 설정
# 유레카 서버의 포트와 호스트 이름을 정확히 지정해야 함
eureka.client.service-url.defaultZone=http://localhost:19090/eureka/
서버와 클라이언트들을 실행한 뒤 localhost:19090/에 접속하면 두 개의 인스턴스가 있는 것을 확인할 수 있다.
정리하자면
`Eureka`는 여러 마이크로서비스를 한 곳에 등록하고, 그 서비스들의 위치를 관리하는 서비스 레지스트리 역할을 한다.
각 마이크로서비스는 자신의 위치(호스트와 포트 정보)를 Eureka 서버에 등록하고, 다른 서비스들은 Eureka를 통해 이 정보를 조회하여 서로를 발견하고 통신할 수 있다.
'공부 > Spring' 카테고리의 다른 글
[Spring Cloud] 서킷 브레이커 (Resilience4j) (0) | 2024.08.05 |
---|---|
[Spring Cloud] 클라이언트 사이드 로드 밸런싱 (FeignClient와 Ribbon) (0) | 2024.08.05 |
Spring Framework 각 계층의 역할 / 비즈니스 로직은 누구의 역할일까? (0) | 2024.07.08 |
Springboot 의존성 주입이란? @Autowired의 원리와 동작 과정 (0) | 2024.06.26 |
@Entity 에 @NoArgsConstructor, @AllArgsConstructor는 언제 붙이는걸까? (0) | 2024.06.20 |