한빛출판네트워크

컬럼/인터뷰

[Interview] 〈RxJava 프로그래밍〉 : 유동환, 박정준

한빛미디어

|

2017-09-27

by 한빛

저자 인터뷰 - 100명의 비밀녹취록

유동환 저자님을 한 마디로 표현하자면 '굉장히 열정적인 분'이라고 말하겠습니다. 자신이 필요하다고 생각하면 누가 말하지 않아도 미리미리 공부하고 이를 실무에서도 적용하려고 노력하는 분입니다. 게다가 자신이 배운 걸 나누는 데 주저하지 않습니다. 브런치나 블로그에 자신이 배운 내용을 항상 공개하고, 다양한 커뮤니티에서도 이를 소개합니다. 많은 개발자에게 항상 "책 한 권 쓰시죠"라고 말하면서 편집자와 연결 고리를 만들기도 하는 분입니다.

박정준 저자님은 '조용하지만 논리가 확실한 분'이라는 느낌입니다. 평소에는 조용한데 쓰신 글을 보면 논리 정연한 자기주장을 글로 쏟아냅니다. 또한 유동환 저자님이나 저와 뭐가 부족한지를 항상 질문하면서 더 발전된 방향으로 나가려고 노력합니다. 내공 있는 개발자가 되고 싶어 안드로이드 앱 개발을 하다가 백엔드 개발로 전향한 이력을 보면 숨은 열정도 대단하다는 생각이 들게 만듭니다.
이러한 두 저자님 덕분에 어려운 분야인 RxJava 프로그래밍을 쉽게 쓴 집필서가 탄생했다고 생각합니다.

유동환

생각을 즐기는 프로그래머. 연세대학교 정보대학원에서 경영정보학을 전공한 후 LG전자에서 안드로이드 앱을 개발했다. 최근에는 선행플랫폼개발팀으로 자리를 옮겨 IoT와 AI 관련 프로젝트를 진행하고 있다. 자바카페와 한국자바개발자협의회(JCO)에서 수년간 활동했다.
집필한 책으로는 『안드로이드를 위한 Gradle』(한빛미디어, 2016)이 있고, 번역한 책으로는 『Professional Java Web Services』(정보문화사, 2002)와 『그레이들 레시피』(한빛미디어, 2016)가 있다.

박정준

아주대학교에서 컴퓨터공학을 전공한 후 10년 이상 LG전자에서 안드로이드 앱을 개발했다. 불현듯 안드로이드만 다루는 것보다 더 넓은 자바 개발 세상도 경험하고 싶어 현재는 쿠팡에서 서버 사이드 개발을 하고 있다. 풀스택 엔지니어가 얼마나 대단한 사람인지 느끼는 나날을 보내고 있다.
다양한 언어의 함수형과 리액티브 프로그래밍에 관심이 많다. 백발에도 프로그래밍하는 개발자가 되고자 노력하고 있다.

1. 『RxJava 프로그래밍』 도서를 소개해주세요!

유동환: 『RxJava 프로그래밍』은 RxJava의 전반적인 내용에 대해서 다룹니다. 처음 RxJava를 시작하는 사람의 시각에서 Observable, Subject와 같은 핵심 개념과 map(), filter(), reduce()와 같은 카테고리별 연산자의 활용법을 배웁니다. 또한 마블 다이어그램을 그대로 활용해볼 수 있는 예제가 제공하기도 했습니다. RxJava와 함수형 프로그래밍은 이미 앞서가는 개발자를 위한 피할 수 없는 대세입니다. 이미 해외 유수의 스타트업은 RxJava를 근간으로 안드로이드 앱을 개발하고 있습니다. 이 책에서 다루는 RxJava 2는 기존의 RxJava 1.x를 완전히 새로 만든 것으로, RxJava 1.x는 2018년이면 지원이 중단되기 때문에 지금 RxJava를 배우려는 분은 RxJava 2로 시작하는 것이 좋습니다.

