본문 바로가기

Web + APP/Angular

RxJS를 시작하기 전에

반응형
SMALL

안녕하세요. 꼬동입니다.

 

Angular를 공부하다보면, 피할 수 없는 RxJS를 공부하고 있습니다.

 

뭐... Angular가 RxJS를 좋아한다고 했기 때문에, 공부를 하는 감도 있지만, 사실 fetch와 같은 메소드를 써도 충분히 구현이 가능한 것도 RxJS를 이용해서 구현하니 그 이유가 좀 궁굼했고, 책을 하나 구매해서 읽어 보았습니다.

도저히 RxJS를 무시할 수 없었습니다.... ㅠㅠ

그래서 해당 글은 'RxJS 퀵스타트'를 참고 했으며, 해당 글에 대한 정리가 될 수 있겠습니다.


개발을 좀 하는 사람들은 구현 자체에 초점을 맞추기보단, 소프트웨어를 얼마나 효과적으로 유지보수 할 수 있는지, 설계를 통해 얼마나 많은 문제점을 해결할 수 있는지를 고민합니다.

 

그래서 저희는 라이브러리, 디자인 패턴을 연구하게 되었고, 이런 고민이 녹아든 프레임워크에 빠져들게 됩니다.

 

즉, 프레임워크를 잘 사용하는 것보다 중요한건, 그 기술이 어떤 고민의 산물인지를 아는 것이 중요하다는거죠. (주니어 개발자들이 반드시 알아야하는 중요한 요소 중 하나죠)

 

RxJS도 같은 고민으로 탄생했습니다. 그렇다면 그들은 어떤 고민을 했는지 살펴봅시다.

 

웹 환경의 변화

Ajax 기술의 도입으로 새로운 페이지 요청 없이 데이터를 가져올 수 있으며, 웹 애플리케이션이 나오기 시작했습니다.

 

서버가 담당하던 비즈니스 문제를 브라우저가 담당하게 되면서, 사용성과 편리함을 제공했지만, 저희 같은 개발자는 죽어가고 있죠.

ㅠㅠㅠㅠㅠ

웹 개발 복잡도 증가

한 페이지에 존재하는 많은 기능이 생기면서, 서로가 복잡하게 엮일 수 밖에 없었고, 다음과 같은 고민을 하게 됩니다.

  • 웹 애플리케이션을 좀 더 쉽게 개발할 수 없을까?
  • 웹 애플리케이션에서 발생하는 오류들을 개발자가 통제할 수 있는 방법은 없을까?

이를 해결하기 위해서 웹 애플리케이션을 살펴봅시다.

웹 애플리케이션은 상태 머신

상태 머신은 상태와 상태 변화가 존재하는 수학적 모델을 의미합니다.

예시

예시 사진을 보면, 사용자가 Input으로 버튼을 누르고 button의 상태를 보고, On/Off를 결정합니다. 그렇기에 기존 상태와 input에 따라서 로직에 의해 현재 상태가 결정되는데 웹 애플리케이션은 이런 기능의 집합이라 보시면 됩니다.

웹 애플리케이션 오류가 발생하는 경우

하지만 개발을 하면서 절대 오류를 피할 수 없습니다. 많은 경우에서 오류가 발생합니다.

 

타입이 잘 못 됐거나, 값이 명확하지 않거나, 로직이 잘 못 됐거나 등등.. 이러한 오류를 잘 다룬 애플리케이션이 안정적인 애플리케이션으로 볼 수 있죠.

 

이러한 많은 오류를 그룹화를 하면 아래와 같습니다.

  1. 입력 오류 => 서버에서 잘 못된 데이터를 받은 경우
  2. 상태 오류 => 구성요소 간에 의존도가 있는 경우, 호출 순서에 의존도가 있는 경우
  3. 로직 오류 => 개발자가 구현하면서 생긴 로직 오류

이러한 오류를 줄이는게 중요하겠죠?

RxJS는 그래서 무엇을 하는가

RxJS는 MS가 만든 JS 라이브러리입니다.

 

RxJS의 경우 비동기 상황에서 많은 문제를 해결해준다고 합니다만, 그 본질은 위와 같은 오류를 해결하기 위한 고민의 산출물입니다.

 

RxJS는 결국 오류가 발생하지 않는 애플리케이션을 만들기 위해 일관된 방식으로 안전하게 데이터 흐름을 처리하도록 도와주는 라이브러리입니다.

 

이러한 이유로 상태 전파를 위한 리액티브 프로그래밍 패러다임이 녹아있고, 로직 오류를 방지하기 위해 함수형 프로그래밍 패러다임이 섞여있다고 보시면 됩니다.

 

이러한 개념을 가지고 같이 RxJS를 공부하도록 해볼까요 !?

물고기 커엽

http://www.kyobobook.co.kr/product/detailViewKor.laf?barcode=9791186710357 

 

RxJS 퀵스타트 - 교보문고

어리둥절한 RxJS를 개념부터 서비스까지! | 1부 RxJS 이해1부에서는 웹 애플리케이션을 개발할 때 발생하는 문제를 RxJS가 어떻게 해결하려고 했는지에 대한 RxJS의 기술적 고민을 이야기한다. 이를

www.kyobobook.co.kr


이상 RxJS를 시작하기 전에였습니다. ^_^

반응형
LIST