hailey-it
hailey-IT
hailey-it
전체 방문자
오늘
어제
  • 전체보기 (29)
    • MSA (4)
    • Redis (2)
    • CS (4)
      • Nerwork (3)
      • Security (1)
    • JPA (1)
    • 대규모 스트림처리 (3)
    • Git (2)
    • Mac M1 (9)
      • Mac (4)
      • App (4)
    • Programming (4)
      • Android (2)
      • IntelliJ (1)
      • React (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

최근 댓글

최근 글

hailey-it

hailey-IT

MSA와 Spring Cloud
MSA

MSA와 Spring Cloud

2024. 8. 7. 01:30

 

MSA란?

- Microservice Architecture

- 하나의 애플리케이션을 여러 개의 독립적인 서비스로 분리하여

개발, 배포, 유지보수를 용이하게 하는 소프트웨어 아키텍처 스타일

 

- 각 서비스는 특정 비즈니스 기능을 수행하며,

서로 독립적으로 배포되고 확장될 수 있음

 

- 서비스 간의 통신은 주로 HTTP/HTTPS, 메시지 큐

등을 통해 이루어짐

 

MSA 주요 특징

- 독립적인 배포 가능성

: 각 서비스는 독립적으로 배포할 수 있으며,

다른 서비스에 영향을 주지 않고 업데이트 할 수 있음

 

- 작은 팀 구성

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

 

- 기술 스택의 다양성

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

 

MSA의 장점

- 확장성

: 각 서비스는 독립적으로 확장 가능,

특정 기능에 대한 성능 최적화가 용이

 

- 유연성

: 다양한 기술 스택을 사용하여 서비스별 최적화 가능

 

- 독립적 배포

: 서비스별로 독립적 배포가 가능하여 배포 주기를 단축

 

- 작은 팀 구성

: 서비스별 작은 팀으로 구성되어 민첩한 개발 가능

 

MSA의 단점

- 복잡성

: 서비스간 통신, 데이터 일관성 유지,

트랜잭션 관리 등의 복잡성이 증가

 

- 운영비용

: 각 서비스의 모니터링, 로깅, 장애 대응 등을

개별적으로 관리해야 하므로 운영 비용이 증가

 

- 데이터 관리

: 분산된 데이터베이스로 인해

데이터 일관성 유지가 어려울 수 있음

 

- 네트워크 지연

: 서비스 간의 통신이 네트워크를 통해 이루어지므로

지연 시간이 발생할 수 있음

 

 

Spring Cloud란?

- 마이크로 서비스 개발을 위해 다양한 도구와

서비스를 제공하는 스프링 프레임워크의 확장

 

- 마이크로서비스 아키텍처를 쉽게 구현하고

운영할 수 있도록 도움

 

주요 기능

- 서비스 등록 및 디스커버리: Eureke, Consul, Zookeeper

 

- 로드 밸런싱: Ribbon, Spring CLoud LoadBalancer

 

- 서킷 브레이커: Hystrix, Resilience4j

 

- API 게이트웨이: Zuul, Spring Cloud Gateway

 

- 구성 관리: Spring Cloud Config

 

- 분산 추적: Spring Cloud Sleuth, Zipkin

 

- 메시징: Spring Cloud Stream

 

Spring Cloud 주요 모듈

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

Eureke

- 넷플릭스가 개발한 서비스 디스커버리 서버로,

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

 

특징

- 서비스 레지스트리

: 모든 서비스 인스턴스의 위치를 저장하는 중앙 저장소

 

- Health check

: 서비스 인스턴스의 상태를 주기적으로 확인하여 가용성을 보장

 

2. 로드 밸런싱

Ribbon

- 넷플릭스가 개발한 클라이언트 사이드 로드 밸런서로,

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

 

특징

- 서버 리스트 제공자

: Eureka로 부터 서비스 인스턴스 리스트를 제공받아

로드밸런싱에 사용

 

- 로드밸런싱 알고리즘

: 라운드 로빈, 가중치 기반 등 다양한 로드 밸런싱

알고리즘 지원

 

- Failover

: 요청 실패 시 다른 인스턴스로 자동 전환

 

3. 서킷 브레이커

Hystrix

- 넷플릭스가 개발한 서킷 브레이커 라이브러리로,

서비스 간의 호출 실패를 감지하고 시스템의 

전체적인 안정성을 유지

 

특징

- 서킷 브레이커 상태

: 클로즈드, 오픈, 하프-오픈 상태를 통해 

호출 실패를 관리

 

- Failback

: 호출 실패 시 대체 로직을 제공하여

시스템 안정성 확보

 

- 모니터링

: Hystrix Dashboard를 통해

서킷 브레이커 상태 모니터링

 

Resilience4j

- 자바 기반의 경량 서킷 브레이커 라이브러리로,

넷플릭스 Hystrix의 대안으로 개발

 

특징

- 서킷 브레이커

: 호출 실패를 감지하고 서킷을 열어

추가적인 호출을 차단하여 시스템의 부하를 줄임

 

- Failback

: 호출 실패 시 대체 로직을 실행하여

시스템의 안정성을 유지

 

- 타임아웃 설정

: 호출의 응답 시간을 설정하여

느린 서비스 호출에 대응할 수 있음

 

- 재시도

: 재시도 기능을 지원하여 

일시적인 네트워크 문제 등에 대응할 수 있음

저작자표시 (새창열림)

'MSA' 카테고리의 다른 글

API 게이트웨이 (Spring Cloud Gateway)  (0) 2024.08.21
클라이언트 사이드 로드 밸런싱 FeignClient  (1) 2024.08.20
Eureka 서비스 디스커버리  (0) 2024.08.19
    'MSA' 카테고리의 다른 글
    • API 게이트웨이 (Spring Cloud Gateway)
    • 클라이언트 사이드 로드 밸런싱 FeignClient
    • Eureka 서비스 디스커버리
    hailey-it
    hailey-it

    티스토리툴바