React Native에서 Kotlin으로 기술을 변경한 이유
1. 들어가기 앞서
안녕하세요! 팀 호남향우회에서 Native 및 FrontEnd 개발을 맡고 있는 버블티입니다. 들어가기 앞서 간단하게 ‘에그로그’ 모바일 앱 서비스를 만들며 알아보았던 내용들에 대해 설명하고자 합니다.
최근, 모바일 앱이 신흥 플랫폼으로 자리잡음에 따라 다양한 기업들과 개발자들은 모바일 앱에 관심을 가지고 있습니다. 때문에, 크로스 플랫폼인 React Native와 Flutter, 네이티브 앱인 Kotlin, Swift 기술에 많은 관심이 쏠리고 있습니다.
위와 같은 관심에 따라, 저희 모바일 앱 서비스 ‘에그로그’는 2023년 12월, React Native 기술로 개발을 시작했으나, 2024년 4월, Kotlin으로 기술을 변경하게 되었습니다.
그렇다면, 과거 React Native를 선택했던 이유와 현재 Kotlin을 선택한 이유까지 함께 알아보도록 할까요?
2. React Native? Flutter? Kotlin?
2023년 12월, 처음 기술을 선택할 때 ‘크로스 플랫폼’ 앱 개발 방식을 고려했습니다.
크로스 플랫폼?
- 크로스 플랫폼이란 여러 플랫폼에서 동일한 소스코드를 사용하여 앱을 개발하는 방법입니다. iOS, Android 두 개의 플랫폼에 하나의 소스코드로 어플을 제공할 수 있습니다.
저희가 크로스 플랫폼을 선택했던 이유는 1. 비용 절감 및 시간 단축과 2. 범용성이었습니다. 각 플랫폼에 맞출 필요 없이 하나의 소스코드로 빠른 개발이 가능하다는 점에 있어 너무나도 매력적인 크로스 플랫폼 개발 방식을 고른 후 해야할 일은 React Native 기술과 Flutter 기술 중 어떤 것을 선택할지 고민하는 것이었습니다.
React Native?
- React Native는 페이스북에서 모바일 애플리케이션 개발을 위해 만든 자바스크립트 프레임워크입니다.
- 또한, 오픈 소스 플랫폼으로 무료로 제공되고 있습니다.
Flutter?
- Flutter는 네이티브 앱과 유사한 성능을 제공하기 위해 기계어와 친숙한 Dart라는 언어를 채택해 사용합니다.
- Hot Reload 기능을 통해 코드 수정 결과를 실시간으로 확인할 수 있습니다.
각 기술을 보면, 성능이 더 좋은 것은 Flutter입니다. 그러나, 2023년 12월 저희는 빠른 개발을 원했기 때문에, 친숙한 언어인 React와 닮았던 React Native를 선택하였습니다.
2024년 4월, Kotlin으로 언어를 바꾼 이유 역시 목표가 빠른 개발이 아닌 안정적인 기능 구현에 있었기 때문입니다. React Native는 빠른 개발이 가능하지만, 라이브러리 안정성이 있어 많이 부족한 모습을 보였으며 추가되는 기능(알람, 알림 등)은 최적화 된 성능으로 제공 되었으면 하는 바람이 있었습니다. 이에 Kotlin 기술로의 변경을 고려하게 되었습니다.
네이티브 앱, Kotlin
- Kotlin은 Java의 아쉬움을 극복하고 Android에 최적화되어 나온 정적 입력 방식의 최신 프로그래밍 언어입니다.
- 플랫폼 사에서 제공하고 있기에 최적화 된 성능을 제공하고 있으며, 최신 기능을 지원하고 안정성을 보장받습니다.
- 커뮤니티가 매우 잘 활성화 되어있습니다.
이에, 고민 끝 사용자에게 최적화된 성능을 제공하고 어렵지만 익힌다면 좋은 무기가 될 수 있는 Kotlin으로 기술을 바꾸게 되었습니다.
3. React Native와 Kotlin을 사용하며
두 개의 언어를 모두 사용하며 느낀 개인적인 견해와 비교입니다. 모바일 앱 개발을 고민하며 어떠한 기술을 선택할지 고민하는 여러분에게 도움이 되었으면 합니다.
1) 기술
- React Native
- JavaScript 프레임워크로 JavaScript/JSX or TypeScript/TSX구문을 사용합니다.
- Kotlin
- Android 즉, 모바일 애플리케이션을 개발하기 위해 설계 되었다는 느낌이 강합니다.
- 총평
- 기술에 있어서는 개발자의 취향을 많이 탈 것이라 예상됩니다. 저의 경우 다양한 객체를 사용하고 의존성을 주입받으며 다채롭게 활용할 수 있었던 Kotlin이 조금 더 재밌었습니다.
2) 성능
- React Native
- 다양한 라이브러리를 활용할 수 있습니다.
- 원한다면 라이브러리를 제작해 직접 사용하고 활용할 수 있습니다.
- 렌더링에 대한 지식이 필요합니다.
- Kotlin
- 안드로이드 개발을 위해 만들어졌습니다.
- 패키지를 가져와 사용할 수 있습니다.
- 따로 타사 라이브러리가 필요하지 않으며 Android 응용프로그램 환경을 제공합니다.
- 총평
- 성능에 있어서, Kotlin을 React Native가 이길 수는 없을 것이라고 판단하고 있습니다. 그만큼 코틀린은 안드로이드 앱에 있어 강력한 성능을 보입니다.
3) 러닝커브
- React Natvie
- React를 사용해본 개발자라면, JavaScript를 조금이라도 해보았다면 React Native의 러닝커브는 급격하게 떨어집니다. 그만큼 배우기 쉬우며 빠른 개발을 위한다면 React Native를 선택하기 좋습니다.
- Kotlin
- 그저 어플리케이션을 만든다에 국한한다면, Java와 같은 객체 지향 언어를 알고 있다면 무난할 수 있습니다. 그러나, Hilt나 Dagger2를 사용한 의존성 주입, MVI 패턴, Clean Architecture 등 더 나은 개발을 위해 준비 중이라면 수많은 난관이 기다리고 있습니다.
- 그만큼 러닝커브가 높다면 높을 수 있는 언어입니다.
- 총평
- 빠른 개발을 위한다면 Kotlin은 추천하지 않습니다…
저도 알고 싶지 않았어요…
- 빠른 개발을 위한다면 Kotlin은 추천하지 않습니다…
4) 요약
- 빠르고 쉽고 다양한 사용자에게 앱을 제공하고자 한다면 React Native를 추천합니다.
- 안정성을 확보하고 다채로운 기능과 최적화된 성능, 안드로이드 전용 앱 개발, 시간에 구애받지 않는다면 Kotlin을 추천합니다.
Discussion and feedback