리액트 네이티브로 13년 된 네이티브 앱 전환하기
(ridicorp.com)리디북스가 네이티브 앱에서 리액트 네이티브로 전환하는 과정에서 겪었던 경험에 대한 이야기
1. 리액트 네이티브를 선택한 이유
- 기존에는 웹에서 콘텐츠 탐색 및 결제를 하고 앱을 뷰어로 사용해왔었는데, 앱에서도 탐색 및 결제 기능을 도입하기로 결정. 빠른 변화에 대응 및 주어진 기간 내에 목표를 달성하기 위해 크로스 플랫폼 개발이 가능한 기술 도입 결정
- 플러터 / 리액트 네이티브를 고민하던 중에 리액트 네이티브가 커뮤니티가 조금 더 안정화, 활성화되어 있어서 리액트 네이티브 결정
2. 네이티브 기반 vs 리액트 네이티브 기반
- 네이티브 앱에 리액트 네이티브를 올릴지, 아니면 반대로 리액트 네이티브 위에 네이티브를 올릴지에 대해서 고민
- 네이티브 위에 리액트 네이티브를 올리면 화면별로 endpoint 달라지고, 앱 라이프사이클 관리가 복잡해짐
- 리액트 네이티브 위에 네이티브를 올릴 경우 기존의 네이티브 코드가 리액트 네이티브와 호환되도록 한번 수정을 해야함. 미래에는 리액트 네이티브로 아예 새로 작성을 해야 함
- 어짜피 대부분의 기능을 모두 리액트 네이티브로 옮겨갈 예정이여서 리액트 네이티브 위에 네이티브를 올리는 방향으로 가기로 결정
3. 네이티브 화면 재활용
- 주어진 기간 내에 변화게 빠르게 대응하기 위하여 새로운 화면은 리액트 네이티브로 작성하고 기존 화면은 네이티브 화면을 유지하도록 결정 (네이티브 화면은 점진적으로 리액트 네이티브로 전환)
4. 네이티브 코드 재활용
- 리디북스에서 13년간 유지보수하며 쌓아 올린 네이티브의 정수를 리액트 네이티브에 녹여낼 수 있을까? 기존의 네이티브 앱에서 Swift, Kotlin을 사용하고 있었는데 이걸 그대로 리액트 네이티브에서 쓸 수 있을지에 대한 검증
- 브릿지를 만들어서 기존 방식대로 사용 가능
5. 적용 과정의 애로사항
- 번들 크기와 메모리 사용량이 증가함
- 번들 크기는 예상한 수준이였으나 메모리는 처참했음. 최적화에 대해서 많이 신경을 써야했다.
- 써드파티 라이브러리를 신뢰하기 어려움
- 네이티브와 프론트 모두 간과할 수 없음. 네이티브 개발자가 프론트 개발을, 프론트 개발자가 네이티브 개발을 알아가야함. 서로 간 교류가 성공의 핵심임.
6. 리액트 네이티브 이래서 좋다
- 높은 생산성
- 협업하기 좋은 플랫폼
리액트 네이티브 덕분에 주어진 기간 내에 제품 로드맵을 달성했으며 변화에 빠르게 대응하는 환경과 생산성을 갖춤. 앞으로 본격적으로 네이티브 영역을 리액트 네이티브로 바꿔나갈 예정. 하지만, 뷰어는 13년간 쌓아 올린 노하우가 있기 때문에 이는 계속 유지하며 최상의 사용자 경험을 제공할 것.
구글 트렌드로 키워드 검색 한번 해보셨는지 모르겠는데 RN 생태계는 거의 죽어가고 있습니다. 그에 반해 플러터는 폭발적으로 성장 중이죠. 참고로 저는 네이티브 개발자입니다.
사용자 입장에서 데스크탑앱은 이전버전보다 성능이 떨어진거 같더라구요. 예전에는 페이지 넘길때 딜레이를 느끼지 못했는데 요즘은 계속 버벅이더라구요.
리디북스 데스크탑 앱을 오랫동안 사용해 왔던 입장에서는 이 결정이 철저하게 모바일만을 염두에 둔 것이 아닌가 하는 아쉬움이 드네요. 저만 그런 게 아니라 데스크탑 앱 쓴다는 사람들 열이면 열 지속적인 버그에 시달리고 있어서... (옛날 Qt 기반 앱보다 더 심함)
저도 직접 개발하는 입장은 아니지만 제가 접하는 커뮤니티에서의 플러터 찬양을 보고 회사 앱 개발자분께 이야기하니 리액트를 더 애정하시더라구요. 저변이나 채용 시장등이 더 좋다고 하시면서요. 다른 분들 생각도 들어보고 싶네요
동일하게 안드로이드는 괜찮을텐데 iOS를 따라갈 수 있을지 모르겠네요
통합으로 인한 엔트로피에 대한 비용을 간과하면 안된다고 생각합니다.
리엑트 네이티브로 2~3년전에 개발해서 런칭하고...
개인적으로 장점 보다 단점이 많다고 생각했고..
+ AirBnb가 포기하고 발빼면서 적은글 보고 (+ 3rd 파티 라이브러리의 생산 라인 한축이 사라진 셈이라..)
https://m.blog.naver.com/PostView.naver/…
관심을 많이 접은 상태였는데... 인기는 여전하네요.