Config

김정용·2024년 8월 7일
0

Today I Learned

목록 보기
6/21

config = configuration = 환경설정 이라는 뜻이다.

Spring Cloud Config

분산 시스템 환경에서 중앙 집중식 구성 관리 를 제공하는 프레임 워크를 말한다.

애플리케이션의 설정을 중앙에서 관리한다는 점이 특징이고, 변경사항이 생겼을 때 실시간으로 반영할 수 있다.

주요 특징

  • 중앙 집중식 구성 관리
    앞서 말했듯 모든 서비스의 설정을 중앙에서 관리한다.

  • 환경별 구성
    개발, 테스트, 운영 등 환경별로 구성을 분리하여 관리할 수 있다.

  • 실시간 구성 변경
    설정 변경 시 재시작없이도 변경사항을 실시간으로 반영할 수 있다.

실시간 구성 변경

실시간으로 구성변경사항을 반영하는 방법으로는 다음과 같은 방법들이 존재한다.

  1. Spring Cloud Bus
    메시징 시스템을 사용하여 변경사항을 전파하는 방법이다.

  2. 수동 구성 갱신
    Spring Actuator의 /actuator/refresh 엔드포인트를 이용한다.

  3. Git 저장소 사용
    Spring Cloud Server가 Git 저장소에서 설정파일을 읽어오게 설정하여 구성 변경사항을 반영할 수 있다. 여러 서비스 간에 일관성있는 구성변경을 반영할 때 유용하다.


분산추적 및 로깅

분산 추적은 말 그대로 흐름을 추적하고 모니터링하는 방법을 말한다.

서비스의 호출 성능을 시각화해서 문제를 진단하는데 도움을 준다.

  • 트레이스, 스팬, 컨텍스트

사용 이유

MSA 에서는 여러 서비스가 각각의 어플리케이션으로 나누어져있고 이 어플리케이션들은 각각 하나의 요청을 처리하게 된다.

ex) 주문 어플리케이션 -> 메뉴 어플리케이션 -> 유저 어플리케이션

여러 요청들이 복잡하게 얽히게 되면 문제가 발생했을때, 어디서 처음 문제가 발생한지 알아보기 힘들 수 있다.

이러한 이유로 호출 흐름을 명확하게 파악하고 문제파악을 빠르게 하기 위해 분산추적을 사용한다.

Zipkin

트레이스 데이터를 수집하고 시각화하는 분산 추적 시스템

대시보드를 이용해 호출 흐름을 시각화 해준다. -> 성능 병목이 일어나는 부분 확인 가능


Spring Cloud Stream

이벤트 드리븐 아키텍처

시스템에서 발생하는 이벤트를 기반으로 동작하는 SW 설계 스타일

이벤트들은 loosely coupled를 통해 독립적으로 동작할 수 있다.

장점 👍

  • 느슨한 결합
    이벤트 기반 통신을 사용해 서비스 간의 결합도를 낮춤

  • 확장성
    수평 방향으로의 확장이 용이해 대규모 시스템에서 유용하다.

  • 비동기처리
    이벤트를 비동기적으로 처리 -> 시스템 응답성 향상

단점 👎

  • 복잡성 증가
    이벤트 기반 통신이기때문에 복잡성이 증가 할 수 있다.

  • 장애 전파
    다른 서비스로의 장애 전파 가능성이 있다.

Spring의 확장인 Spring Cloud와 제공해주는 프레임워크, 라이브러리 등을 적절히 잘 사용하게되면 더 다양한 기능들을 더 간편하게 사용할 수 있다.

profile
누군가의 롤모델이 될 때까지😇

0개의 댓글