✅ 서비스 디스커버리
1. MSA에서 각 서비스의 위치를 동적으로 관리하고 찾아주는 기능
2. 각 서비스는 등록 서버에 자신의 위치를 등록하고, 다른 서비스는 이를 조회하여 통신
- Discovery : 발견
✔️ Eureka
1.넷플릭스가 개발한 서비스 디스커버리 서버
2. 모든 서비스 인스턴스의 위치를 저장하는 중앙 저장소 역할 수행
3. 서비스 인스턴스의 상태를 주기적으로 확인하여 가용성 보장 (헬스 체크)
- 서비스 인스턴스 : 실행 중인 서비스의 개별적인 복사본, 동일한 서비스를 여러 개의 인스턴스로 실행 가능
✔️ Eureka 작업
1. Eureka 서버 설정
2. Eureka 클라이언트 설정
3. 서비스 등록
4. 서비스 디스커버리
5. 헬스 체크 및 장애 처리
- Eureka 서버 : 서비스 레지스트리를 구성하는 중앙 서버
- 레지스트리 : 서비스 인스턴스의 메타데이터와 상태 정보를 저장하고 관리하는 데이터베이스와 같은 역할을 하는 중앙 저장소. 레지스트리의 구성 요소에는 서비스 인스턴스, 메타데이터, 헬스 체크가 있다.
- 헬스 체크 : 주기적으로 서비스 인스턴스의 상태 확인, 모니터링
✅ 실습
# Eureka Server
1. Eureka Server 디펜던시 추가하여 프로젝트 1개 생성
2. ServerApplication.java 에 @EnableEurekaServer 추가
3. application.properties에 통신을 위한 설정
# Eureka Client
1. Eureka Discovery Client 디펜던시 추가하여 프로젝트 2개 생성
2. 클라이언트들의 application.properties에 통신을 위한 설정
✔️ Eureka Server
❗ Eureka Server 디펜던시 추가하여 프로젝트 1개 생성
→ spring Initializr 에서 Eureka Server 디펜던시 추가한 프로젝트 생성
→ 관리를 위해 파일 명을 package name으로 변경하는 걸 권장
❗ ServerApplication.java 에 @EnableEurekaServer 추가
- @EnableEurekaServer : Eureka를 사용하는 MSA에서 Eureka 서버를 활성화하기 위해 추가하는 어노테이션
❗ application.properties에 통신을 위한 설정
- server.port : 서버의 포트 설정
- eureka.client.register-with-eureka=false : 다른 유레카 서버에 자신을 클라이언트로 등록할지 여부에 대한 설정
- eureka.client.fetch-registry=false : 다른 유레카 서버로부터 레지스트리 정보를 가져올지 여부에 대한 설정
- eureka.instance.hostname=localhost : 유레카 서버 인스턴스의 호스트 이름 설정, 유레카 서버가 자신의 호스트 이름을 다른 서비스에 알릴 때 사용
- eureka.client.service-url.defaultZone=http://localhost:19090/eureka/ : 유레카 클라이언트가 유레카 서버와 통신하기 위해 사용할 기본 서비스 URL 설정. 즉, 서버의 엔드포인트 설정
- 엔드포인트 : 클라이언트와 서버 간의 상호작용을 위한 접속 지점
✔️ Eureka Client
❗ Eureka Discovery Client 디펜던시 추가하여 프로젝트 2개 생성
→ spring Initializr 에서 Eureka Client디펜던시 및 그 외 필요한 디펜던시 추가한 프로젝트 2개 생성
→ 관리를 위해 파일 명을 package name으로 변경하는 걸 권장
- Link Gradle Project : Gradle 프로젝트를 IntelliJ의 작업 공간에 연결하고 설정하는 과정
→ 인텔리제이 우측의 Gradle에서 Client 프로젝트들 추가
❗ 클라이언트들의 application.properties에 통신을 위한 설정
- spring.application.name : name을 통해 Eureka 서버가 client 들을 명확히 식별 가능
- server.port : 해당 클라이언트의 port 번호 설정
- eureka.client.service-url.defaultZone=http://localhost:19090/eureka/ : 유레카 클라이언트가 유레카 서버와 통신하기 위해 사용할 기본 서비스 URL 설정, 유레카 서버의 포트와 호스트 이름을 정확히 지정해야 함
✔️ RUN
→ 서버 → 클라이언트 순으로 실행
→ http://localhost:19090/으로 접속
→ 서버만 실행시키고 클라이언트를 실행시키지 않은 경우 디스커버리 가능한 인스턴스가 없다.
→ 클라이언트 실행 후 http://localhost:19090/으로 접속해보면 위와 같은 결과가 나타난다.
'스파르타 > TIL' 카테고리의 다른 글
2024.08.08 | 캐싱 전략 (0) | 2024.08.08 |
---|---|
2024.08.07 | 이벤트 드리븐 아키텍처 (0) | 2024.08.08 |
2024.08.05 | Observability ( Logs vs Traces vs Metrics ) (0) | 2024.08.06 |
2024.08.02 | RestTemplate vs WebClient vs FeignClient (0) | 2024.08.04 |
2024.07.31 | MSA 전체 아키텍처 (0) | 2024.08.01 |