config = configuration = 환경설정 이라는 뜻이다.
분산 시스템 환경에서 중앙 집중식 구성 관리
를 제공하는 프레임 워크를 말한다.
애플리케이션의 설정을 중앙
에서 관리한다는 점이 특징이고, 변경사항이 생겼을 때 실시간으로 반영할 수 있다.
중앙 집중식 구성 관리
앞서 말했듯 모든 서비스의 설정을 중앙에서 관리한다.
환경별 구성
개발, 테스트, 운영 등 환경별로 구성을 분리하여 관리할 수 있다.
실시간 구성 변경
설정 변경 시 재시작없이도 변경사항을 실시간으로 반영할 수 있다.
실시간으로 구성변경사항을 반영하는 방법으로는 다음과 같은 방법들이 존재한다.
Spring Cloud Bus
메시징 시스템을 사용하여 변경사항을 전파하는 방법이다.
수동 구성 갱신
Spring Actuator의 /actuator/refresh
엔드포인트를 이용한다.
Git 저장소 사용
Spring Cloud Server가 Git 저장소에서 설정파일을 읽어오게 설정하여 구성 변경사항을 반영할 수 있다. 여러 서비스 간에 일관성있는 구성변경을 반영할 때 유용하다.
분산 추적은 말 그대로 흐름을 추적하고 모니터링하는 방법을 말한다.
서비스의 호출 성능을 시각화해서 문제를 진단하는데 도움을 준다.
MSA 에서는 여러 서비스가 각각의 어플리케이션으로 나누어져있고 이 어플리케이션들은 각각 하나의 요청을 처리하게 된다.
ex) 주문 어플리케이션 -> 메뉴 어플리케이션 -> 유저 어플리케이션
여러 요청들이 복잡하게 얽히게 되면 문제가 발생했을때, 어디서 처음 문제가 발생한지 알아보기 힘들 수 있다.
이러한 이유로 호출 흐름을 명확하게 파악하고 문제파악을 빠르게 하기 위해 분산추적을 사용한다.
트레이스 데이터를 수집하고 시각화하는 분산 추적 시스템
대시보드를 이용해 호출 흐름을 시각화 해준다. -> 성능 병목이 일어나는 부분 확인 가능
시스템에서 발생하는 이벤트를 기반으로 동작하는 SW 설계 스타일
이벤트들은 loosely coupled를 통해 독립적으로 동작할 수 있다.
느슨한 결합
이벤트 기반 통신을 사용해 서비스 간의 결합도를 낮춤
확장성
수평 방향으로의 확장이 용이해 대규모 시스템
에서 유용하다.
비동기처리
이벤트를 비동기적
으로 처리 -> 시스템 응답성 향상
복잡성 증가
이벤트 기반 통신이기때문에 복잡성이 증가 할 수 있다.
장애 전파
다른 서비스로의 장애 전파 가능성이 있다.
Spring의 확장인 Spring Cloud와 제공해주는 프레임워크, 라이브러리 등을 적절히 잘 사용하게되면 더 다양한 기능들을 더 간편하게 사용할 수 있다.