W2AS2L
2023. 7. 5. 19:06
2023. 7. 5. 19:06
Reactive란?
무언가를 바꾸거나 예방하기 위해 먼저 행동하기 보다는 사건이나 상황에 반응하는
Reactive manifesto
- 소프트웨어 아키텍처에 대한 선언문
- Reactive system의 특성을 강조하고 구축에 필요한 가이드라인 제공
- 4가지의 핵심 가치를 제시
Responsive
- 요구사항
- 문제를 신속하게 탐지하고 효과적으로 대처
- 신속하고 일관성 있는 응답 시간 제공
- 신뢰할 수 있는 상한성을 설정하여 일관된 서비스 품질을 제공
- 결과
- 가능한 한 즉각적으로 응답
- 사용자의 편의성과 유용성의 기초
- 오류 처리를 단순화
- 일반 사용자에게 신뢰를 조성하고, 새로운 상호작용을 촉진
Resilient
- 요구사항
- 복제,봉쇄,격리,위임에 의해 실현
- 장애는 각각의 구성 요소에 포함(봉쇄)
- 구성 요소들은 서로 분리(격리)
- 복구 프로세스는 다른 구성요소에 위임(위임)
- 필요한 경우 복제를 통해 고가용성이 보장(복제)
- 결과
- 장애에 직면하더라도 응답성을 유지
- 시스템이 부분적으로 고장이 나더라도, 전체 시스템을 위험하게 하지 않고 복구 할 수 있도록 보장
- 구성 요소의 클라이언트는 장애를 처리하는데에 압박을 받지 않습니다.
Elastic
- 요구사항
- 경쟁하는 지점이나 중앙 집중적인 병목 현상이 존재하지 않도록 설계
- 구성 요소를 샤딩하거나 복제하여 입력을 분산
- 실시간 성능을 측정하는 도구를 제공
- 응답성 있고 예측 가능한 규모 확장 알고리즘을 지원
- 결과
- 작업량이 변화하더라도 응답성을 유지
- 입력 속도의 변화에 따라 이러한 입력에 할당된 자원을 증가시키거나 감소
- 상품 및 소프트웨어 플랫폼에 비용 효율이 높은 방식으로 유연성을 제
Message Driven
- 요구사항
- 비동기 메시지 전달에 의존
- 명시적인 메시지 전달
- 위치 투명 메시징을 통신 수단으로 사용
- 논블로킹 통신
- 결과
- 구성 요소 사이에서 느슨한 결합, 격리, 위치 투명성을 보장하는 경계를 형성. 이 경계는 장애를 메시지로 지정하는 수단을 제공
- 시스템에 메시지 큐를 생성하고, 모니터링하며 필요시 배압을 적용
- 유연성을 부여하고, 부하 관리와 흐름제어를 가능하게
- 단일 호스트든 클러스터를 가로지르든 동일한 구성과 의미를 갖고 장애를 관리
- 수신자가 활성화가 되어 있을 때만 자원을 소비할 수 있기 때문에 시스템 부하를 억제
- 정리
- 비동기 통신
- 구성 요소는 서로 비동기적으로 메시지를 주고 받으며, 독립적인 실행을 보장
- 메시지 큐
- 메시지 큐를 생성하고 배압을 적용하여 부하를 관리하고 흐름을 제어한다.
- 복원력
- 구성 요소 사이에 경계를 형성하여 직접적인 장애의 전파를 막고 장애를 메시지로 지정하여 위치와 상관없이 동일하게 장애를 관리한다.
- 탄력성
- 구성 요소 사이에 경계를 형성하여 각각의 구성 요소를 독립적으로 확장 가능하게 만들고, 자원을 더 쉽게 추가하거나 제거한다.
Reactive manifesto
가능한 한 즉각적으로 응답
장애에 직면하더라도 응답성을 유지
작업량이 변화하더라도 응답성을 유지
비동기 non-blocking 기반의 메시지 큐를 사용하여 통신