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
   9   10   11   12   13   14   15   16   17   18   19