Reactive Programming란
Reactive 라는 건 변화에 반응하게 만들어진 프로그래밍 모델이다.
Reactive Programming이란 데이터의 흐름과 변화의 전파에 중점을 둔 프로그래밍이다.
데이터가 변경될때마다 이벤트를 발생시켜서 데이터를 계속적으로 전달한다.
리액티브 프로그래밍은 완전 비동기적이고, 논 블록킹 하게 구현되어 있으며, 이벤트 중심으로 동작한다.
이런 특징으로 인해 리액티브 프로그래밍을 도입하면, 복잡한 코드를 작성할 필요 없이 효율적으로 대용량 처리가 가능하다.
Reactive System
리액티브 시스템이란 응답이 잘 되고, 탄력적이며 유연하고 메시지 기반으로 동작하는 시스템을 말한다.
아래 4가지 특성을 만족함면 리액티브 시스템이라고 할 수 있다.
리액티브 선언문에 나와있는 4가지 특성을 정리해 보았다.
- 응답성
- 요청자가 요청하면 즉각적으로 응답하는 것이다.
- 신속하고 일관성 있는 응답 시간을 제공하고, 신뢰할 수 있는 상한선을 설정해 일관된 서비스 품질을 제공한다.
- 이러한 일관된 동작은 오류 처리를 단순화하고, 일반 사용자에게 신뢰를 조성하고, 새로운 상호 작용을 촉진한다.
- 탄력성
- 시스템이 장애에 직면해도 응답성을 유지하는 것을 탄력성이 있다고 한다.
- 요청이 들어왔을 떄 실패하면 즉각 다른 메시지를 처리할 수 있도록 한다.
- 탄력성이 좋으면 자가복구가 잘된다.
- 탄력성이 없는 시스템에 장애가 발생하면 장애가 전파되고 응답성을 잃는다.
- 유연성
- 시스템 작업량이 변해도 응답성을 유지해야 한다.
- 탄력성과 비슷한데, 사용량에 대해 유연하게 대응할 수 있어야 한다.
- 메시지 기반
- 메시지 기반으로 느슨하게 결합한 시스템 아키텍처를 구성한다.
- 명시적인 메시지 전달은 시스템에 메시지 큐를 생성한다.
- 모니터링하며 필요시 BackPressure를 적용함으로써 유연성을 부여하고 부하 관리와 흐름제어를 가능하게 한다.
- 논블로킹 통신은 수신자가 활성화가 되어 있을 때만 자원을 소비할 수 있기 때문에 시스템 부하를 억제할 수 있다.
좀 더 자세한 내용을 보고싶으면 리액티브 선언문 의 내용을 확인하면 된다.
참고
공식문서
https://reactivex.io/intro.html
flux,mono
https://brunch.co.kr/@springboot/154
반응형
'백엔드' 카테고리의 다른 글
[window] WSL2 Ubuntu 구동 시 Error: 0x800701bc WSL 2 (0) | 2022.04.28 |
---|---|
메시지 브로커 / 이벤트 브로커 (0) | 2022.04.26 |
MSA 설계 시 참고 툴 (2) | 2022.04.21 |
[php] 출력문 비교 - echo, print, print_r, var_dump (0) | 2022.04.21 |
Event Driven Architecture (이벤트 드리븐 아키텍처)란? (0) | 2022.04.12 |