0. RxJava를 공부하게 된 계기🐥🐥🐥
코딩을 하다보면 여러 난관에 부딪히게 된다.
알고 있는 지식의 범위 안에서 쉽지만 오래걸리고 비효율적인 방법으로 처리가 가능했으나,
🌟추후에 규모 있는 프로젝트를 진행하게 된다면 이 부분에 있어 불편함을 겪게 될 것이라 생각했다🌟
ex) 콜백 지옥
물론 다른 여러 회사들이 요구하는 대표적인 기술 스택 중 하나라서 공부를 시작한 것도 있다.
그래서 더 궁금하기도 했고. 이게 대체 뭐하는 녀석이길래 다들 그렇게 사용할까?
1. RxJava란 무엇인가?
그에 앞서, 리액티브 프로그래밍에 대해 알고 가야 한다.
리액티브 프로그래밍이란,
"데이터의 흐름과 전달에 관한 프로그래밍 패러다임"이다.
p.s 우리가 흔히 알고 있는 객체지향 프로그래밍도 하나의 프로그래밍 패러다임이다!
리액티브 프로그래밍 패러다임 나무에는 RxSwift, Rx.NET, RxJs, RxKotlin, RxJava등의 줄기들이 있다.
우린 그 중 NetFlix 개발팀에서 개발한 RxJava에 대해 알아보려고 한다.
앞서 말했듯, RxJava는 ReactiveX 라이브러리의 JVM 구현체이다.
-> 자바 기반 플랫폼에서 사용할 수 있도록 개발된 라이브러리라는 말이다.
리액티브 프로그래밍은 함수형 프로그래밍 패러다임과 함께 사용해야 하는데,
Java는 함수형 프로그래밍 언어가 아니기 때문에 RxJava에서
순수 함수로 작성된 '리액티브 연산자'들을 제공한다.
. . . . . . .
이 외에도 RxJava에 대해 설명할 것이 많지만,
사실 RxJava가 무엇이고 어떤어떤 특징이 있다는 설명을 하는 것은 비효율적이다.
RxJava는 공부를 하면 할수록 저절로 이게 무엇이고, 왜 배워야 하는지 깨닫게 되기 때문이다.
공부를 하면 할수록 공부하는 본인 스스로
- 비동기처리를 이렇게만 해도 된다고? 콜백이 필요 없다고?
- 이걸 이렇게 짧고 효율적으로 짤 수 있다고?
- 이렇게 많은 데이터를 처리하는 과정의 코드가 이렇게 가독성이 좋다고?
라고 생각하고 느끼게 될 것이다.
나도 그랬고, 분명 공부하는 다른 사람들도 크게 느낄 것이다.
그래서인지 더 재밌고, 어떻게 활용할 수 있을까 행복한 상상(?)을 하면서 공부하다보니 흡수도 빠르다!
그래도 그냥 넘어가기는 아쉬우니 가장 대표적인 장점 3가지만 설명하고 빠르게 넘어가려 한다.
2. RxJava의 장🌟점
(1) 간결한 코드, 강력한 퍼포먼스
함수형 프로그래밍의 장점인 사이드 이펙트가 없는 순수 함수,
람다 + 메서드 래퍼런스의 적극적인 활용으로 코드를 직관적이고 효율적으로 작성할 수 있다.
(2) 콜백지옥 탈출 + 비교적 손쉬운 비동기 처리
콜백에 콜백에 콜백에 콜백. 이제는 그럴 필요가 없다. 리액티브가 알아서 해주니까.
(3) 관심사의 분리
애플리케이션의 크기가 방대해질수록 관심사의 분리는 더 완벽하게 수행되어야 한다.
3. RxJava의 단점
🔥 러닝커브가 가파르다
- 새파란 신입 개발자를 벗어나기 위해 필요한 기술 스택들은 보통 러닝커브가 높은데,
안드로이드에서는 RxJava와 Dagger가 러닝커브가 가파르기로 유명하다.
- RxJava를 처음 접해보는 사람은 물론, 거기에 함수형 프로그래밍도 접해본 적 없는 사람은 두배로 어렵다.
기존의 어떻게 어떻게 어떻게해서 이렇게 하라는 방식의 명령적 프로그래밍 방식에서 벗어나
무엇을 할 것인가에 중점을 두는 함수형 프로그래밍 패러다임을 받아들이는 것 또한 시간이 걸린다.
🔥 숙련되지 않으면 실무에 적용하기가 어렵다
- 모든 기술에 공통적으로 적용되는 말이겠지만,
리액티브자바는 특히 어떤 방식으로 사용해야할지 감이 잡히지 않는다.
함수형 프로그래밍이 생소하기도 하고, 데이터 흐름을 다루는 것에 익숙하지 않아서인 것 같기도 하고..
👍하지만 실보다 득이 훨씬 많을 것이다
- 위와 같은 단점들처럼 배우고 숙련되기 까지의 과정은 힘들것 같다.
하지만 3주간의 짧은 학습 과정 중에서도 이건 분명 내 코드를 백번 발전시켜줄 라이브러리다! 라고 생각했다.
4. 공부중인 책
(1) RxJava 프로그래밍 - 유동환, 박정준
RxJava를 처음 공부하는 사람이라면 이 책을 추천한다.
기초적인 부분부터 상세히 설명이 잘 되어 있고, 기본 지식들에 덧대어
"~~한 부분은 ~~하게 생각해서 연습해보면 도움이 될 것이다"라는 내용이 많아,
명령형 프로그래밍에 적응되어 있던 사고를 유연하게 만드는데 큰 도움이 되었다.
단점이라면 오래전에 출간된 책이라 최신 버전의 RxJava와는 다른 부분이 어느 정도 존재하며,
사용하는 다른 API들도 버전이 달라 실행이 원활하지 않은 경우도 있다.
(2) 아키텍처를 알아야 앱 개발이 보인다 - 옥수환
이 책은 아직 초반부를 공부하고 있다.(데이터 바인딩)
책의 내용은 거의 다 Developers의 공식 문서 번역 + 저자의 의견 조금으로 구성되어 있다.
중간중간 "이해를 위한 설명"이 아닌 "그냥 번역한 설명"이라는 느낌이 드는 파트가 꽤 있었고, 이 부분은 아쉬웠다.
1회독이 끝나면 제대로 된 후기를 남길 예정이다.
'개발' 카테고리의 다른 글
클린 아키텍처와 SOLID (1) | 2024.07.04 |
---|---|
레거시에 대하여 (0) | 2022.07.13 |