[RxJava] RxJava

Jay·2021년 1월 4일
0

RxJava

목록 보기
1/7
post-thumbnail

간단하게 RxJava에 대해서만 훑어보자.

Again Reactive Programming

Reactive Programming에 대한 이야기는 한번 했지만
다시 이야기 하자면,
데이터 흐름을 먼저 정의하고 데이터가 변경되었을 때 연관되는 함수나 수식이 업데이트 되는 방식.
(데이터 흐름과 변화의 전달에 관한 프로그래밍 패러다임)

  • 그래서 기존의 pull방식 에서 push방식으로 간다고 한다. (Callback, Observer)
  • 함수형 프로그래밍이 지원을 받는다. 여러 스레드가 경쟁 조건에 빠져 잘못된 결과가 나오는 현상 방지를 위해 순수 함수를 지향한다.

중요하게 기억해야 할 건,
주변과의 끊임없는 상호작용 + 프로그램 주도가 아닌 환경 변화에 따라 이벤트를 받아 동작하는 프로그래밍이란 것이다.

RxJava

어플리케이션에서 Reactive Programming을 하려면 Reactvie Programming이 가능한 환경이 필요하다.
데이터 소스를 정의할 수 있고 그것의 변경 사항을 받아서 내 프로그램에 알려줄(push) 존재로 그것을 .NET환경에서는 리택티브 확장이라하고 JVM위의 자바 언어로 구현해놓은 라이브러리가 RxJava이다.

RxJava의 필요이유

1. 동시성을 적극적으로 수용할 필요가 있다.

  • 넷플릭스의 경우, 다수의 비동기 실행흐름(스레드)를 생성하고 그것의 결과를 취합하여 최종 리턴하는 방식으로 변경하였다.

2. 자바Future를 조합하기 어렵다는 점을 해결해야 한다.

  • 자바8에서 제공하는 CompletableFuture 같은 클래스를 사용할 수 없어, 클라이언트의 요청을 처리할 때 비동기 흐름을 조합할 방법이 없었다.
    RxJava에서는 이를 위해 비동기 흐름을 조합할 수 있는 방법을 제공하고, 조합하는 실행단위를 Reactive 연산자라고 한다.

3. 콜백 방식의 문제점을 개선해야 한다.

  • 콜백이 콜백을 부르는 상황이 발생하는데, 이는 코드의 가독성을 떨어뜨리고 문제 발생시 디버깅을 어렵게 한다. RxJava는 클백을 사용하지 않는 방향으로 설계되었다.
profile
developer

0개의 댓글