반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 자바스크립트
- ElasticSearch
- k8s
- 알고리즘정렬
- java
- kubernetes
- Spring
- 오블완
- 김영한
- 티스토리챌린지
- 예제로 배우는 스프링 입문
- 스프링
- effectivejava
- Effective Java 3
- 코딩테스트
- 스프링부트
- 스프링 핵심원리
- JavaScript
- Effective Java
- 스프링핵심원리
- 카카오 면접
- 자바
- Sort
- 엘라스틱서치
- 클린아키텍처
- 이차전지관련주
- 이펙티브자바
- 알고리즘
- 이펙티브 자바
- 카카오
Archives
- Today
- Total
Kim-Baek 개발자 이야기
Spring Cloud Config 본문
Spring Cloud Config란?
Spring Cloud Config는 마이크로서비스 아키텍처에서 애플리케이션의 설정을 외부에서 관리할 수 있도록 도와주는 구성 관리 솔루션입니다. 이를 통해 다양한 환경(개발, 테스트, 운영 등)에서 애플리케이션 설정을 중앙에서 관리하고 배포할 수 있습니다.
주요 특징
- 외부 구성 관리: 애플리케이션의 설정 파일(application.properties, application.yml 등)을 Git, SVN, 파일 시스템 등 외부 저장소에 저장하여 중앙에서 관리할 수 있습니다.
- 환경별 설정: 각 서비스와 환경에 맞는 별도의 설정을 쉽게 관리할 수 있습니다. 예를 들어, 개발 환경과 운영 환경에서 다른 데이터베이스 설정을 적용할 수 있습니다.
- 버전 관리: Git과 같은 버전 관리 시스템을 사용하여 설정 변경 이력을 추적하고 롤백할 수 있습니다.
- 동적 구성 갱신: Spring Cloud Bus와 연동하여 설정 변경 시 애플리케이션을 재시작하지 않고도 실시간으로 구성 값을 갱신할 수 있습니다.
- 보안: 민감한 정보(예: 데이터베이스 비밀번호)를 암호화하여 저장하고, 필요 시 복호화하여 사용할 수 있습니다.
구성 요소
- Config Server: 설정 파일을 외부 저장소로부터 읽어와 클라이언트 애플리케이션에 제공하는 서버입니다.
- Config Client: Config Server에서 설정을 가져와 사용하는 애플리케이션입니다. 일반적으로 마이크로서비스 각각이 Config Client로 동작합니다.
- 외부 저장소: 설정 파일이 저장되는 장소로, Git 리포지토리, SVN, 파일 시스템 등을 사용할 수 있습니다.
동작 방식
- Config Server 설정: Config Server는 외부 저장소(Git, SVN 등)와 연동되며, 각 애플리케이션의 설정 파일을 읽어들입니다.
- Config Client 설정: 각 마이크로서비스는 Config Client로 설정되어 있으며, Config Server에 요청하여 필요한 설정 파일을 가져옵니다.
- 애플리케이션 시작 시 설정 로드: 애플리케이션이 시작될 때 Config Client는 Config Server로부터 설정 파일을 받아와 애플리케이션에 적용합니다.
- 설정 변경 및 갱신: 설정 파일이 변경되면 Config Server는 변경된 설정을 Config Client에 알리고, 애플리케이션은 이를 실시간으로 반영할 수 있습니다.
설정 방법
1. Config Server 설정
의존성 추가 (Gradle 예시)
dependencies {
implementation 'org.springframework.cloud:spring-cloud-config-server'
}
애플리케이션 클래스에 @EnableConfigServer 추가
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
application.yml 설정 예시
server:
port: 8888
spring:
cloud:
config:
server:
git:
uri: https://github.com/your-repo/config-repo
clone-on-start: true
2. Config Client 설정
의존성 추가 (Gradle 예시)
dependencies {
implementation 'org.springframework.cloud:spring-cloud-starter-config'
}
application.yml 설정 예시
spring:
application:
name: your-service-name
cloud:
config:
uri: http://localhost:8888
bootstrap.yml 파일 생성 (필수)
spring:
application:
name: your-service-name
cloud:
config:
uri: http://localhost:8888
3. 설정 파일 관리
Git 저장소 구조 예시
config-repo/
├── your-service-name/
│ ├── application.yml
│ ├── application-dev.yml
│ └── application-prod.yml
└── another-service/
├── application.yml
├── application-dev.yml
└── application-prod.yml
장점
- 중앙 집중식 관리: 모든 서비스의 설정을 한 곳에서 관리할 수 있어 유지보수가 용이합니다.
- 환경 별 구성 지원: 다양한 환경에 맞춘 설정을 쉽게 적용할 수 있습니다.
- 버전 관리: 설정 변경 이력을 추적하고 롤백할 수 있어 안정적인 운영이 가능합니다.
- 동적 구성 갱신: 애플리케이션을 재시작하지 않고도 설정을 실시간으로 변경할 수 있습니다.
반응형
'개발 > Spring' 카테고리의 다른 글
Apache Kafka 란? (0) | 2024.11.10 |
---|---|
RabbitMq 란 (1) | 2024.11.09 |
Spring Quartz 란? (0) | 2024.11.07 |
[스프링 핵심원리] 24. 스프링 빈 조회 - 기본 (0) | 2021.10.27 |
[스프링 핵심원리] 23. 컨테이너에 등록된 모든 빈 조회 (0) | 2021.10.25 |
Comments