250922 MSA, Spring Cloud

uni.gy·2025년 9월 22일

MSA

주요 특징
  • 독립적인 배포 가능성: 각 서비스는 독립적으로 배포할 수 있으며, 다른 서비스에 영향을 주지 않고 업데이트할 수 있다.

  • 작은 팀 구성: 각 서비스는 작은 팀이 독립적으로 개발하고 관리할 수 있음

  • 기술 스택의 다양성: 각 서비스는 적절한 기술 스택을 자유롭게 선택할 수 있음

  • 장점: 확장성, 독립적 배포, 유연성

  • 단점: 복잡성 증가(서비스 간 통신, 데이터 일관성 유지), 운영 비용 증가(모니터링, 로깅)

  • Spring Cloud

    1. 서비스 등록 및 디스커버리(Eureka)

      마이크로서비스 아키텍처에서 각 서비스의 위치를 동적으로 관리

      • 서비스 레지스트리: 모든 서비스 인스턴스 위치를 저장하는 중앙 저장소
      • 헬스체크: 서비스 인스턴스의 상태를 주지적으로 확인하여 가용성을 보장
    2. 로드 밸런싱(Ribbon)

      서비스 인스턴스 간의 부하를 분산

      • 서버 리스트 제공자
      • 로드 밸런싱 알고리즘: 라운드 로빈, 가중치 기반 등
      • Failover: 요청 실패 시 다른 인스턴스로 자동 전환
    3. 서킷 브레이커(Hystrix, Resilience4j)

      서비스 간의 호출 실패를 감지하고 시스템의 전체적인 안정성을 유지

      Resilience4j 특징

      • 서킷 브레이커: 호출 실패를 감지하고 서킷을 열어 추가적인 호출을 차단하여 시스템의 부하를 줄임
      • Fallback: 호출 실패 시 대체 로직을 실행하여 시스템의 안정성을 유지
      • 타임아웃 설정: 호출의 응답 시간을 설정하여 느린 서비스 호출에 대응할 수 있음
      • 재시도: 재시도 기능을 지원하여 일시적인 네트워크 문제 등에 대응할 수 있음
    4. API 게이트웨이(Zuul, Cloud gateway)

      • 라우팅 및 필터링
      • 보안
      • 효율성
    5. Spring Cloud Config

      중앙 집중식 설정 관리를 제공

      • Config 서버
      • Config 클라이언트
      • 설정 갱신: 설정 변경 시 서비스 재시작 없이 실시간으로 반영 (@RefreshScope, Spring Cloud Bus)
    profile
    한결같이

    0개의 댓글