더북(TheBook)

이 장에서는 스트림 관점(반응형으로 생각하기)에서 생각하고 데이터를 유지하는 대신에 원하는 상태에 도달할 때까지 데이터를 흐르게 하고 그 과정에서 데이터에 변환을 적용하는 코드를 설계해 보겠습니다. 그리고 Observable 데이터 타입을 기반으로 일관된 연산 모델을 사용하는 RxJS 스트림으로 다양한 타입의 정적 또는 동적 데이터 소스를 처리하는 방법을 알아보겠습니다. 그런데 다른 자바스크립트 라이브러리를 사용하는 것과는 달리 애플리케이션에서 RxJS를 사용한다는 것은 새로운 API를 구현하는 것 이상을 의미합니다. 즉, 클래스의 메서드로 조작된 상태들의 합이 아닌, 원하는 동작을 구현하는 연산자 구성을 통해 생산자에서 소비자까지 연속적으로 이동하는 데이터 시퀀스로서 문제에 접근해야 한다는 것을 의미합니다.

이 사고방식에서는 시간 개념이 가장 중요합니다. 이 개념은 RxJS 스트림의 컴포넌트 바닥으로 흐르는 보이지 않는 흐름으로 작동하여 데이터가 저장되지 않고(머무르지 않고) 일시적으로 흐르게 합니다. 이를 실제 강물의 흐름과 연결해 생각해 보면 데이터 소스를 스트림의 상류로, 데이터 소비자를 스트림의 하류로 볼 수 있습니다. 이렇게 데이터는 강물처럼 항상 아래쪽 한 방향으로 이동하며, 그 과정에서 흐름의 성질을 변형시키는 제어 댐을 만날 수 있습니다. 이렇게 생각하면 데이터가 애플리케이션에서 어떻게 이동하는지 이해하는 데 도움이 됩니다.

물론 이 개념이 이해하기 쉽다는 말은 아닙니다. 시간을 가지고 개념을 반복해서 적용하는 연습을 해야 합니다. 1장의 의사 스트림 예제에서 보았듯이 변수에 저장된 데이터와 이동 중인 데이터의 비교는 이해하기 어려운 RxJS의 개념 중 하나입니다. 그래서 이 장에서는 여러분이 확실히 스트림을 이해할 수 있게 도와주고자 합니다. RP 기본 원칙의 상당수는 FP에서 파생되었으니 여기서부터 시작해 보겠습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.