프로젝트/갭이어

앱개발은 어떻게 하는걸까? 웹이랑 다른건 뭘까?

mynamemj 2024. 6. 4. 19:13

이번에 친구와 프로젝트를 진행하게 되었다. 난 웹 기반이기 때문에 웹 개발을 깔고 간다 생각했는데 친구 생각은 조금 달랐던 모양이다. 앱 개발을 원하는데, 이 의견에 반대를 하려해도 내가 뭘 알아야 설명 해 줄 것 아닌가? 그래서 검색 해보고 나름 정리를 해봤다.

아 그리고 친구한테 설명할 용도로 작성한 글을 거의 그대로 가져온거라 내용이 이상할 수 있고, 앱개발은 손도 안대보고 처음 지식을 모으는 중이다보니 잘못된 정보가 스며들었을 수도 있다. 내가 아닌 누군가가 정보를 위해 이 글을 본다면 이 점 유의하길 바란다.

앱 개발에는 크게 두 가지 플랫폼이 존재한다.

  1. Android
  2. IOS 이 두 플랫폼에 맞춰 개발 하는 방법 또한 여러개인데, 네이티브 앱은 각 플랫폼에 맞춰진 언어 (안드로이드의 경우 Kotlin, IOS의 경우 Swift)로 개발을 한 앱을 말한다. 크로스플랫폼은 React Native, Flutter로 개발한 앱을 말한다. 언뜻 보기엔 크로스 플랫폼으로 개발하면 땡 아니야? 싶지만 각각의 장단점은 분명 존재한다. 나 역시 이 차이점을 모르고 있기 때문에 이를 공부해보고 어떤 서비스 제공방식(웹, 앱)이 프로젝트를 수행함에 있어 적합한지 적어보려한다.

Native App

  1. 네이티브 앱의 장점 네이티브 앱은 각 모바일 OS 기반의 API로 개발하기 때문에 속도가 빠르고 안정적이다. 퍼포먼스 또한 다양하게 구현할 수 있기 때문에 사용자 경험에 있어 유리하다. 모바일 OS에서 제공하는 기능인 블루투스, 위치기반 서비스, 앱 결제 등에 접근이 자유롭고 디바이스에 액세스할 수 있어 주소록, 캘린더 등의 정보도 활용이 가능하다.
  2. 네이티브 앱의 단점 모바일 OS 각각 개발을 해야하기 때문에 유지보수, 개발의 소요가 크다. 수정과 업데이트가 있다면 두 번 작업을 해야한다.
  3. Kotlin과 Swift의 특징 코틀린은 JAVA기반의 언어로 보인다. 자바와 상호 운용이 가능하며 자바 프레임워크인 스프링, 스프링부트를 이용한 개발도 가능하다고 한다. 스위프트는 C언어 기반으로 보인다. 오브젝티브-C, 러스트(Rust), 파이썬(Python) 등 다양한 언어에서 아이디어를 가지고 왔다고 하니 비교적? 학습이 빠르지 않을까 생각이 든다.

Cross Platform

  1. 크로스 플랫폼 앱의 장점 네이티브 앱의 단점을 반대로, 크로스 플랫폼의 장점으로 가지고 올 수 있다. 하나의 언어로 개발하여 두 모바일 OS에 맞는 코드로 컴파일(번역) 하여 네이티브 앱을 만드는 방식이다.
  2. 크로스 플랫폼 앱의 단점 네이티브 앱에 비해 성능이 떨어져 100%의 퍼포먼스를 낼 수 없다. 느릴수도 있고, 라이브러리의 부족으로 기능 구현에 문제가 생길 수 있다. 또한 모바일에 새로운 기능이 생겨도 적용을 바로 할 수 없다.
  3. Flutter와 React Native의 특징 플루터는 구글의 SDK(software development kit)로 다른 크로스플랫폼 앱보다 기능적이고, 네이티브 앱과 유사한 성능을 구현할 수 있다. 특히 미리 만들어진 위젯 라이브러리를 사용하여 빠르게 개발할 수 있다는 점에서 주로 개발 비용을 줄이고, 속도를 높이고 싶은 스타트업에게 많은 선택을 받고 있다. 하지만 Dart언어 기반으로 러닝커브가 심한편이다. RN는 Javascript 기반으로 기존에 React개발자라면 익숙한 방식으로 개발을 할 수 있다는 장점이 있다.

