RxJava를 활용한 리액티브 프로그래밍: RxJava의 개념과 사용법, 실무 적용까지

By | 2017년 4월 20일

표지_small

 

현대적인 프로그래밍 환경에서 비동기 프로그래밍을 어떻게 할 것이냐는 꽤 중요한 문제이고 다양한 기술이 개발되어 경쟁 중인데요. 몇 년 전부터 리액티브 프로그래밍이라는 이벤트 기반 비동기 프로그래밍 방식이 주목을 받고 있습니다. 리액티브 프로그래밍은 여러 언어로 다양한 구현이 개발되어 쓰이고 있는데 지금 소개할 RxJava는 자바 세계의 대표적인 리액티브 프로그래밍 구현입니다.

 

rxjava

 

RxJava의 탄생과 발전

2007년, 마이크로소프트에서 에릭 마이어(Erik Meijer)가 중심이 되어 처음엔 Rx(Reactive Extension)를 탄생시켰고 2년 후에는 Rx.NET으로 발전했습니다. 이후 Rx는 자바스크립트, C++ 등의 다양한 언어에서도 구현을 시작했습니다.

RxJava는 넷플릭스를 통해 발전했습니다. 2011년에 마이크로소프트에서 넷플릭스로 이직한 자파 후세인(Jafar Husain)은 회사 내에 Rx 포교(?)를 시작했고, 미들티어 API 작업을 담당한 벤 크리스텐센(Ben Christensen)을 전도(?)하는 데 성공했습니다. 당시 넷플릭스의 미들티어는 자바로 구현되어 있었고 여기에 Rx 프로그래밍 모델을 수용하기로 결정했습니다. 약 3년에 걸쳐 RxJava를 만드는 동안 대부분의 작업은 Github에 공개되었고, 수많은 컨트리뷰터의 참여를 통해 성공적인 결과물을 얻었습니다. 이 과정에서 넷플릭스의 전폭적인 지지와 지원이 있었음은 물론이구요.

blog_3

출처: https://www.slideshare.net/jongwookkim/ndc14-rx-functional-reactive-programming

 

2016년이 되면서 Rx의 인기와 사용 빈도가 급증했습니다. 넷플릭스 API를 사용하는 모든 트래픽은 RxJava를 사용하고 있으며 결함 대응 라이브러리인 히스트릭스(Hystrix)도 모든 내부 트래픽을 격리할 때 RxJava를 사용합니다. SoundCloud나 Square, NYT, Seatgeek 등의 회사들도 RxJava를 이용해 성공적인 안드로이드 구현 영역을 구축하고 있고, 안드로이드 앱에도 RxJava를 사용하면서 RxAndroid 확장 라이브러리에도 이바지하고 있습니다.

 

이 책의 내용

『RxJava를 활용한 리액티브 프로그래밍』은 RxJava의 개념과 사상부터 사용법, 실무 적용까지 RxJava를 전반적으로 다루고 있습니다. 넷플릭스에서 RxJava 개발에 참여한 벤 크리스텐센과 실무에서 RxJava를 적용한 풍부한 경험이 있는 토마스 누르키비치(Tomasz Nurkiewicz)가 집필한 이 책은 리액티브와 RxJava에 대한 깊이 있는 개념 설명과 다양한 예제를 담고 있습니다. 서버 관리와 안드로이드 앱 개발 영역에서 어떻게 RxJava를 활용하는지를 예제를 통해 보여주고 또한 최근 나온 2.0 버전이 기존 버전과 어떤 점에서 다르고 왜 바뀌었는지도 추가적으로 설명하고 있습니다.

 

이 책에서 다루는 내용은 다음과 같습니다.

– ‘콜백 지옥’에 빠지지 않으면서 다수의 비동기 소스에 반응하는 프로그램 작성

– 쏟아지는 데이터를 Observable로 대처하는 방법

– 리액티브 스타일로 작성된 프로그램을 디버그하고 테스트하는 방법

– 프로그램을 작성할 때 병렬성과 동시성을 효과적으로 활용하는 방법

– RxJava 버전 2로 이행하는 방법

 

이 책은 실제로 RxJava를 구현하고 사용하면서 수많은 경험을 쌓아온 저자가 보여주는 RxJava의 개념과 용도, 특히 리액티브 프로그래밍에 대한 심층적인 탐구 결과물이다. 리액티브를 알고 싶다면 이 책을 읽는 것보다 더 좋은 방법은 없다.

— 에릭 마이어(Erik Meijer), Applied Duality의 대표이자 창업자

 

기존의 절차적인 명령형 프로그램에 익숙한 개발자에게는 RxJava의 API가 낯설게 느껴진다. Observable/Observer와 같은 용어가 쉽게 머릿속에 들어오지 않고 혼란스러울 것이다. 예제 코드는 간결하지만 실무에서 만드는 코드에는 어떻게 적용할지 연상이 안 될 수도 있다. 이 책은 RxJava를 이해하고 적용하는 데 좋은 길잡이가 될 만하다. RxJava의 기본 개념에서 실무에 응용하는 기법까지 폭넓게 설명하고 있다. RxJava의 API가 막연하고 어렵다고 느낀 개발자가 이 책을 다 읽고 나면 유용한 도구 하나를 손에 쥐게 되었다는 느낌을 받을 것이다.

— 정상혁, 네이버

 

이 책의 대상 독자

『RxJava를 활용한 리액티브 프로그래밍』은 중·고급 프로그래머를 대상으로 하고 있습니다. 자바에 상당히 익숙해야 하지만 리액티브 프로그래밍에 대한 사전 지식은 필요 없으며, 많은 내용이 함수형 프로그래밍과 관련이 있지만 미리 알아야만 하는 필수 개념은 아닙니다.

기존의 절차적인 명령형 프로그램에 익숙한 개발자에게 RxJava는 낯선 개념들이 많을 수도 있습니다. 저자인 벤 크리스텐센도 처음 Rx 방식을 쉽게 이해할 수 없었다고 하니까요. 하지만 기본 개념과 사용법을 익히고 나면 Rx의 편리함은 포기할 수 없을 것입니다. Rx는 애초에 개발자들의 필요에서 출발하고 발전했습니다. 복잡성을 줄이고 간결하게 프로그래밍하고자 한 것이죠. 『RxJava를 활용한 리액티브 프로그래밍』을 통해 리액티브 프로그래밍에 도전해보세요! 그리고 리액티브의 장점과 편리함을 경험해보세요!

 

이 책은 다음 서점에서 구입하실 수 있습니다.

Yes24 | 알라딘 | 인터파크 | 교보문고