[241122 TIL]

MSA 학습

  • 보안구성
  • Config
  • 분산추적
  • 이벤트 드리븐

보안구성

  • 마이크로서비스 아키텍처에서는 각 서비스가 독립적으로 배포되고 통신하기 때문에 보안이 매우 중요
  • 데이터 보호, 인증 및 권한 부여, 통신 암호화 등을 통해 시스템의 보안성을 확보해야 함

✏️

jwt - 변조, 수정의 보안을 말하는거 즉, 데이터 무결성을 확인 페이로드 안에 데이터(정보) 확인을 못하게 암호화한다를 뜻하는 게 아님

gateway 만 알고 나머지는 사용자가 접근못하게 방화벽 처리 19091로만 접속가능하게


Spring Cloud Config

  • 분산 시스템 환경에서 중앙 집중식 구성 관리를 제공하는 프레임워크
  • 애플리케이션의 설정을 중앙에서 관리하고, 변경 사항을 실시간으로 반영
  • Git, 파일 시스템, JDBC 등 다양한 저장소를 지원
  • 중앙 집중식 구성 관리: 모든 마이크로서비스의 설정을 중앙에서 관리
  • 환경별 구성: 개발, 테스트, 운영 등 환경별로 구성을 분리하여 관리 가능
  • 실시간 구성 변경: 설정 변경 시 애플리케이션을 재시작하지 않고도 실시간으로 반영할 수 있음

✏️

Config 서버가 native 프로필로 로컬 파일 시스템을 사용할 경우, 파일 변경을 자동으로 감지하지 않음

그래서 config 가 변경되면 config 서버는 재실행해줘야함!


분산 추적

  • 분산 시스템에서 서비스 간의 요청 흐름을 추적하고 모니터링하는 방법
  • 각 서비스의 호출 관계와 성능을 시각화하여 문제를 진단하고 해결할 수 있도록 도움
  • 트레이스(Trace) : 하나의 요청이 시작부터 끝까지 각 서비스를 거치는 전체 흐름을 나타냄
  • 스팬(Span) : 분산 추적에서 가장 작은 단위로, 특정 서비스 내에서의 개별 작업 또는 요청을 나타냄
  • 컨텍스트(Context): 요청이 서비스 간에 전달될 때 함께 전파되어, 각 서비스가 요청의 전체 흐름에 대한 정보를 가질 수 있게함
  • 필요성
    • 마이크로서비스 아키텍처에서는 여러 서비스가 협력하여 하나의 요청을 처리
    • 서비스 간의 복잡한 호출 관계로 인해 문제 발생 시 원인을 파악하기 어려울 수 있음
    • 분산 추적을 통해 각 서비스의 호출 흐름을 명확히 파악하고, 성능 병목이나 오류를 빠르게 진단할 수 있음

이벤트 드리븐 아키텍처

  • 시스템에서 발생하는 이벤트(상태 변화나 행동)를 기반으로 동작하는 소프트웨어 설계 스타일
  • 이벤트는 비동기적으로 처리되며, 서비스 간의 느슨한 결합을 통해 독립적으로 동작할 수 있게함
  • 이벤트: 시스템 내에서 발생하는 상태 변화나 행동을 나타내는 메시지
  • 이벤트 소스: 이벤트를 생성하여 이벤트 버스에 전달하는 역할
  • 이벤트 핸들러: 이벤트를 수신하여 처리하는 역할
  • 이벤트 버스: 이벤트 소스와 이벤트 핸들러 간의 메시지 전달을 중개
  • 장점
    • 느슨한 결합
      • 서비스 간의 강한 종속성을 제거하여 독립적인 개발과 배포가 가능
      • 이벤트 기반 통신을 통해 서비스 간의 결합도 낮춤
    • 확장성
      • 수평 확장이 용이하여 대규모 시스템에서 유용
      • 이벤트 프로듀서와 컨슈머를 독립적으로 확장 가능
    • 비동기 처리
      • 이벤트를 비동기적으로 처리하여 시스템의 응답성 향상
      • 요청과 응답을 비동기적으로 처리하여 성능 최적화
  • 단점
    • 복잡성 증가
      • 이벤트 기반 통신으로 인해 시스템의 복잡성 증가 가능
      • 이벤트 흐름과 상태 관리를 체계적으로 설계 필요
    • 장애 전파
      • 이벤트 실패 시 다른 서비스로 장애가 전파될 수 있음
      • 이벤트 재처리 및 장애 복구 메커니즘 구현 필요

+ Recent posts