001 Reactive

1. Reactive Mircroservice의 Reactive #

Spring cloud #

img.png img_1.png

Reactive systems의 핵심 가치 #

img_2.png

Responsive(응답성) #

  • 요구사항
    • 문제를 신속하게 탐지하고 효과적으로 대처
    • 신속하고 일관성 있는 응답 시간 제공
    • 신뢰할 수 있는 상한선을 설정하여 일관된 서비스 품질을 제공
  • 결과
    • 가능한 한 즉각적으로 응답
    • 사용자의 편의성과 유용성의 기초
    • 오류 처리를 단순화
    • 일반 사용자에게 신뢰를 조성하고, 새로운 상호작용 촉진

Resilient(복원력) #

  • 요구사항
    • 복제, 봉쇄, 격리, 위임에 의해 실현
    • 장애는 각각의 구성 요소에 포함 (봉쇄)
    • 구성 요소들은 서로 분리 (격리)
    • 복구 프로세스는 다른(외부의) 구성 요소에 위임 (위임)
    • 필요한 경우 복제를 통해 고가용성이 보장 (복제)
  • 결과
    • 장애에 직면하더라도 응답성을 유지
    • 시스템이 부분적으로 고장이 나더라도, 전체 시스템 을 위험하게 하지 않고 복구 할 수 있도록 보장
    • 구성 요소의 클라이언트는 장애를 처리하는데에 압박을 받지 않습니다

Elastic(유연성) #

  • 요구사항
    • 경쟁하는 지점이나 중앙 집중적인 병목 현상이 존재하지 않도록 설계
    • 구성 요소를 샤딩하거나 복제하여 입력을 분산
    • 실시간 성능을 측정하는 도구를 제공
    • 응답성 있고 예측 가능한 규모 확장 알고리즘을 지원
  • 결과
    • 작업량이 변화하더라도 응답성을 유지
    • 입력 속도의 변화에 따라 이러한 입력에 할당된 자원을 증가시키거나 감소
    • 상품 및 소프트웨어 플랫폼에 비용 효율이 높은 방식으로 유연성을 제공

Message Driven(메시지 기반) #

  1. 비동기 통신: 구성 요소는 서로 비동기적으로 메시지를 주고 받으며, 독립적인 실행을 보장한다.
  2. 메시지 큐: 메시지 큐를 생성하고 배압을 적용하여 부하를 관리하고 흐름을 제어한다.
  3. 복원력: 구성 요소 사이에 경계를 형성하여 직접적인 장애의 전파를 막고 장애를 메시지로 지정해서 위치와 상관 없이 동일하게 장애를 관리한다.
  4. 탄력성: 구성 요소 사이에 경계를 형성하여 각각의 구성 요소를 독립적으로 확장 가능하게 만들고, 자원을 더 쉽게 추가하거나 제거한다.

Reactive systems #

  • 핵심 가치: 가능한 한 즉각적으로 응답
  • 첫 번째 형태: 장애에 직면하더라도 응답성을 유지
  • 두 번째 형태: 작업량이 변화하더라도 응답성을 유지
  • 방법: 비동기 non-blocking 기반의 메시지 큐를 사용해서 통신한다 img_3.png

  1. 강의 : Spring Webflux 완전 정복 : 코루틴부터 리액티브 MSA 프로젝트까지_