Reactive란?

무언가를 바꾸거나 예방하기 위해 먼저 행동하기 보다는 사건이나 상황에 반응하는

Reactive manifesto

  • 소프트웨어 아키텍처에 대한 선언문
  • Reactive system의 특성을 강조하고 구축에 필요한 가이드라인 제공
  • 4가지의 핵심 가치를 제시

Responsive

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

Resilient

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

Elastic

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

Message Driven

  • 요구사항
    • 비동기 메시지 전달에 의존
    • 명시적인 메시지 전달
    • 위치 투명 메시징을 통신 수단으로 사용
    • 논블로킹 통신
  • 결과
    • 구성 요소 사이에서 느슨한 결합, 격리, 위치 투명성을 보장하는 경계를 형성. 이 경계는 장애를 메시지로 지정하는 수단을 제공
    • 시스템에 메시지 큐를 생성하고, 모니터링하며 필요시 배압을 적용
    • 유연성을 부여하고, 부하 관리와 흐름제어를 가능하게
    • 단일 호스트든 클러스터를 가로지르든 동일한 구성과 의미를 갖고 장애를 관리
    • 수신자가 활성화가 되어 있을 때만 자원을 소비할 수 있기 때문에 시스템 부하를 억제
  • 정리
    1. 비동기 통신
      1. 구성 요소는 서로 비동기적으로 메시지를 주고 받으며, 독립적인 실행을 보장
    2. 메시지 큐
      1. 메시지 큐를 생성하고 배압을 적용하여 부하를 관리하고 흐름을 제어한다.
    3. 복원력
      1. 구성 요소 사이에 경계를 형성하여 직접적인 장애의 전파를 막고 장애를 메시지로 지정하여 위치와 상관없이 동일하게 장애를 관리한다.
    4. 탄력성
      1. 구성 요소 사이에 경계를 형성하여 각각의 구성 요소를 독립적으로 확장 가능하게 만들고, 자원을 더 쉽게 추가하거나 제거한다.

Reactive manifesto

가능한 한 즉각적으로 응답

장애에 직면하더라도 응답성을 유지

작업량이 변화하더라도 응답성을 유지

비동기 non-blocking 기반의 메시지 큐를 사용하여 통신

'웹프로그래밍 > WebFlux' 카테고리의 다른 글

Reactive Streams 구현 라이브러리  (0) 2023.07.24
Reactive Programming  (0) 2023.07.21
CompletionStage 인터페이스  (0) 2023.07.03
Future 인터페이스  (0) 2023.06.13
blocking과 non-blocking의 차이(I/O 관점)  (0) 2023.06.12

+ Recent posts