Spring Cloud 란? (1)
마이크로서비스 개발을 위해 다양한 도구와 서비스를 제공하는 스프링 프레임워크의 확장이며, 마이크로서비스 아키텍처를 쉽게 구현하고 운영할 수 있도록 도와준다. 주요 기능 ▼서비스 등
seungg8361.tistory.com
MSA에서는 여러 개의 독립적인 서비스들이 존재하며, 이 서비스들이 동적으로 변할 수 있기 때문에, 서로의 위치(IP, 포트 등)를 알기 어렵다.
Eureka 서버는 각 서비스의 정보를 관리하고 제공하여, 서비스 간의 통신을 원활하게 만들어 줄 수 있다.
만약 마이크로서비스 간 통신이 필요한 상황이 온다면, Eureka 서버에서 해당 서비스의 위치(IP, 포트)를 조회해서 클라이언트가 원하는 요청을 Eureka 서버를 통해 대상 서비스의 위치를 동적으로 가져와서 통신한다.
Eureka는 기본 헬스 체크 엔드포인트인 /actuator/health 를 통해 일 정 시간마다 서비스가 살아있는지 확인하고, 이 신호를 기반으로 서비스의 가용성을 판단하게 된다.
만약 일정 시간 동안 헬스 체크 신호가 없으면, 해당 서비스를 제거하여 장애 처리해서 다른 서비스의 접근을 차단한다.
Eureka 서버를 설정하기 위해 의존성을 추가해보자
build.gradle ▼
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'
application.properties ▼
# 애플리케이션 이름을 server로 지정
spring.application.name=server
server.port={포트번호}
# eureka 서버는 client가 아니므로 false, 만약 true 라면 eureka 서버에 자신을 등록하는 것
eureka.client.register-with-eureka=false
# eureka 서버는 다른 서비스 정보를 가져올 필요가 없으므로 false, eureka 서버에서 서비스 목록을 가져올지 결정
eureka.client.fetch-registry=false
eureka.instance.hostname=localhost
# eureka client가 eureka 서버와 통신할 때 사용
eureka.client.service-url.defaultZone=http://localhost:{포트번호}/eureka/
이렇게 Eureka 서버의 설정이 끝났다면 서비스로 등록할 애플리케이션을 등록해보자
또 다른 프로젝트를 생성해서 설정해보자
build.gradle ▼
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
application.properties ▼
spring.application.name={현재 애플리케이션을 구분할 수 있는 이름}
server.port={현재 애플리케이션을 구분하기 위한 포트번호}
eureka.client.service-url.defaultZone=http://localhost:{eureka서버에서 설정한 포트번호}/eureka/
모든 설정을 마치고 애플리케이션을 모두 실행시킨 뒤, eureka 서버에 설정한 port로 접속해보면 해당 서비스들이 모두 등록된 것을 볼 수 있다.
'🔥스파르타 TIL (MSA)' 카테고리의 다른 글
Spring Cloud 란? (5) - 분산 추적 (0) | 2025.03.10 |
---|---|
Spring Cloud 란? (3) - 서킷 브레이커 (1) | 2025.03.08 |
Spring Cloud 란? (4) - API Gateway (0) | 2025.02.11 |
Spring Cloud 란? (2) - 클라이언트 사이드 로드 밸런싱 (0) | 2025.02.08 |
Spring Cloud 란? (1) (0) | 2025.02.08 |