🎯 목적
- 리액티브와 매우 잘 어울리는 비즈니스 사례를 통해 리액티브 솔루션이 사전 대응형(proactive) 솔루션보다 우수한 이유를 이해한다
- 서버간 통신 방법을 보여주는 예시를 통해 현재의 비즈니스 요구사항을 이해한다
- 현대 스프링 프레임워크의 요구 사항에 대해 이해한다
리액티브 선언문
탄력성(Resilient): 시스템이 장애 에 직면하더라도 응답성을 유지 하는 것을 탄력성이 있다고 합니다. 탄력성은 고가용성 시스템, 미션 크리티컬 시스템에만 적용되지 않습니다. 탄력성이 없는 시
www.reactivemanifesto.org
왜 리액티브인가?
증가하는 부하에 대해 응답 능력을 유지할 수 있다.
탄력성(elasticty)
- 다양한 작업 부하에서 응답성을 유지하는 능력
- 수요에 따라 처리량이 자동으로 증가 또는 감소해야 한다
- 애플리케이션 관점으로 평균 지연 시간에 영향을 미치지 않고 시스템을 확장할 수 있어 응답성이 유지된다.
복원력
- 시스템 실패에도 반응성을 유지할 수 있는 능력
- 시스템의 기능 요소를 격리해 모든 내부 장애를 격리하고 독립성을 확보함으로 달성 가능
탄력성과 복원력은 밀접하게 결합되어 있으며, 이 두 가지를 모두 사용할 때 시스템의 진정한 응답성을 달성가능
메시지 기반 통신 (message-driven)
- I/O 측면에서 리소스 활용도를 높이려면 비동기 논블록킹(asynchronous and non-blocking) 모델을 사용해야 한다.
- 일반적으로 분산 시스템에서 서비스 간 통신을 할때 자원을 효율적으로 사용하기 위해서 메시지 기반 통신 원칙을 따른다
- 메시지 기반 통신을 수행하는 방법의 하나로 메시지 브로커(message broker) 사용이 있다.
- 메시지 브로커는 메시지 대기열을 모니터링해 시스템이 부하 관리 및 탄력성을 제어할 수 있도록 한다
# 리액티브 시스템의 기본 원리
- 분산 시스템으로 구현되는 모든 비즈니스의 핵심 가치는 응답성이다.
- 시스템이 높은 응답성을 확보한다는 것은 탄력성 및 복원력 같은 기본 기법을 따른다는 의미이다.
- 응답성, 탄력성 및 복원력을 모두 확보하는 기본적인 방법의 하나는 메시지 기반 통신을 사용하는 것이다