마이크로서비스 아키텍처(MSA)에서 애플리케이션은 여러 개의 독립적인 서비스로 분리된다는 것을 알고 있습니다.
각 서비스는 독립적인 배포, 확장, 유지보수가 가능하다는 장점이 있지만 이로 인해 설정 관리의 복잡성이 증가한다는 단점이 있습니다.
각 서비스는 자체적인 설정 파일 application.yml을 사용하여 다양한 의존성 설정과 구성 정보를 관리합니다. 이러한 설정 파일에는 데이터베이스 연결 정보, 서버 포트 번호, 외부 API 키 등 중요한 설정 정보가 포함됩니다.
서비스가 많아질수록 각 서비스의 설정을 관리하는 것은 점점 더 복잡해집니다.
또한 서비스에 필요한 설정 정보나 데이터가 변경될 필요가 있을 때, 이 설정 파일을 수정하려면 해당 서비스를 다시 배포하거나 서버를 재시작해야 합니다.
이 과정에서 배포 중 문제가 발생하면 서비스 중단이나 시스템 불안정 등의 심각한 문제가 발생할 수 있습니다.
즉 MSA에서는 여러 서비스가 서로 협력하여 전체 시스템을 구성하므로, 설정이 일관되게 유지되어야 합니다.
또한 예를 들어, 개발 환경에서는 중요한 정보가 테스트를 위해 파일에 암호화하지 않고 노출된 상태로 사용할 수 있습니다. 그러나 실제 운영 환경에서는 이러한 정보가 외부에 노출되면 안 되며, 철저한 보안이 필요합니다.
이러한 이유로 개발, 테스트, 운영 환경에서 각각 다른 설정이 필요합니다. 환경에 따라 설정 파일을 분리하여 관리해야 하는데, 이 과정은 번거롭고 오류를 발생시킬 수 있습니다.
이러한 문제를 해결하기 위해 Spring Cloud Config가 등장했습니다.
Spring Cloud Config는 다음과 같은 특징이 있습니다.
- 중앙 집중식 설정 관리
- 모든 애플리케이션의 설정을 중앙 서버에서 통합 관리하여 일관성을 유지합니다.
- 실시간 설정 반영
- 설정 변경 사항을 자동으로 감지하고 즉시 애플리케이션에 반영할 수 있습니다.
- 환경별 설정 관리
- 개발, 테스트, 운영 등 다양한 환경에 맞는 별도의 설정 파일을 지원하고 자동으로 적용할 수 있습니다.
- 버전 관리와 히스토리 추적
- Git 등 버전 관리 시스템과 통합되어 설정 파일의 변경 이력과 롤백을 관리할 수 있습니다.
- 다양한 저장소 지원
- Git, SVN, 파일 시스템 등 다양한 저장소에서 설정 파일을 불러올 수 있어 적응성이 높습니다.
Spring Cloud Config에 대한 자세한 내용과 실시간 설정 반영의 동작 확인은 아래의 포스팅에서 확인가능합니다! ▼
Spring Cloud Config는 마이크로서비스 아키텍처의 설정 관리 복잡성을 크게 줄여주며, 시스템의 안정성과 보안성을 높이는 데 도움을 준다.
여러 서비스가 원활하게 협력하며 일관된 설정을 유지할 수 있도록 지원함으로써, 개발자와 운영 팀이 보다 효율적이고 안전한 환경을 구축할 수 있는 아주 유용한 기능인 것 같다!
'TIL,일일 회고' 카테고리의 다른 글
[TIL, 일일 회고] 2024.08.08 - gitignore (gradle-wrapper.jar &properties) (0) | 2024.08.08 |
---|---|
[TIL,일일 회고] 2024.08.07 - Spring Cloud Stream이란❓ (0) | 2024.08.07 |
[TIL, 일일 회고] 2024.08.05 - Spring Cloud Gateway의 중요성 및 MSA 아키텍처에서의 역할 (0) | 2024.08.05 |
[TIL,일일 회고] 2024.08.04 - Spring Security를 통한 로그인 구현 (0) | 2024.08.04 |
[TIL,일일 회고] 2024.08.03 - SpringCloud 서킷 브레이커 (0) | 2024.08.03 |