Spring Cloud Config 이해하기

Config Server가 필요한 이유

공통 설정을 각 application.properties 에서 관리

MSA 구조의 프로젝트를 진행하다 보면 많은 수의 애플리케이션(마이크로 서비스)이 만들어집니다. 만약 10개의 애플리케이션이 동일하게 사용하는 공통 외부 설정을 각각 따로 가지고 있다면 유지 보수가 힘들어집니다. 코드가 중복될 때와 비슷한 문제가 발생합니다. 공통 외부 설정 값이 변경되어야 한다면 10개 애플리케이션의 설정 값을 실수 없이 모두 변경해 줘야 합니다. Spring Cloud Config는 Spring Boot Actuater와 협력하여 이러한 문제를 해결하도록 돕습니다.

공통 설정을 Config Server 에서 관리

Spring Cloud Config를 활용하면 Config Server를 통해 외부 설정을 중앙에서 관리할 수 있습니다. 개발자가 상황에 따라 github, file, jdbc 등 여러 방식 중 하나를 선택하여 외부 설정을 관리하기 위한 환경을 만들 수 있습니다. 우리가 개발한 애플리케이션들은 구동 될 때 Spring Boot Actuator를 통해 프로젝트 내의 application.properties 파일 대신 Config Server에게 설정 정보를 요청할 수 있게 됩니다.

Config Server의 한계

Config Server를 통해서 설정을 관리하는 애플리케이션을 실행하기 전에는 반드시 Config Server가 실행되어 있어야 필요한 정보를 요청하여 응답받을 수 있으며, 통신에 문제가 발생할 수도 있다는 점을 고려해야 합니다.

또한, 서비스 운영 중에 외부 설정 변경이 필요할 수 있습니다. 변경된 설정을 적용하는 가장 간단한 방법은 설정값을 변경한 후 애플리케이션을 재시작하여 변경된 설정을 적용하는 것입니다. Config Server를 통해서 외부 설정을 중앙에서 관리하더라도 (a)변경된 설정을 적용하기 위해 많은 수의 애플리케이션을 매번 재시작해야하는 상황에 놓일 수 있습니다. 그리고 애플리케이션이 재시작되면 클라이언트의 요청을 처리할 수 있는 상태로 준비되기까지 상당 시간이 소요됩니다. (b)재시작 시 준비되지 않은 상태에서 들어오는 요청은 처리할 수 없다는 점도 고려해야 합니다. 운영 중 외부 설정을 변경할 때 생길 수 있는 이러한 문제들(a, b)을 해결하기 위해서 Spring Cloud Bus를 적용할 수 있습니다. 많은 수의 애플리케이션을 재시작하지 않고도 변경된 설정을 반영할 수 있는 기능을 제공합니다.

참고 자료

스스로 경험하며 얻은 깨달음을 공유하기 좋아하며, 세상이 필요로 하는 코드를 작성하기 위해 노력하는 개발자입니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다