PM입장에서의 React-Native 적응기

 

직토

내가 올해 잘한 결정 Top3 안에 드는 것중 하나가 우리팀에 React-Native를 도입할 일이라고 농담반 진담반 이야기하고 다니고는 한다. 물론 팀이 가진 스페셜티도 한 몫을 했지만 프레임워크가 갖고 있는 특성도 분명히 존재할 것이다.

React-Native는 기본적으로 Facebook에서 웹개발을 위해 제작한 React에서 시작을 했다. React-Native역시 Facebook에서 만든 오픈소스 기술이고 이름 그대로 “Native”앱을 개발할 수 있다. 기존의 직토앱 같은 경우는 블루투스 통신 기능이 주가 되기 때문에 크로스플랫폼을 사용하기 굉장히 어려웠던 반면에 더챌린지는 비교적 서버에서 처리하는 부분들이 많기 때문에 더 시도해볼만 했다. 기술적인 디테일보다 조금더 프로젝트 매니징 관점에서 설명해보려고 한다.

리액트네이티브 리액트네이티브들

팀구성

먼저 우리팀에는

  • 네이티브 안드로이드 주니어 개발자
  • 게임쪽에 경력이 많던 백엔드 개발자
  • UX디자인과 웹퍼블리싱이 가능한 디자이너
  • 이 프로젝트를 제안한 댄디한 개발자
  • 화이팅을 외쳐주는 나

총 4명 같은 5명이 있다.기본적으로 iOS와 안드로이드를 양쪽으로 충분히 서포트하기 힘든 상황이었다. 그리하여 처음에는 웹뷰를 이용한 하이브리드 앱들 중(GILT등 해외 유명 쇼핑 앱등)에서 퍼포먼스가 좋은 앱들은 벤치마킹하고 있었다. 분명한 한계는 존재 했지만, 웹 퍼블리싱을 할 수 있는 디자이너를 최대한 활용하면서 적은 개발자와 함께 유지 보수를 할 수 있는 선택이었다.

Hello World, React Native

댄디한 개발자가 React Native를 사용해서 앱개발을 해보자는 당찬 제안을 했다. 그 때까지만해도 크로스플랫폼 프레임워크는 머릿속에는 크게 두 가지 선입견이 있었다. 첫번째는 퍼포먼스고 두번째는 리소스의 부족이었다. 네이티브앱 보다는 당연히 퍼포먼스가 떨어질 것이고, 범용성 역시 떨어지기 때문에 라이브러리 혹은 디버깅에 필요한 여러 문서의 부재가 개발에 걸림돌로 작용할 것 이라고 생각했다.

물론 하이브리드 앱을 만들려고 해놓고, 리액트네이티브의 퍼포먼스 이슈를 고민한다는 것 자체가 앞뒤가 맞지 않는 말이지만, 러닝커브와 들어가는 리소스를 고려했을 때 분명히 포기할 수 없는 부분인 것은 분명했다.

퍼포먼스

가장 먼저 리액트 네이티브를 채택한 회사들의 앱을 면밀히 분석하기 시작했다. 대표적인 앱이 Facebook과 Airbnb앱이고, 우리는 Airbnb앱을 레퍼런스로 삼았다. 사실 Airbnb와 Facebook앱을 보면 네이티브앱과의 차이를 늦기기가 굉장히 힘들다. ReatNative에서도 퍼포먼스에 대한 많은 고민을 하고 있고, 버젼이 업그레이드 되면서 개발자들이 신경쓰기 어려운 부분들을 챙겨주면서 퍼포먼스 역시 점점 좋아지고 있었다.

리액트네이티브를 사용하는 많은 회사들 리액트네이티브를 사용하는 많은 회사들

개발을 어느정도 진행한 지금은 퍼포먼스에 대한 이슈는 존재하지만, 충분히 해결할 만한 수준으로 판단된다. 모든 언어가 그렇듯 당연히 프레임워크나 언어로 시스템의 퍼포먼스를 정의할 수 없고, 개발자가 어떻게 디자인하느냐가 훨씬 더 큰 영향을 준다. 하지만 프레임워크의 중요성은 개발자가 얼마만큼 그 신경을 덜 쓰고도 혹은 어쩔 수 없이 그렇게 디자인하게 하느냐가 중요한 부분을 차지하고, 그점에서 리액트 네이티브는 꽤 쓸만한 플랫폼이라고 생각된다.

리소스

범용성이라는 측면에서 항상 고민되는 부분이 라이브러리와 문서화 혹은 트러블슈팅이다. 이 시대의 모든 대부분의 개발자(적어도 저는)가 Stackoverflow 혹은 Google이 없다면 아마 개발을 하기가 쉽지 않을 것으로 생각된다. React를 기반으로 한 프레임워크기 때문에 생각보다 라이브러리와 문서들이 존재를 했지만, 조금 아쉬운 부분은 어쩔수 없는 것 같다. 아래는 댄디한 개발자가 추천한 Tutorial List이다.

결론

최근에 Expo가 기본(?)으로 제공되면서 개인적으로 굉장히 애플리케이션 개발scene이 정말 혁명적으로 변화하고 있다는 느낌이 든다. 예전에는 라이브러리 설치하고, 구축환경 세팅하고, USB케이블이 되니 안되니, 드라이버를 깔고 하던 일이 정말 한큐에 끝나고 디플로이까지 되는 것을 보면 정말 빠르게 기술이 발전하고 있다는 걸 실감한다.

장점

  • 적은 리소스를 이용한 iOS/Android개발
  • 많은 상황에서 네이티브에 가까운 퍼포먼스
  • 웹 개발자의 빠른 이해

단점

  • 네이티브에 비해 부족한 리소스
  • 러닝커브
  • 새로운 개발자 뽑기가 힘듬(career@zikto.com) 로 지원해주세요. 쉽게 배울 수 있습니다. 어서 지원해주세요. 믿어주세요.

관련 스택

기업문화 엿볼 때, 더팀스

로그인

/