Micro (작은?) Service (서비스) Architecture (구조) : 독립적으로 실행 및 배포 가능한 작은 서비스들로 이루어진 구조 ➡️ 다수로 분산된 프로젝트
↔️ Monolithic Architecture (모놀리식 아키텍처) : 모든 서비스가 하나의 프로젝트 내에 존재하는 구조
서비스 간 API를 통한 상호작용 : 각 서비스의 엔드 포인트를 API 형태로 외부에 노출
분산 시스템에 필요한 다양한 기능들을 추상화하여 제공하는 라이브러리
Eureka Server : 30초에 한 번씩 등록된 서비스 목록 갱신
Application.java
: @EnableEurekaServer
어노테이션 추가
@EnableEurekaServer
@SpringBootApplication
public class EurekaApplication { ... }
application.yml
⭐spring:
application:
name: eureka
output:
ansi:
enabled: always
server:
port: 8761
eureka:
client:
register-with-eureka: false # 유레카 서버 본체이므로, 자신을 클라이언트로 등록하지 않음
fetch-registry: true # 캐싱 여부
➡️ http://localhost:8761 접속 시 등록된 서비스 목록 확인 가능 (아직 등록된 서비스 없음!)
Eureka Discovery Client : 서비스 시작 시 자신의 정보를 Eureka Server에 등록 + 30초마다 상태 전달
Application.java
: @EnableDiscoveryClient
어노테이션 추가
@SpringBootApplication
@EnableDiscoveryClient
public class MemberserviceApplication { ... }
application.yml
⭐server:
port: 0
spring:
application:
name: member-service # 서비스명
eureka:
instance: # 인스턴스 생성
instance-id:
# 인스턴스 id 랜덤 생성 : 랜덤 포트(0) 사용 시, 여러 개의 서비스가 실행되어도 0번 하나로 인식되는 경우 방지
${spring.application.name}:${spring.application.instance_id:${random.value}}
client:
register-with-eureka: true # 유레카 서버에 서비스 등록
fetch-registry: true # 유레카 서버가 갱신될 때마다 정보 가져옴
service-url:
defaultZone: http://localhost:8761/eureka/ # 유레카 서버 주소
➡️ http://localhost:8761 접속 시 member-service
가 등록된 것을 확인할 수 있다!
게이트웨이부터는 복잡하므로 다음 글에 계속..