1부 RxJS 이해
1부에서는 웹 애플리케이션을 개발할 때 발생하는 문제를 RxJS가 어떻게 해결하려고 했는지에 대한 RxJS의 기술적 고민을 이야기한다. 이를 통해 RxJS가 추구하는 방향을 인지하고 RxJS를 효과적으로 사용하기 위한 배경 지식을 익힐 수 있다. 1부를 학습하면 RxJS가 추구하는 바를 명확히 알 수 있다. 2부와 3부를 모두 학습하고 다시 한번 1부를 읽어보길 권한다. 처음 읽었을 때보다 많은 것을 얻을 수 있다.
2부 RxJS 사용하기
2부에서는 본격적으로 RxJS를 사용하는 방법을 이야기를 한다. RxJS의 개발 흐름에 대한 포괄적인 내용에서부터 RxJS가 다루는 6가지 개념들을 실제 예제를 만들면서 설명한다. 하나의 예제를 점진적으로 개선해 나가면서 RxJS 오퍼레이터를 언제, 어떻게, 왜 사용해야 하는지를 익힐 수 있다. 또한 RxJS 오퍼레이터를 어떻게 학습해야 하는지도 알 수 있다.
3부 RxJS로 버스 노선 조회 서비스 만들기
3부에서는 1부와 2부에서 배웠던 내용을 토대로 간단한 버스 노선 조회 서비스를 만든다. RxJS를 이용하여 실제 서비스 구현을 위해서는 첫 번째로 사용자의 요구사항을 RxJS 관점에서 분석하는 작업이 필요하다. 이 장에서는 서비스 요구사항을 토대로 데이터 흐름을 파악하고 이를 RxJS로 구현하는 경험을 할 수 있다. 앞에서 배웠던 RxJS의 종합 예제인 “버스 노선 조회 서비스”를 통해 실제 서비스에서 사용되는 RxJS 사용법을 확인할 수 있다.
■ 추천평
개념 있는 책이다. RxJS가 어떤 문제를 해결하고자 했고 RxJS는 그것을 어떻게 풀어갔는지 근본적인 부분부터 다룬다. 이 책은 RxJS에 대한 깊은 뿌리를 심어줄 수 있는 기본 개념서이다. 풍부한 예제는 열매를 맺을 수 있도록 도와줄 수 있는 좋은 자양분이 되어주리라 확신한다.
윤종문
RxJS가 좋다는 말을 듣고 막상 사용하려고 하면, RxJS의 수많은 연산자와 기능을 언제 어떻게 써야 할지 난감할 따름이다. 이 책은 바로 이러한 문제를 해결해준다. 현업에서 사용할 만한 데모를 만들고 점진적으로 개선하면서 각 기능을 왜/어떻게/언제 써야 할지 쉽게 배울 수 있다.
김명진
RxJS를 시작하면 만나게 되는 몇 가지 허들이 존재합니다. 대부분의 허들이 그 높이 보다는 생소하고 난해한 생김새로 RxJS의 시작을 방해하곤 합니다. 이 책을 통해 RxJS가 가진 다양한 형태의 허들을 넘어서는 방법과 해체하는 방법을 익히기 바랍니다.
송효종
클라이언트 로직은 날이 갈수록 복잡해지면서 컴포넌트 간의 커뮤니케이션을 어떻게 하면 효율적으로 처리할 수 있을지를 고민하게 된다. 이때 RxJS는 좋은 도구다. RxJS와 관련한 다양한 책이 있지만, 현실적으로 RxJS를 어떻게 사용해야 하는지 고민한 책이다.만약, 당신이 RxJS를 사용하거나 계획이 있다면 이 책이 당신의 시간을 아껴줄 것으로 생각한다.
전용우
■「코드스쿼드」윤지수님 추천사
프런트엔드 세상에 불쑥 들어와 버린 함수형 패러다임과 리액티브 프로그래밍은 몇몇 예제 코드만 보더라도, 마법 가루가 뿌려진 듯한 느낌이 든다. 파이프라인(pipeline)으로 연결된 다양한 함수들을 거쳐 동작하는 기능은 정말 신기할 따름이다. 이런 코드를 처음 마주치면 '함수형 프로그래밍인가?, 리액티브 개념이 섞인 건가?'라는 생각이 든다. 좀 더 자세히 들여다보면, 비동기 로직과 동기 로직이 절묘하게 섞여 들어가 있음을 발견한다. 웹 프런트엔드 개발의 난해함 중 하나인 비동기를 어떻게 동기적인 흐름과 섞어서 풀지?라는 답을 제시하고 있는 듯해서 많은 기대감으로 이어진다. 하지만 예제에서 제공하는 옵서버블(Observable)이나 파이프라인(pipeline)으로 이어진 추상화된 메서드들의 연결은 이전과 다른 구현 방식으로 선뜩 주저하게 되는 것도 사실이다. RxJS는 이미 꽤 유명해졌으며 그 장점과 사용법을 이해할 수 있는 예제도 많지만, 아직 의문점도 많다. '우리 서비스에 사용할 수 있는 것인가?, 어떻게 도입할 수 있지?, 성능에는 문제가 없을까?' 등은 의심으로 남아 있을 수 있다.
이 책은 그런 점에서 참 반가운 책이다.
이 책은 RxJS를 실서비스에서 어떻게 사용하는지를 보여주는 풍부한 예제와 함께 설명한다. RxJS의 단점이 초기 학습 비용이라고 하는데, 이 책은 그 어느 RxJS 내용보다 일단 쉽다. 책의 중반을 넘어서 몇몇 예제를 보다 보면, 아 그렇구나라는 느낌을 계속 받게 된다. 더 나아가 '우리 서비스에도 RxJS를 도입해볼까?'라는 생각을 가질 것이 분명하다.
개인적인 생각으로 라이브러리나 프레임워크는 개발된 배경과 철학을 알고 시작하는 것이 중요하다. 이를 알고 시작하는 것은 개발 과정에서 어려움을 겪을 때 올바른 결정을 할 수 있는 힌트를 제시해주곤 한다. RxJS를 사용할 때도 마찬가지다.
RxJS는 도대체 어디서 출발한 것이고, 어떤 철학을 가진 것인지 아는 것이 개발 과정에서 중요하다. 그런 점이 없다면, 도대체 왜 내가 이런 것을 사용해야 하는 것인지? 이런 방식이 어떤 장점을 주고, 어떤 상황에 어울릴까? 하는 점을 의문점으로 남겨둔 채 그 철학과 다른 느낌으로 개발함으로써 서비스 코드에서 원래의 장점을 제대로 표현하지 못하게 된다.
이런 부분의 답을 이 책 앞부분에서 찾을 수 있다. 함수형, 리액티브, RxJS까지 이들이 어떻게 연관되어 있고 어떤 장점을 가지고 있는지를 실무적인 짧은 예제를 통해 이해를 얻을 수 있다. RxJS는 다양한 상황에서 데이터의 흐름을 제어하는 장점을 가지고 있다. 그렇다 보니 수많은 오퍼레이터(operator)를 제공해줌으로써 데이터의 흐름을 제어할 수 있게 해준다. 이 많은 오퍼레이터는 낯설고 너무 많아서 이해하기 어렵다. 물론 각자의 샘플 코드가 있으나, 컴포넌트나 웹 서비스 수준에서 이를 어떻게 활용해야 할지 완벽하게 느끼긴 쉽지 않다. 이 책에서는 절반 이상을 풍부한 예제와 실제 서비스 수준에서 쓸 수 있는 프로젝트 코드를 제시하며 오퍼레이터 사용에 대한 이해를 돕는다. 책을 넘겨 보는 만큼 다양한 오퍼레이터가 어느 순간에 어떻게 쓸 수 있는지 알게 된다.
우리가 만들고 있는 웹 서비스는 어떤 복잡도를 안고 있는가를 생각해보자.
우리는 매일 todo list를 만드는 것이 아니다. 다양한 에러 상황에 대한 대처, 여러 가지 협력 관계에 있는 UI 컴포넌트 간의 통신, 성능을 고려한 복잡한 데이터 흐름제어, 비동기와 동기가 뒤섞인 데이터 흐름제어 등 실제 서비스에서는 고려할 부분이 무척 많다.
이 책의 뒷부분에서 풀고 있는 프로젝트는 많은 아이디어를 제공한다. 마치 우리가 서비스 수준에서 부딪치는 다양한 문제를 저자와 함께 풀어나가는 느낌을 받는다. RxJS를 손대보기로 한 이후에도, 이 책은 유용할 것이다. 개발 과정에서 어려움이 있다면 이 책을 다시금 들춰보며 기쁜 마음으로 해답을 찾아나갈 수 있을 것이다.
마지막으로 오랜 시간 동안 옆에서 지켜봤던 저자의 풍부하고 진한 개발 경험을 떠올리면, 이 책을 내 책상 위에 올려두는 것을 주저할 필요가 없다고 꼭 이야기해주고 싶다.
■「블루웨일」박종욱님 추천사
나는 RxJS를 Angular2를 통해서 접하게 되었고 그때부터 복잡한 로직을 처리하기 위해 항상 사용하는 가장 중요한 라이브러리가 되었다. 처음에는 Promise 같은 비동기를 처리하기 위한 새로운 라이브러리구나 하고 사용을 했었는데 사용하면 할수록 그 강력함에 완전히 매료되었다. "RxJS를 한 번도 안 쓴 사람은 있어도 한 번만 쓴 사람은 없다."라는 말이 있다. 특히 비동기와 동기로 복잡하게 얽힌 코드에서 가장 깔끔하고 안전하게 문제를 해결해준다.
사실 RxJS는 단순 라이브러리가 아니라 새로운 프로그래밍 패러다임이다. 국내뿐만 아니라 외국에서도 러닝 커브가 가파른 라이브러리로 유명하다. 게다가 공식 페이지의 수많은 기능과 연산자를 보다 보면 어느새 창을 닫게 된다. 단순 라이브러리를 배우는 것 이상이 필요하다. 이런 RxJS를 제대로 학습할 수 있는 한글책이 나왔다. RxJS가 나온 배경, 핵심 철학, 여러 문제를 해결하면서 배우는 주요 오퍼레이터들, 이 책을 순서대로 읽다 보면 어느새 RxJS를 제대로 이해하게 된다. 개인적으로 2년 정도 RxJS를 사용했지만 이 책을 읽으면서 정말 많은 부분을 다시 배울 수 있게 되었다. 저자가 얼마나 많은 공부와 고민을 하고 책을 집필했는지 느꼈다. 다시 한번 좋은 책을 써주신 손찬욱 님께 감사하며 이 책을 통해서 더 많은 분이 RxJS를 영접하기 바란다.