박정준: “RxJava는 어렵다?” 실제로 아주 어렵습니다. 국내에 출간된 책도 많지 않고 자료도 대부분이 영어나 일어입니다. 『RxJava 프로그래밍』은 독자 관점에서 처음 RxJava를 접하는 분도 쉽게 이해할 수 있게 쓴 책입니다. RxJava에 있는 대부분의 기능을 설명하고 있고, 모든 설명에는 예제와 마블 다이어그램을 제시해 이해도를 높였습니다. 최근 우리나라에서도 RxJava가 활성화되고 있습니다. 특히 Java에서는 구현하기 어려운 멀티스레드와 비동기 처리, 논-블로킹(Non-Blocking) 시스템의 구성 등에 강점이 있습니다. 어쩌면 RxJava(Reactive)는 개발의 중요한 패러다임이 될 수도 있을 것으로 생각합니다. 하지만 아직 관련 개발자는 많지 않습니다. 여러분도 『RxJava 프로그래밍』과 함께 RxJava를 시작해 앞서가는 개발자가 되어 보는 건 어떨까요?

2. 도서의 전반적인 집필 스토리와 느끼신 점을 부탁드려요.

유동환: RxJava는 어려웠습니다. 안드로이드를 포함하여 자바 개발을 10년 넘게 해오고 있지만 Observable 같은 핵심 개념을 이해하기 어려웠고, 공식 javadoc을 보아도 설명이 명확하지 않아 어떻게 동작하는지 한눈에 이해하기 어려웠습니다. RxJava에 있는 많은 연산자의 동작을 설명해주는 마블 다이어그램도 그림만으로는 한눈에 파악되지 않았습니다.
그래서 책을 쓰게 되었습니다. 지금까지 Java를 공부하고 실무에 적용할 때는 라이브러리의 활용이 어렵다는 생각은 하지 못했는데… RxJava는 비동기 프로그래밍과 함수형 프로그래밍의 사고방식을 모두 이해해야 해서 만만치 않았습니다. 책을 쓰고 나서 느낀 점은 새로운 개념을 이해할 때는 역시 좋은 예제 코드와 잘 설명된 그림(마블 다이어그램)을 보는 것이 효과적이라는 것이었습니다.

박정준: 솔직히 말씀드리면 글쓰기가 RxJava보다 더 어려웠습니다. 머릿속의 지식을 글로 표현하는 것이 얼마나 대단한 작업인지 알 수 있었습니다(존경합니다. 작가님들…). 『RxJava 프로그래밍』을 집필할 때는 방대한 양의 자료를 읽고 이를 코드로 구현하는 작업을 반복했습니다. 자바나 안드로이드 코드를 구현하면서 느낀 점은 "RxJava는 정말 훌륭한 도구구나”입니다. 어렵기는 하지만 자바로 비동기 프로그래밍하는 것보다는 쉽습니다. 많은 시행착오가 필요할 수는 있겠으나 이해한 후에는 그 강력함에 감탄하게 됩니다.
RxJava도 기초 개념이 중요합니다. 함수 자체는 Java 8의 Stream과 거의 동일하므로 이해하는 데 어려움은 없겠지만 Observable과 Observable의 관계를 설정하는 것이 어렵습니다. 즉, Observable의 생성과 생성 후 다른 Observable과의 관계 설정이 어쩌면 RxJava의 핵심일지도 모릅니다. 팁을 드리자면 구현할 내용을 글로 써서 읽어보고 기능을 나누고 어떤 기능을 Observable로 구현할지 정하고 정해진 Observable 사이의 관계를 설정해보는 작업을 반복하다 보면 조금은 쉽게 RxJava의 맛을 느낄 수 있을 것으로 생각합니다.

3. RxJava와 함께 보면 좋은 도서들이 있을까요?

유동환: 결국은 공식 문서를 봐야 합니다. 맨 처음에는 이해하기 어렵지만 이 책으로 기본 개념을 이해하고 나면 역시 공식 문서, javadoc, 공식 홈페이지의 위키 문서가 가장 큰 힘이 됩니다. 읽어보면 머리를 끄덕끄덕하게 됩니다.

