Config server
- 마이크로서비스의 어떠한 설정(환경변수값, Spring cloud 설정 등)이 변경되었을때 서버 재시작 없이 동적으로 적용
- 마이크로서비스가 배포될때 제반 설정값들을 배포 대상 환경(개발계, 검증계, 운영계 등)에 맞게 적용
- 마이크로서비스를 Stateless하게 개발하기 위해서입니다. Stateless하게 만들어야 스케일링(마이크로서비스 인스턴스 서버 - 즉, 컨테이너의 증감)과 부담없는 재시작이 가능
실습
1. 의존성 및 config repository 설정
...
ext['springCloudVersion'] = 'Finchley.SR2'
...
dependencies {
compile('org.springframework.cloud:spring-cloud-config-server')
testCompile('org.springframework.boot:spring-boot-starter-test')
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
spring:
cloud:
config:
server:
git:
uri: https://github.com/whdals7337/spring-cloud-workshop-config-repository
@EnableConfigServer
@SpringBootApplication
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
2. Spring Boot Actuator 의존성 및 설정
Spring Boot Actuator란 Spring Boot 기반의 애플리케이션을 손쉽게 모니터링 할수 있는 데이터를 제공해주는 라이브러리이다. 웹의 상태 모니터링과 metric, traffic정보 그리고 database의 상태등을 알 수 있다. 이러한 모니터링 데이터를 직접 구현할 필요없이 간단한 설정으로 사용할 수 있다는 것이 큰 장점
...
ext['springCloudVersion'] = 'Finchley.SR2'
...
dependencies {
compile('org.springframework.boot:spring-boot-starter-web')
compile('org.springframework.cloud:spring-cloud-starter-netflix-eureka-client')
compile('org.springframework.cloud:spring-cloud-starter-config') // config 의존성 추가
compile('org.springframework.boot:spring-boot-starter-actuator') // starter-actuator 의존성 추가
testCompile('org.springframework.boot:spring-boot-starter-test')
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
spring boot 1.x 때는 추가적으로 무언가 해줄 필요는 없었지만
2.x 부터는 default로 대부분의 정보를 노출하지 않는 것으로 되어 있기 때문에 해당 부분을 변경해줘야한다.
아래 설정에서는 refresh만 허용하였지만 *를 통해서 전체 허용도 가능하며 exclude를 통해서 특정 endpoint를 제외한 나머지를 적용할수도 있다.
https://docs.spring.io/spring-boot/docs/current/reference/html/actuator.html
management:
endpoints:
web:
exposure:
include: refresh
bootstrap.yml 은 application.yml 전에 로드하게 되어 spring cloud configserver를 사용하는 경우 사용되는데 이유는 기본적으로 외부 소스에서 구성 속성을 로드하고 로컬 외부 구성 파일의 속성을 해독 하기 위해서 이다.
# bootstrap.yml
server:
port: 8082
spring:
application:
name: product
cloud:
config:
uri: http://127.0.0.1:8080
'Spring Cloud' 카테고리의 다른 글
Resilience4j, Spring Boot 설정 공부 (0) | 2021.09.25 |
---|---|
5. zuul - [Spring Cloud를 활용한 MSA 기초 온라인 강의 실습] (0) | 2021.06.18 |
4. Feign - [Spring Cloud를 활용한 MSA 기초 온라인 강의 실습] (0) | 2021.06.17 |
3. Eureka - [Spring Cloud를 활용한 MSA 기초 온라인 강의 실습] (0) | 2021.06.16 |
2. Ribbon - [Spring Cloud를 활용한 MSA 기초 온라인 강의 실습] (0) | 2021.06.15 |