Web App

웹앱은 사실상 웹이다. 다만 모바일 접속을 고려해 반응형 또는 적응형 디자인으로 만든걸 볼 뿐이다. 구글이나 네이버를 모바일로 들어가봐라. 앱이 아니어도 앱처럼 사용이 가능하다. 장점으로는 앱 개발처럼 각 플랫폼의 심사를 기다릴 필요가 없다(업데이트마다) 그냥 웹이니까. 단점으로는 웹 브라우저에서 할 수 있는 기능 이외의 것을 할 수 없다. 디바이스 기능을 뽑아 쓸 수 없다는 이야기다. 크로스플랫폼보다 활용은 뒤쳐진다. 또한 앱은 다운받아서 그 어플을 들어가 사용하는것이지만, 웹앱은 주소를 치고 들어가야한다. qr로 접속하거나 주소정보를 기억하고있는 앱을 만들면 앱처럼 사용할 수 있지만 그건 그저 그 앱을 누르면 지정된 주소로 이동하는 도구일 뿐이다.

Hybrid App

웹앱과 네이티브앱을 합친 개념이다. 앱 자체는 네이티브 또는 크로스플랫폼 방식으로 제작하되 내부의 컨텐츠는 브라우저 역할을 하는 웹뷰 요소를 만들에 웹 화면을 띄운다. 사용자는 웹 뷰를 통해 웹사이트로 만들어진 기능을 앱 처럼 사용한다. 웹사이트에서 제공할 수 없는 디바이스의 기능은 네이티브단에서 수행한다.

So, What Should I Do

어떤게 유리하고, 적합한지는 내가 더 잘 알기 때문에 종합을 해보고 의견을 내본다. 프로젝트의 규모나 기간상 네이티브 앱은 불가하다. 앱으로 개발한다면 크로스플랫폼으로 가야하고, 그 중 React Native가 내 현재 기술 스택에 가장 적합하다. 이미 난 React 기반의 FrontEnd 개발자니까. 다만 우리 프로젝트 제품의 기능이 어느 범위까지 제공을 하느냐에 따라 웹앱 개발과 앱 개발을 고민할 필요가 있다.

첫 째, 디바이스의 기능을 활용 할 것인가? 사진등과 같이 디바이스 기능을 사용해야하는 경우 앱개발이 좋다. 웹에서 제공할 수 없는 사용자 경험을 줄 수 있을것이다. 다만 사용하지 않는다면 웹과 다를건 없다.

둘 째, 접근성 아무래도 이런건 앱으로 개발을 해야해! 라고 생각 하는 이유가 이런 것 일거다. 쿠팡이나 무신사처럼 거래 플랫폼은 다 앱이니까, 또 스토어에서 받아서 사용하는 편리함도 있다. 웹에서 들어갈 일이 잘 없어서 모르겠지만 당근 같은 서비스는 웹을 제공하지 않는다. 웹 서비스 제공이 필요 없을 수 있지만, 앱을 깔지 않으면 사용을 하지 못한다는 사실도 있다. 컨텐츠의 구성이나 내용에 따라 다를 수 있지만 웹으로 봐야 편한것과 앱으로 봐도 좋은건 있다.

대충 이 두개만 봤을 때, 개발 공수측면에서 1순위는 웹앱이고 2순위는 RN 크로스 플랫폼 앱이다. 웹앱이 당연히 개발속도나 완성도 측면에서 높지만, 하이퀄리티가 아니라면, 리액트 네이티브 앱 개발도 나쁘지 않다고 본다. 또한 접근성 측면에서 그래도 앱으로 접근하는게 좋아! 웹은 추후 개발 범위에 넣을 수 있지! 라면 앱 개발이 맞다.