Page 14 -
P. 14
세)이 전달받은 데이터로 무엇을 하는지는 몰라도 됩니다. 또한, 데이터를 생산하는 측은 데이터
를 소비하는 측에서 무엇을 하든지 관계가 없으므로 소비하는 측의 처리를 기다릴 필요가 없습니
다. 그러므로 데이터를 통지한 후 데이터를 소비하는 측에서 데이터를 처리하는 도중이라도 데이
터를 생산하는 측은 바로 다음 데이터를 처리할 수 있습니다. 이처럼 비동기 처리를 쉽게 구현할
수 있습니다.
또한, 시스템 구축 관점에서 볼 때도 리액티브 프로그래밍은 마이크로서비스(microservice)와 같이
분산 시스템으로 프로그램을 구현하는 데 적합해 최근 주목받고 있습니다.
다만 리액티브 프로그래밍을 헷갈려서 리액티브 시스템(system)으로 부르지 말아야 합니다. 리액
티브 시스템이 리액티브 프로그래밍으로 구현된 시스템을 의미하지 않기 때문입니다. 리액티브 시
스템이란 메시지를 보내 데이터를 처리하고 상황에 따라 스케일 아웃(scale out)과 스케일 인(scale
in)을 자동으로 수행해 장애 내성을 높임으로써 항상 빠르게 응답할 수 있는 시스템을 말합니다.
그러므로 이 리액티브 시스템은 프로그램뿐만 아니라 인프라에 대한 조건도 필요합니다. 그리고
각 서비스를 리액티브 프로그래밍으로 구현하지 않아도 리액티브 시스템을 구축할 수 있습니다.
1.1.3 RxJava의 개요
에릭 마이어가 개발한 .NET 프레임워크의 실험적인 라이브러리인 Reactive Extensions(줄여서
Rx)를 2009년 마이크로소프트(Microsoft)에서 공개하고 2013년 넷플릭스(Netflix)가 자바로 이식한
것이 RxJava의 시작입니다.
● RxJava GitHub https://github.com/ReactiveX/RxJava
현재 Reactive Extensions를 다루는 라이브러리는 ReactiveX라는 오픈 소스 프로젝트로 바뀌어
자바와 .NET뿐만 아니라 자바스크립트(JavaScript)나 스위프트(Swift) 등 여러 프로그래밍 언어를
지원하는 라이브러리를 제공합니다.
● ReactiveX http://reactivex.io
RxJava 1.x 버전 때는 자바에 Reactive Extensions를 이식하는 개발이 진행됐고, 리액티브 프
로그래밍 개념이 널리 알려지면서 Reactive Extensions와 별도로 여러 업체와 단체에서 데이터
스트림을 비동기로 다루는 라이브러리와 프레임워크를 출시했습니다. 그러자 같은 처리를 하는데
도 불구하고 라이브러리나 프레임워크 차이 때문에 서로 다르게 구현하는 상황이 발생했습니다.
022
RxJava 리액티브 프로그래밍(본문)최종.indd 22 2019-03-26 오전 11:26:30