MSA 환경구성 (Spring Cloud 기반)

HoJeong Choi·2025년 4월 6일
0

MSA

목록 보기
1/2
post-thumbnail

MSA 환경구성 (Spring Cloud 기반)

Spring Cloud Gateway (API Gateway)

  • 역할: 모든 외부 요청을 받아서 내부 마이크로서비스로 전달하는 프론트 도어

  • 기능: 인증/인가, 라우팅, 로드밸런싱, CORS처리, 로깅, 모니터링

Spring Cloud Config Server

  • 역할: 마이크로서비스의 설정 파일(yml, properties 등)을 중앙에서 관리하는 서버
  • application-dev.yml, user-service.yml 이런 설정 파일들을 Git에 올려두면, Config Server가 각 서비스에 주입
  • 설정 변경 후 서버 재시작 없이 자동 갱신 (Spring Cloud Bus + Actuator) 가능

Spring Cloud Bus + RabbitMQ - 선택사항

  • Config Server 의 변경사항을 실시간으로 반영하려면 필요한 서버
  • 기존에는 설정이 바뀌면 서비스들을 재시작하거나 /actuator/refresh를 직접 호출하였으나, Spring Cloud Bus는 이 과정을 자동화
  • 메시지 브로커(RabbitMQ 등)를 통해 설정 변경 이벤트를 퍼뜨리는 역할
    1. Config Server로 /actuator/busrefresh 요청을 보내면, Bus가 이를 구독한 모든 서비스에게 알림
    2. 각 서비스는 자동으로 설정을 재로드
Git 저장소
   │
[설정 변경]
   │
   ▼
Config Server
   │
   └─▶ /actuator/busrefresh 호출
          │
          ▼
     RabbitMQ (topic: springCloudBus)
          │
          ▼
각 마이크로서비스 (bus를 통해 설정 자동 refresh)

정리

기능Spring Cloud Config Server만Config + Bus + RabbitMQ
설정 조회OO
설정 변경 후 자동 반영X (수동 refresh 필요)O (자동 broadcast)
설정 동기화 방식서비스당 /refresh메시지 브로커 통한 broadcast
추가 구성 요소없음RabbitMQ, Bus 설정 필요

Spring Cloud Eureka (Service Discovery Server) - 선택 사항

  • 역할: 마이크로서비스들의 위치(IP, PORT)를 관리하는 서비스 레지스트리
  • 마이크로서비스들은 동적으로 생성/종료될 수 있어서, 고정된 주소로 접근하지 못하고, Eureka를 통해 이름 기반으로 동적으로 찾아가게 함.

분산 추적 & 모니터링

┌────────────────────┐       ┌───────────────┐
│ Spring Boot 서비스 │──────▶│ OpenTelemetry │───┐
└────────────────────┘       └───────────────┘   │
             │                                   ▼
             │ (메트릭)                      ┌────────────┐
             └─────────────────────────────▶│ Prometheus │
             │                               └────────────┘
             │ (로그)                       ┌────────────┐
             └─────────────────────────────▶│ Loki        │
             │ (트레이스)                   ┌────────────┐
             └─────────────────────────────▶│ Tempo       │

                                 ▲
                                 │
                          ┌────────────┐
                          │  Grafana   │
                          └────────────┘
과거 구성대체 구성 (권장)
SleuthMicrometer Tracing
ZipkinGrafana Tempo
actuator/prometheusPrometheus
Zipkin UIGrafana
  • 통합 모니터링 : Grafana
  • 로그수집 검색 : ELK Stack (Elasticsearch, Logstash, Kibana) 또는 Grafana Loki

0개의 댓글