[Small-Tip] React Native VS Flutter

Mubby·2022년 3월 11일
0

소소팁(9xx)

목록 보기
2/5
post-thumbnail

보편적인 앱 개발 방식 종류


모바일 웹 앱

  • 모바일 웹 앱의 경우 결국에는 웹입니다. 따라서 스토어를 통해 다운받는 형식이 아닌 브라우저를 열고 검색해 들어가야 하며, 웹 페이지이기 때문에 휴대폰의 기능(플랫폼 API: 카메라 등)을 사용할 수 없고 오로지 브라우저 API만을 사용할 수 있습니다.

하이브리드 앱

  • 하이브리드 앱은 웹 개발 방식으로 모바일 UI 제작 후 안드로이드, iOS 웹뷰로 패키징하여 스토어(Google Play, App Store)에 올릴 수 있습니다.
  • 네이티브 기능에 접근해야 한다면 결국 네이티브 개발 지식이 필요합니다.

크로스 플랫폼 앱

  • 한 가지의 개발 언어와 프레임워크로 양쪽 앱 스토어에 출시할 수 있는 개발 방식입니다.

대표적인 두 가지 크로스 플랫폼 프레임워크 비교

React Native vs Flutter


사용 언어

  • React Native: JavaScript를 언어로 사용. 따라서 진입 장벽이 높지 않으며 추후 개발 인력 보충에 용이하다는 장점이 있습니다.
  • Flutter: Dart 언어를 사용. 한국에서는 생소한 언어이며, Flutter가 출시되기 전까지 최악의 언어 중 하나로 꼽혔습니다.

외부 패키지

  • React Native: 2013년 출시된 React 라이브러리와 대부분 호환이 가능하며, 풍부한 라이브러리 생태계가 잘 조성 되어있습니다.
  • Flutter: 출시가 오래되지 않았지만 구글 팀의 빠른 업데이트가 진행되는 중입니다. 하지만 필요한 패키지에 대해 사용하기 전 충분한 사전 조사가 필요합니다.

State Management

  • React Native: 글로벌하게 상태 관리를 할 수 있는 라이브러리를 사용하여 상태 관리가 용이합니다.
  • Flutter: Flutter팀에서 공식적으로 추천하는 BloC(Business Logic Components) 패턴 상태 관리의 경우 Stream을 사용하는데, 복잡한 오퍼레이션이 필요한 경우 코드가 난잡해질 수 있습니다. 잘 다룬다면 서버와 실시간 통신을 직접 할 수 있는 등의 장점이 있습니다.

개발프로세스

  • React Native: 개발 프로세스가 좋지 않은 편입니다. React Native는 Android와 iOS 컴포넌트를 끌어다 쓰는 Bridge역할을 하는데 한 컴포넌트를 화면에 띄었을 때 각각의 OS에서 다르게 보이거나, 보지 못한 버그가 존재할 수 있습니다. 따라서 각각의 플랫폼에 조건문을 생성해줘야 되는 경우와 플랫폼 별 디버깅이 필요합니다.
  • Flutter: 개발 프로세스가 flutter의 가장 큰 장점입니다. Flutter는 React Native와 다르게 직접 화면에 컴포넌트를 그립니다. 따라서 OS별 문제가 거의 없고 일관성 있게 작동 되며, React Native에 비해서 기본적으로 제공해주는 컴포넌트의 양이 많습니다.

결론


비교 분석해본 결과, 제가 만약 아무런 지식이 없는 상태로 위의 두 프레임워크 중 하나를 선택해 개발을 진행해야 한다면 저는 ‘Flutter’를 선택하겠습니다.

RN의 다양한 장점들이 개발 프로세스 부분에서 모두 뒤집힌다고 생각합니다. Android와 iOS 각각의 플랫폼에 셋팅이 필요했던 React Native과 다르게 Flutter는 이러한 이슈가 없고 앞선 생태계 부실 리스크의 경우 시간이 지나면 많은 부분 해소될 것입니다.

현재 Flutter를 사용하는 것에 대한 가장 큰 리스크는 Dart언어의 습득입니다. Dart언어가 예쁘지 않기 때문에 배우는 데 다소 시간이 필요합니다.

Flutter 프레임워크를 이용하더라도 iOS 배포를 위해서는 결국 맥북 사용이 필수 불가결해 보입니다. 앱의 세부 설정 및 iOS 에뮬레이터 테스트 등 배포를 위한 과정에서 맥북 사용이 필요하다고 합니다.



참고사이트:
네이티브 앱 / 웹앱 / 크로스플랫폼앱 / 하이브리 앱
[REACT NATIVE VS FLUTTER] 크로스플랫폼 앱 개발, 어떤 프레임워크를 사용해야 하나?

0개의 댓글