본문 바로가기
백엔드

Reactive Programming

by 작은소행성 2022. 4. 12.

Reactive Programming란

Reactive 라는 건 변화에 반응하게 만들어진 프로그래밍 모델이다. 

Reactive Programming이란 데이터의 흐름과 변화의 전파에 중점을 둔 프로그래밍이다. 

데이터가 변경될때마다 이벤트를 발생시켜서 데이터를 계속적으로 전달한다. 

 

리액티브 프로그래밍은 완전 비동기적이고, 논 블록킹 하게 구현되어 있으며, 이벤트 중심으로 동작한다.

이런 특징으로 인해 리액티브 프로그래밍을 도입하면, 복잡한 코드를 작성할 필요 없이 효율적으로 대용량 처리가 가능하다.

 

 

Reactive System

리액티브 시스템이란 응답이 잘 되고, 탄력적이며 유연하고 메시지 기반으로 동작하는 시스템을 말한다. 

아래 4가지 특성을 만족함면 리액티브 시스템이라고 할 수 있다. 

리액티브 선언문에 나와있는 4가지 특성을 정리해 보았다. 

 

  • 응답성 
    • 요청자가 요청하면 즉각적으로 응답하는 것이다. 
    • 신속하고 일관성 있는 응답 시간을 제공하고, 신뢰할 수 있는 상한선을 설정해 일관된 서비스 품질을 제공한다.
    • 이러한 일관된 동작은 오류 처리를 단순화하고, 일반 사용자에게 신뢰를 조성하고, 새로운 상호 작용을 촉진한다. 
  • 탄력성 
    • 시스템이 장애에 직면해도 응답성을 유지하는 것을 탄력성이 있다고 한다. 
    • 요청이 들어왔을 떄 실패하면 즉각 다른 메시지를 처리할 수 있도록 한다. 
    • 탄력성이 좋으면 자가복구가 잘된다.
    • 탄력성이 없는 시스템에 장애가 발생하면 장애가 전파되고 응답성을 잃는다.
  • 유연성
    • 시스템 작업량이 변해도 응답성을 유지해야 한다. 
    • 탄력성과 비슷한데, 사용량에 대해 유연하게 대응할 수 있어야 한다. 
  • 메시지 기반
    • 메시지 기반으로 느슨하게 결합한 시스템 아키텍처를 구성한다. 
    • 명시적인 메시지 전달은 시스템에 메시지 큐를 생성한다.
    • 모니터링하며 필요시 BackPressure를 적용함으로써 유연성을 부여하고 부하 관리와 흐름제어를 가능하게 한다.  
    • 논블로킹 통신은 수신자가 활성화가 되어 있을 때만 자원을 소비할 수 있기 때문에 시스템 부하를 억제할 수 있다. 

좀 더 자세한 내용을 보고싶으면 리액티브 선언문 의 내용을 확인하면 된다. 

 

 

 

 

 

 

 

참고

공식문서

https://reactivex.io/intro.html

 

ReactiveX - Intro

ReactiveX ReactiveX is a library for composing asynchronous and event-based programs by using observable sequences. It extends the observer pattern to support sequences of data and/or events and adds operators that allow you to compose sequences together d

reactivex.io

 

flux,mono

https://brunch.co.kr/@springboot/154

 

Project Reactor 4. Flux, Mono

4. Flux, Mono 를 생성하는 방법 | "Project Reactor" 시리즈의 네 번째 글입니다. 드디어, "Reactor" 에 대해서 공부하기 시작합니다. 이 글에서는 Flux, Mono 의 기본 개념에 대해서 정리합니다. 필자가 시간이

brunch.co.kr

 

 

반응형