Reactive Programming

이영근·2021년 3월 21일
0

절차 지향적 프로그래밍, 객체 지향형 프로그래밍, 함수형 프로그래밍 등 다양한 프로그래밍 기법중 하나이다.

  • 기존 명령형 프로그램 방식(Pull)

컴퓨터 하드웨어를 대상으로 프로그래머가 작성한 코드가 정해진 절차에 따라 순서대로 실행

  • 리액티브 프로그래밍(Push)

데이터 흐름과 변화의 전달에 관한 프로그래밍 패러다임이다. 리액티브 프로그래밍은 주변환경과 끊임없이 상호 작용하며 프로그램이 주도 하는 것이 아닌, 환경이 변화되면 이벤트를 받아 동작하는 과정이다.

  • Java에서의 리액티브 프로그래밍
    RxJava를 사용한다면 객체지향 프로그래밍과 리액티브 프로그래밍을 동시에 포함하여 개발할 수 있다는 장점이 있습니다.

일반적으로 콜백이나 옵저버 패턴을 넘어서 진정한 RxJava 기반의 리액티브 프로그래밍을 수행하려면 함수형 프로그래밍 패러다임을 추가해야 합니다.

그 이유는 콜백이나 옵서버 패턴과 같은 경우 단일 스레드 환경에서 사용 시 문제가 되지 않지만 멀티 스레드 환경에서는 데드락과 동기화 등 문제들이 발생 합니다. 그러나 함수형 프로그래밍은 이런 부수효과가 없습니다.

함수형 프로그래밍은 위와 같은 부수 효과를 없애기 위해 순수 함수를 지향하고 있습니다. 따라서 단일 스레드 뿐만 아닌 멀티 스레드 환경에서도 안전하기에 자바 언어로 리엑티브 프로그래밍을 하기 위해서는 함수형 프로그래밍의 지원이 빠져서는 절대 안 됩니다.

  • RxJava가 등장하게 된 배경

RxJava는 2013년 2월 넷플릭스에서 처음으로 소개되었습니다. 그 당시 넷플릭스는 REST 기반의 서비스 API 호출 횟수와 서비스의 전반적인 성능을 개선하기 위해 RxJava를 만들었으며 아래와 같은 핵심적인 이유 3가지를 발표하며 RxJava를 출시

  1. 동시성을 적극적으로 끌어안을 필요가 있다.
  2. 자바 Future를 조합하기 어렵다는 점을 해결해야 한다.
  3. 콜백 방식의 문제점을 개선해야 한다.

https://hkoonsdiary.tistory.com/128

profile
개발자

0개의 댓글