본문 바로가기
정리/Spring Cloud

Spring Cloud Config

by Hudini30 2022. 8. 7.

Spring Cloud Config Server란?

분산 시스템에서 서버, 클라이언트 구성에 필요한 설정 정보를 외부 시스템에서 관리하기 위한 방법

하나의 중앙화 된 저장소에서 구성요소 관리 가능

각 서비스를 다시 빌드하지 않고, 바로 적용 가능

애플리케이션 배포 파이프라인을 통해 환경에 맞는 구성정보 사용하도록 할 수 있음.

 

사용하기

1.Config Server 

config-server dependency 추가

@EnableConfigServer 추가

 

관리 방법

Private Git Repository

server:
  port: 8888
spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          uri: https://github.com/askyclear/msa-study-config-info.git

 

Native File Repository

server:
  port: 8888
spring:
  application:
    name: config-server
  profiles:
    active:native
  cloud:
    config:
      server:
        native:
          search-location: file://${user.home}/your config path
        git:
          uri: https://github.com/askyclear/msa-study-config-info.git

2. Using Service

dependency 추가

spring-cloud-starter-config/ spring-cloud-starter-bootstrap /spring.cloud.bootstrap.enabled=true

bootstrap.yml 추가

spring:
  cloud:
    config:
      uri: http://127.0.0.1:8888
      name: ecommerce
  profiles:
    active: dev

설정 정보 변경 방법

1. 서버 재기동

2. Actuator refresh 를 통한 방법

ㄴ Spring Boot Actuator Dependency 추가 및 설정 

management:
  endpoints:
    web:
      exposure:
        include: refresh, health, beans, httptrace

ㄴ http://{serviceurl}/actuator/refresh

3. Spring Cloud Bus 사용

 ㄴ분상 시스템의 노드를 경량 메시지 브로커와 연결, 상태 및 구성에 대한 변경 사항을 연결된 노드에게 전달

 ㄴ bus-amqp Dependency 추가 및 mq 설정 추가 아래 설정은 rabbitmq 설정 추가했을때(Config Server, MSA Service들 전체)

spring:
  application:
    name: gateway-service
  rabbitmq:
    host: 127.0.0.1
    port: 5672
    username: guest
    password: guest

management:
  endpoints:
    web:
      exposure:
        include: refresh, health, beans, httptrace, busrefresh

 

 

RabbitMQ

 - 메시지 브로커

 - 초당 20+ 메시지를 소비자에게 전달

 - 메시지 전달 보장, 시스템 간 메시지 전달

 - 브로커, 소비자 중심

Kafka

 - 초당 100k+ 이상으 ㅣ이벤트 처리

 - Pub/Sub, Topic에 메시지 전달

 - Ack를 기다리지 않고 전달 가능

 - 생산자 중심

용어 정리

  • MOM ( Message Oriented Middleware, 메시지 지향 미들웨어 )
    • 독립된 서비스 간에 데이터를 주고받을 수 있게 연결해주는 소프트웨어
      • 비동기 방식으로 메시지를 전달
  • Message Broker
    • Publisher(송신자)로부터 전달받은 메시지를 Subscriber(수신자)로 전달해주는 중간 역할.
  • MQ ( Message Queue, 메시지 큐 )
    •  메시지 브로커와 MOM을 구현한 시스템
  • AMQP ( Advanced Message Queueing Protocol )
    • 메시지 지향, 큐잉, 라우팅(P2P, Publisher-Subcriber), 신뢰성, 보안
    • MOM을 위한 개방형 표준 응용 계층 프로토콜
    • Erlang, RabbitMQ, Kafka에서 사용

 

구현간 참조

config-server 에서 remote git을 연동했을때 org.springframework.cloud.config.server.environment.NoSuchLabelException: No such label: main 오류가 생겼을 경우 해당 repository에 main 브랜치가 없어서 생긴 문제이므로 생성.

 

참고

https://www.upsolver.com/blog/kafka-versus-rabbitmq-architecture-performance-use-case

'정리 > Spring Cloud' 카테고리의 다른 글

API gateway  (0) 2022.08.07
Service Discovery  (0) 2022.06.28

댓글