-
[개발 회고] 현명하게 크로스 플랫폼 서비스 개발하기Making 2023. 4. 22. 16:43
안녕하세요. 마이너리에서 프론트엔드와 백엔드를 담당하고 있는 개발자 폭스입니다. 어느덧 마이너리팀과 함께 하며 개발한지 2년이 넘었는데요, 그동안 숨어서 열심히 개발만 하다가 이렇게 인사를 드리게 되었습니다. 개인적으로 운영하던 개발 블로그에서 손을 뗀지가 3년이 넘은 것 같은데 마이너리 덕분에 기회가 생겨 오랜만에 긴 글을 써보려고 합니다.
마이너리는 크로스 플랫폼 서비스?
마이너리는 크로스 플랫폼 프레임워크를 이용해 개발되어 Android와 IOS 앱으로 만나볼 수 있습니다. 지금은 좋은 개발자 분들이 많이 합류해 함께하고 계서서 개발이 잘 진행되고 있지만, 마이너리 1.0 버전을 출시할 때 까지만 해도 개발자가 저 한명 뿐이였습니다. 때문에 백엔드와 스크래핑은 물론 Android, IOS 앱까지 모두 개발 해내야만 했습니다.
하지만 마이너리를 사이드 프로젝트로 진행하고 있었기 때문에 실제로 개발할 수 있는 시간이 매우 부족했습니다. Android, IOS 앱을 모두 네이티브로 개발했다간 개발이 끝나지 않아 출시하지 못하게 될게 분명했습니다.
정신을 잃을뻔한 저는 결국 Android와 IOS를 한번에 해결할 수 있는 크로스 플랫폼 프레임워크를 사용해 빠르게 개발하기로 했습니다.
크로스 플랫폼 프레임워크는 개발자가 한 벌의 코드만 작성하면 Android와 IOS 앱을 모두 개발할 수 있게 만들어주는 도구 입니다. 이러한 크로스 플랫폼 프레임워크는 React Native, Flutter, Xamarin등 다양한 종류가 있지만 마이너리는 React Native를 사용해 개발하게 되었습니다.
React Native를 선택한 이유는 아래와 같이 크게 4가지 정도가 있었습니다.
- 기존 웹 프론트엔드 개발자라면 새로운 언어를 학습할 필요 없이 JS/TS로 개발할 수 있습니다.
- React와 문법이 동일해 React 개발자들이 쉽게 접근할 수 있습니다.
- 관련 라이브러리, 유즈케이스, 커뮤니티가 활발해 문제가 발생했을 때 해결하기 수월합니다.
- 비교적 적은 리소스로 크로스 플랫폼 서비스를 개발할 수 있습니다.그렇게 기술스택을 선택한 후, 마이너리는 6개월 간의 개발을 통해 1.0 배포를 마치게 되었습니다. 생각보다 할 일들도 많았고, 시간 할애도 많이 못해 길어진 감이 있긴 했지만, 지금와서 돌아보면 출시를 했다는 것 자체가 기적이라고 생각합니다. (어떻게 해낸건지 본인도 모르겠음)
Expo 쓰지 마세요
React Native 앱을 통해 크로스 플랫폼 서비스를 개발하면서 수 많은 장점을 경험 했지만, 가장 후회했던 큰 실책이 하나 있었습니다.
마이너리 개발을 시작했던 당시에 순수 React Native는 디버깅을 하기 위해 앱을 켜기도, 네이티브 모듈을 연동하기도, 배포를 위해 앱을 번들링 하기도, CodePush를 설정하기도 어려웠습니다. 그래서 이 모든 문제를 편하게 해결해주는 Expo 라는 툴을 사용했습니다.
하지만 Expo를 사용하면 앱이 사용하지 않는 필요 없는 모듈까지 함께 번들링 되기 때문에 앱의 용량이 커지고, 메모리를 많이 먹는 등의 문제가 발생합니다. 성능이 중요하거나 규모가 있는 서비스의 경우 Expo 보다는 순수 React Native 만으로 개발하는 것을 추천합니다.
또 Expo 개발사 측에서 기존에 사용중이던 빌드 시스템 지원을 갑자기 중단해 버렸던 문제도 경험했습니다. 이를 해결하려면 Expo의 핵심 모듈을 업데이트 해야 하는데, 핵심 모듈을 업데이트하면 다른 모듈들이 아직 최신 버전이 지원되지 않아 앱을 빌드하지 못하는 상황이 발생했습니다. 이 문제 때문에 마이너리 1.5 버전도 출시가 1달정도 미뤄지게 되기도 했습니다.
결국 Expo를 걷어내야 한다는 결론에 도달했고, 한달에 걸쳐 expo 모듈을 걷어내고 네이티브 모듈로 교체한 끝에 1.5 버전을 성공적으로 출시하게 되었습니다. 새롭게 React Native 앱 개발을 시작하시는 분들은 당장 편하다고 Expo를 사용하지 말고 순수 React Native를 통해 개발하는 것을 추천드립니다. 아직 규모가 있는 서비스나 현업에서는 Expo를 사용하는건 무리라고 말씀 드릴 수 있을 것 같습니다.
마이너리는 크로스 플랫폼이자 하이브리드 앱이다?
크로스 플랫폼으로 개발된 마이너리는 하이브리드 앱이기도 합니다.
하이브리드 앱이란?
하이브리드 앱은 UI와 인터렉션, 통신 등과 같이 기본적인 기능은 HTML 등 웹 표준 기술을 기반으로 구현하고, 해당 웹 페이지를 네이티브 앱 내에서 네이티브 UI처럼 보여주는 앱 입니다. 유저에게는 네이티브앱의 UI처럼 보이지만 실제로는 앱 내에서 웹뷰를 통해 웹 화면을 띄워 동작하는 방식 입니다.하이브리드 앱은 UI 변경사항이 있을 때 웹 페이지 HTML 소스코드만 다시 배포하면 반영되기 때문에 순수 네이티브 앱과 다르게 업데이트와 유지보수에 매우 유리한 장점이 있습니다.
이러한 하이브리드 방식을 가장 잘 활용하고 있는 대표적인 기업은 토스 입니다. 토스는 실제로 숨은 카드 포인트 찾기, 숨은 정부 지원금 찾기 등 UI가 자주 변경될 가능성이 있는 실험적인 기능들을 모두 하이브리드 방식으로 구현하고 있습니다.
마이너리에서는 일기 공유 기능을 위해 하이브리드 방식을 도입했습니다. 유저가 자신이 작성한 일기를 공유 하면, 앱을 설치하지 않은 유저도 해당 일기를 확인할 수 있어야 했습니다. 따라서 해당 페이지를 웹 페이지로 구현하고 동일한 UI를 React Native로 두 번 구현하기 보다는 앱 내에 내장시키게 되었습니다.
하이브리드 방식의 단점
하이브리드 앱에는 장점만 있는건 아닙니다. 웹 기술을 통해 UI를 구현하다보니 유저에게 네이티브 앱과 동일한 경험을 주기 위해 추가적인 애니메이션, 엑티비티 전환등의 효과를 개발해야 하거나, 카메라, 파일 읽고쓰기와 같이 네이티브 기능을 연동하기 위해 앱과 통신을 해야하는 등 다소 번거로운 작업들이 필요합니다.또한 네이티브 앱보다 성능 최적화에 한계가 있기 때문에 로딩이 길거나 프레임이 끊기는 등의 문제가 발생하기도 합니다. 결론적으로 성능이 중요하거나 규모가 큰 서비스의 경우 하이브리드 방식보다 네이티브 방식이 더 유리할 때가 많습니다.
아직 마이너리는 단순히 개발 공수를 줄이기 위해 하이브리드 방식을 사용했지만, 앞으로는 하이브리드 방식을 더 적극적으로 사용할 예정입니다.
앞으로의 마이너리 서비스는?
2023년 마이너리가 예창패에 선정되었습니다! 👏👏👏👏
때문에 1년안에 빠르게 성장해야 하는 목표가 생겼는데요, 이를 위해 내 주변 와인숍 모아보기, 와인숍 사장님께 와인 추천 받기 등 새로운 기능들을 준비하고 있습니다.빠르게 성장하기 위해서 가장 먼저 해야할 액션은 공격적인 마케팅을 통해 유저를 많이 데려오는 것 입니다. 하지만 모바일 앱은 유저가 해당 앱을 설치해야 하는 퍼널이 필수이기 때문에 마케팅 전환율에 매우 불리합니다.
이는 경험을 통해 직접 깨닳았던 점이기도 합니다. 여러 서비스를 다양한 방식으로 퍼포먼스 마케팅을 직접 진행해본 결과, CPA(Cost Per Activation)를 1000원 이하로 만들기는 불가능한 수준에 가까웠습니다. 통계를 확인해도 국내 평균 마케팅 CPI(Cost Per Install / 앱 설치당 비용)가 2,200~10,200원 사이로 높은 것을 알 수 있습니다.
하지만 웹 서비스의 경우 마케팅 컨텐츠를 클릭하자마자 서비스에 접속하게 되고, 유저가 해당 기능을 바로 경험할 수 있기 때문에 매우 저렴한 CPA를 만들 수 있습니다. 대략 네이티브 앱 보다 3~4배 저렴한 비용으로 유저를 전환시킬 수 있다고 볼 수 있습니다.
이렇게 웹 서비스에서 빠르게 마이너리 서비스를 경험한 유저들은, 회원가입을 하거나 앱을 설치할 확률이 높아지고, 마이너리 서비스에 재방문할 가능성이 높습니다. 따라서 상대적으로 적은 마케팅 비용으로도 많은 유저를 확보하기 유리합니다.
아직 전체 구성원분들과 논의 되지는 않았지만, 이러한 이유 때문에 앞으로 마이너리에서 개발되는 서비스는 대부분 웹으로 구현하고 앱에 하이브리드 방식으로 내장시키는 방향으로 개발될 예정입니다.
웹에서도 편하게 이용할 수 있는 마이너리를 기대해 주세요!
🔊마이너리 앱, SNS 많은 관심과 사랑 부탁드려요-!
‣ instagram : https://www.instagram.com/minery_app/
‣ facebook : https://www.facebook.com/minery.wine/마이너리 팀🍷에게 궁금한 점은 언제든지 알려주세요!
Contact us ➡️ minery.app@gmail.com마이너리 다운로드 바로가기⬇️
'Making' 카테고리의 다른 글
[개발 협업] 신입개발자의 사이드프로젝트 협업 일기 (0) 2023.04.23 [앱서비스 리뉴얼] 신규 와인검색 기능으로 더욱 편리해진 마이너리 등장! (0) 2023.04.22 [개발 회고] 마이너리 웹 개발자의 개발 회고 (1) 2023.04.16 [개발 회고] 프론트엔드 개발자의 검색 시스템 개발 회고 (0) 2023.04.08 [SNS콘텐츠기획] 기획 노하우 4가지 실전판 (feat. 저작권 없는 무료이미지 사이트) (0) 2023.02.19