2025. 3. 4. 12:13ㆍSpring Microservice
🚀 Spring Cloud Configuration Server 구축 및 설정
🎯 Spring Cloud Config Server란?
Spring Cloud Config Server는 중앙 집중식 설정 관리 서버로, 여러 마이크로서비스가 Git, SVN, HashiCorp Vault 등의 설정 저장소에서 설정을 가져올 수 있도록 합니다.
✅ 왜 설정 서버가 필요한가?
- 설정을 코드에서 분리하여, 애플리케이션을 재배포하지 않고 설정 변경 가능
- 중앙 집중식 관리로 설정 일관성 유지
- 환경별 설정(개발, 테스트, 운영) 을 효율적으로 관리
- 보안 강화를 위해 민감한 정보(Vault 등 활용) 별도 저장 가능
📌 Spring Cloud Config Server는 단독 실행이 아닌 Spring Boot 애플리케이션 내에 임베드하여 운영하는 방식이 일반적입니다.
🛠 Spring Cloud Configuration Server 구축 방법
📌 1️⃣ Spring Initializr를 활용한 프로젝트 생성
- Spring Initializr(https://start.spring.io)에서 프로젝트 생성
- 프로젝트 설정:
- Project: Maven
- Language: Java
- Spring Boot Version: 최신 안정 버전 선택
- Group: com.optimagrowth
- Artifact: configserver
- Name: Configuration Server
- Description: Configuration Server
- Package Name: com.optimagrowth.configserver
- Packaging: JAR
- Java Version: 17
- Dependencies:
- ✅ Spring Boot Actuator (서비스 모니터링)
- ✅ Spring Cloud Config Server (설정 서버)
📌 2️⃣ pom.xml 설정 (Maven 프로젝트)
Spring Boot 및 Spring Cloud 의존성을 포함한 pom.xml 파일 예제
📌 pom.xml 주요 항목
1️⃣ Spring Boot 및 Spring Cloud 버전 관리
2️⃣ Config Server 및 Actuator 의존성 추가
3️⃣ Spring Cloud BOM (Bill of Materials) 사용 → 하위 의존성 자동 관리
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.4.3</version> <!-- Spring Boot version -->
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.optimagrowth</groupId>
<artifactId>configserver</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>Configuration Server</name>
<description>Configuration Server</description>
<url/>
<licenses>
<license/>
</licenses>
<developers>
<developer/>
</developers>
<scm>
<connection/>
<developerConnection/>
<tag/>
<url/>
</scm>
<properties>
<java.version>17</java.version>
<!-- Spring Cloud version to use -->
<spring-cloud.version>2024.0.0</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- Spring Cloud projects and other dependencies needed to run the ConfigServer -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement> <!-- Spring Cloud BOM (Bill of Materials) definition -->
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
📌 Spring Cloud BOM(Bill of Materials) 사용으로 하위 의존성을 자동 관리하여 호환성을 유지
📌 3️⃣ Config Server 애플리케이션 코드 작성
Spring Boot 애플리케이션에 Config Server 활성화
package com.optimagrowth.configserver;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
✅ @EnableConfigServer 어노테이션 추가 → Spring Cloud Config Server 활성화
📌 4️⃣ bootstrap.yml 파일 생성
📌 bootstrap.yml 파일은 Spring Cloud에서 일반적인 application.yml보다 먼저 로드
📌 Config Server의 애플리케이션명, 포트, Git 저장소 경로 등 설정
spring:
application:
name: config-server # Config Server 애플리케이션 이름
server:
port: 8071 # 설정 서버 포트
📌 설정 서버의 포트를 8071로 설정 (기본값은 8888)
📌 5️⃣ 설정 저장소 연결 (Git 활용)
📌 Config Server는 Git을 활용하여 설정을 중앙에서 관리 가능
📌 Git 저장소를 Config Server의 설정 원본으로 사용하려면 application.yml에 Git 저장소 경로 추가
spring:
cloud:
config:
server:
git:
uri: https://github.com/my-config-repo # 설정이 저장된 Git 저장소
default-label: main # 기본 브랜치 지정
clone-on-start: true # 서버 시작 시 Git 저장소 클론
✅ Git 저장소에서 설정을 가져와 애플리케이션에 제공
🏆 Spring Cloud Configuration Server 도입 효과
문제 | Config Server 사용 시 해결 |
설정 변경 시 코드 배포 필요 | 설정 변경 후 애플리케이션 재배포 없이 즉시 반영 |
설정 관리가 복잡함 | 중앙 집중식 관리로 설정 일관성 유지 |
보안 문제 발생 가능 | 민감한 데이터 암호화 및 보안 저장소 활용 가능 |
설정 변경 후 서비스 재시작 필요 | 클라이언트가 자동으로 변경 사항 감지하여 반영 |
🎯 Summary
✅ Spring Cloud Config Server는 마이크로서비스의 설정을 중앙 집중식으로 관리
✅ Git, HashiCorp Vault 등 다양한 저장소와 연동 가능
✅ 설정 변경 시 애플리케이션을 재배포하지 않고도 즉시 반영 가능
✅ 보안이 중요한 설정 정보는 Vault 등 보안 저장소 활용 필수
💡 이제 Spring Cloud Config Server를 활용하여 효과적인 마이크로서비스 설정 관리 시스템을 구축해보세요! 🚀
- Spring Cloud Config Server 부트스트랩 클래스 설정 및 파일 시스템 저장소 구성
- Setting up the configuration files for a service
'Spring Microservice' 카테고리의 다른 글
Spring Cloud Config Server bootstrap 클래스 설정 및 파일 시스템 저장소 구성 (1) | 2025.03.04 |
---|---|
Integrating Spring Cloud Config with a Spring Boot client (0) | 2025.03.04 |
On managing configuration (0) | 2025.03.04 |
5.Controlling your configuration with the Spring Cloud Configuration Server (0) | 2025.03.04 |
The DevOps story: Building for the rigors of runtime (2) | 2025.03.03 |