[프로젝트 배경]

강빈·2021년 10월 14일
1

Mobile App

목록 보기
1/11

프로젝트 설명

웹으로만 구현된 프로젝트에 대한 사용자의 접근성을 높이기 위한 방법을 요청받았다.
모바일 앱이 푸시 노티 가능, 장소에 구애 받지 않는다는 점에서 사용자의 접근성을 극대화할 수 있다고 판단했고, 이에 대한 리서치를 시작했다.

먼저, 웹프론트엔드 개발자이기 때문에 앱개발에 대한 허들을 낮추기 위해 두 가지 방법을 고려했다.

1. PWA (Progressive Web App)

구글에서 개발했으며 웹과 앱의 장점을 합쳤다고 할 수 있다.
반응형 웹개발을 통해 정식으로 앱을 배포하지 않아도 마치 배포된 앱을 사용하는 것처럼 사용자에게 다가갈 수 있다. 앱에 대한 전문적인 지식 없이도 개발이 가능하며, 안드로이드, iOS 두 OS를 위한 각각의 코딩을 할 필요가 없다.
웹개발자도 낮은 허들로 개발할 수 있으며, 요구되는 앱의 기능이 단순하기 때문에 도입을 하려 하였으나,
아이폰에서는 푸시노티가 되지 않는다고 한다. FCM(Firebase Cloud Messaging)을 통한 방법도 찾아봤으나, 애플에서 푸시노티를 허용하지 않아 현재로써 다른 방법은 없는 듯 하여 포기했다.

2. 크로스플랫폼 앱 개발

말했다시피, 앱에서 요구되는 기능이 네이티브한 기능이 없고, 안드로이드, iOS 두 운영체제에 맞춰 각각의 네이티브 언어로 개발할 시, 개발/유지보수에 어려움이 있을 것이라 생각했다.
그래서, 대안으로 크로스플랫폼 앱 개발을 선택했다.
가장 핫한 크로스플랫폼 앱개발은 1. React-Native 2. Flutter 가 있다.
각각의 장단점이 있지만, Flutter로 개발할 시, Dart라는 새로운 언어를 배워야 한다는 부담이 있는 반면, React-Native에서는 React 개발자라면 개발접근성이 좋다는 측면에서 RN으로 개발을 결정했다.

예상되는 개발프로세스

  1. 모바일앱 UI
  2. 차트 UI
  3. API 데이터 연동
  4. 로그인기능(보안)
  5. 푸시노티
  6. QA
  7. 앱배포

추가적으로 늘어날 수 있지만, 우선은 이렇다.
처음으로 RN을 사용해보는 만큼, expo 사용하지 않고 처음부터 시작해보려 한다.
2. 차트 UI의 경우, 웹에서는 chart.js 를 사용 중이었는데 앱에서도 호환이 되는지 확인이 필요하다.
4. 로그인기능은 SSO인 키클록을 예상 중인데, 이것 또한 확인이 필요하다.
5. FCM을 사용하려 한다.
7. 앱배포는 안드로이드와 애플 모두 경험이 있어 애플의 까다로운 심사만 통과하면 스무스하게 진행될 것 같다.
etc. 전역state에 대한 고민을 했는데, 현재 웹에서 사용하는 recoil은 unstable 단계라 호환이 되지 않는다고 한다. 남은 옵션은 redux와 context 정도인데, redux는 사용 경험이 있지만, 단순한 어플리케이션에 너무 코드가 많이 들어갈 거 같아 전역state가 만약 필요하다면 context를 사용하려 한다.

전부 다 확정은 아니다.

0개의 댓글