모든 Application은 설정이 필요합니다. DB주소와 접속 정보는 어떻고 연동할 Server의 주소는 뭐고 기타 등등 환경별로 다르게 쓰고 싶을 경우 주석을 풀었다 걸었다 해본 경험이 있을 것이다.
그러다 application.propertis 같은 환경에 따라 설정을 다르게 할 수 있는 방법이 나와서 지금도 많이 이용하고 있습니다. 환경별로 (local, dev, stage, prod 등등) 설정 파일을 분리하여 profile을 사용해 배포가 가능하게 되었습니다. 하지만 이방법은 설정 파일이 변경되면 다시 빌드&배포를 해야 한다는 점입니다.
클라우드환경으로 넘어오면서 서버가 많아지는게 흔해졋슴다. 이런 상황에 동일한 Application에 다양한 환경으로 배포를 해야 하는 필요성이 생겼으며 이런 필요성을 효율적으로 관리하기 위해 해당 설정을 환경별로 중앙에서 관리를 해야 할 필요성이 생겼습니다.

Spring Cloud Config의 경우 코드와 설정을 분리하기 위해설정 파일들을 외부의 Git Repository에 보고나합니다.
Spring Cloud Config Server의 경우 Git에 올라가 있는 properties, yml로 작성한 설정들을 내려주며, Spring Boot로 작성된 Application의 경우 bootRun시 해당 설정을 http로 받아서 사용하게 됩니다.
따라서 100개던 1000개던 동일한 환경과 설정으로 Application 구동이 가능하여 설정을 중앙에서 관리를 할 수 가 있으며 중요한 점이 Spring Cloud Server의 경우 설정을 Json으로 내려주고 있는 것입니다.

그렇기에 어떤 언어라도 해당 설정을 가져다 쓸 수 있습니다. 대중적인 JSON 포맷과 RestAPI를 지원한다는 점에서 Spring Cloud는 매우 유연한 Platform이라고 생각이 됩니다.

Spring Cloud Config Server를 사용하기 위해선 @EnableConfigServer 를 붙여줘야 한다.