박정준: 기본적으로 Java 8과 람다식을 이해하고 있으면 좋을 것 같습니다. 그리고 함수형 프로그래밍을 이해하고 있다면 금상첨화겠네요.

유동환, 박정준: 같이 읽어보면 좋은 책으로는 한빛미디어의 ①함수형 사고자바 8 인 액션함수형 반응형 프로그래밍이 있을 것 같습니다.

4. 이 책의 여러 파트 중에서 가장 중점적으로 기술하신 부분은 어딘가요? 그 이유는?

유동환: 이 책의 핵심은 RxJava의 수많은 연산자를 예제로 알아볼 수 있는 3, 4, 5장입니다. 3장은 기본 연산자, 4장은 카테고리별 연산자의 활용, 5장은 RxJava의 핵심인 스케줄러를 살펴봅니다. Java 파일 개수로 100개가 넘는 예제를 제공합니다.

박정준: RxJava를 가장 쉽게 활용할 수 있는 분야는 아마 안드로이드일 것으로 생각합니다. 엔터프라이즈 환경을 다루는 일은 시스템, 스케줄러, NIO 등을 깊게 이해해야 합니다. 그래서 적용이 쉽지 않은 부분이 있습니다. 눈에 보이지 않는 장벽도 있을 것 같고요. 6장 안드로이드 활용 편에서는 실무에 적용할 수 있는 수준의 예제를 제공합니다. 물론 조건문/반복문 등에 RxJava를 사용하는 건 비용 낭비겠지만 Java 8의 Stream을 사용하기 전까지는 블로킹 방식으로 사용해볼 수도 있습니다. 많은 안드로이드 개발자분이 다중 스레드, 콜백 지옥, 비동기 처리에 어려움을 느낍니다. 『RxJava 프로그래밍』을 읽고 이런 문제를 해결하는 데 조금이나마 도움이 되면 좋겠습니다.

5. 이 도서를 읽어야 하는 독자층이 있다면? 추천 대상을 알려주세요.

유동환: 1. RxJava를 프로젝트에서 사용해야 하는 개발자
2. 기존 방식으로 비동기 기능 개발하면서 디버깅할 때 고생해본 개발자
3. Java 8의 람다 표현식과 같이 ‘함수형’을 적용하고 싶은 개발자
4. ‘미래’를 위해서 RxJava를 공부하고 싶은 개발자

박정준: 안드로이드/스프링 개발자
우리나라 Java 개발자의 대부분은 안드로이드 아니면 스프링 다룰 것입니다. 스프링 5가 나오면 Rx는 꼭 배워야 하는 기술이 될 것 같습니다. 안드로이드도 Rx를 활용하기 좋습니다. 안드로이드에 Rx를 적용해보면 코드를 보는 관점이 달라집니다.

6. 마지막으로 최근에 읽은 도서 중 추천하고 싶은 도서가 있으신가요?

유동환: 『알랙 로스의 미래 산업 보고서』라는 책을 추천합니다.
앞으로 프로그래머의 미래는 ‘데이터’에서 온다고 생각합니다. 클라우드, 빅데이터, AI는 사람과 환경으로부터 얻는 엄청난 양의 데이터를 이용해 남들은 보지 못하는 가치를 발견하기 때문입니다. “데이터를 소유하거나 데이터를 통제하거나 데이터에서 의미를 이끌어 낼 수 있는 기업이 성공할 것이다(9p)”라는 말이 너무 와닿았습니다.

박정준: 『마이크로서비스 아키텍처 구축』을 추천합니다.
최근 소프트웨어 아키텍처의 핫이슈는 단연 마이크로서비스입니다. 기존의 모놀리식 아키텍처에서 벗어나 도메인 기반의 서비스로 분리하고 독립적으로 배포하는 개념입니다. 대규모 서비스를 제공하는 대부분의 회사에서 사용하고 있기도 합니다. 이 책은 마이크로서비스에 필요한 여러 가지 전략을 제시하고 다양한 오픈 소스를 소개합니다. 아키텍처에 관심이 있는 개발자라면 꼭 읽어봐야 하는 책으로 생각합니다.

 
 
댓글 입력