-
Android Native App 개발 - ①Android 2023. 4. 11. 17:04
들어가기 전에
04.07(금) 서비스 업데이트가 마무리 되었고 새로운 프로젝트를 준비하게 되었다.
기존의 제공되던 회사 서비스는 플레이스토어에서 다운받아 사용할 수 없었고 모바일 웹 브라우저를 통해서 서비스를 확인할 수 있는 웹 앱으로 제공하고 있었다.
이 글에서는 네이티브 앱을 만들기 위한 준비를 위해 필요한 정보를 정리하려고 한다.
애플리케이션의 종류는 대표적으로 3가지로 나뉘게된다.
- 웹 앱 (Web Application)
- 네이티브 앱 (Native Application)
- 하이브리드 앱 (Hybrid Application)
애플리케이션의 종류가 다양한 이유는 무엇일까
데스크톱과 개인용 컴퓨터가 유일한 디바이스였을 당시, 기업들은 온프레미스 또는 회사의 데이터 센터에 애플리케이션을 설치한 다음 회사 네트워크를 통해 기능을 제공했다.
대부분의 초기 애플리케이션은 클라이언트·서버 아키텍처를 사용했다. 온프레미스 서버가 중앙에서 데이터를 저장하고 처리했다. 사용자는 디바이스에 별도의 클라이언트 앱을 설치해야 했다. 이 클라이언트 앱이 서버와 통신했다. 다양한 플랫폼마다 별도의 클라이언트 앱 버전을 개발하고 설치해야 했다. 예를 들어, Windows 시스템과 Linux 시스템은 다른 버전이 필요했다.
웹 앱과 모바일 앱의 진화
인터넷이 성장함에 따라 서버와 클라이언트는 전 세계 어디에나 위치할 수 있게 되었다. 웹 애플리케이션이 등장하면서 당시의 애플리케이션보다 더 많은 사용자에게 접근하고 더 큰 유연성을 제공하기 시작했다. 클라이언트 앱을 설치하는 대신, 사용자는 브라우저에서 서버 기능에 직접 액세스할 수 있었다. 그와 동시에, 모바일 디바이스가 개발되면서 애플리케이션을 제공할 새로운 플랫폼이 만들어졌다. 결과적으로 사용자가 소프트웨어 기능에 액세스하는 방법을 더 다양하게 선택할 수 있게 되었다. 즉, 브라우저를 사용하거나 아니면 원하는 디바이스에 앱을 설치할 수 있게 된 것이다.
앱 개발의 과제
오늘날의 기업들은 여러 사용자 그룹에 접근하기 위해 다양한 유형의 웹 및 모바일 애플리케이션을 개발해야 한다. 다음은 몇 가지 예이다.
- 브라우저에서 작업하려는 사용자를 위한 웹 앱
- 데스크톱 사용자를 위한 Windows 및 MacOS 애플리케이션
- Android 디바이스용 Android 앱
- iOS 디바이스용 iOS 앱
오늘날의 앱 개발자들은 동일한 소프트웨어를 여러 언어로 작성해야 한다. 또한, 동일한 소프트웨어를 다양한 플랫폼에서 테스트하고 패키징하여 배포해야 한다. 따라서 새로운 기능을 릴리스하고 버그 수정하며 소프트웨어를 유지 관리하는 데 시간이 많이 걸리고 비용이 많이 든다. 컨테이너 및 서비스 지향 아키텍처와 같은 다양한 설계 솔루션으로 이 문제를 해결할 수 있다. 다양한 설계 방식으로 인해 다양한 유형의 웹 및 모바일 애플리케이션이 탄생했다.
주요 차이점: 웹 앱 vs. 네이티브 앱
웹 앱이라는 용어는 데스크톱 또는 모바일 디바이스의 브라우저에서 액세스할 수 있는 앱을 말한다. 네이티브 앱이라는 용어는 디바이스에 다운로드하여 설치할 수 있는 앱을 말한다. 네이티브 앱은 모바일 디바이스용으로 특별히 개발된 앱이다. 네이티브 앱, 네이티브 모바일 앱, 모바일 앱이라는 용어는 동일한 유형의 소프트웨어를 나타내는 데 서로 구분 없이 사용되기도 한다.
기능
웹 앱에서는 사용자가 웹 브라우저에서 지원하는 조작 기능만 사용할 수 있다. 웹 애플리케이션에 풍부한 설계 요소가 적용되었더라도, 디바이스 기능에 액세스할 수 없다. 반면, 네이티브 모바일 앱에서는 사용자가 디바이스의 내부 하드웨어 및 운영 체제를 조작할 수 있다.
- 디바이스 위치 추적
- 디바이스 마이크 및 카메라
- 사용자 연락처 목록
- 터치 제스처, 디바이스 기울이기 및 기타 사용자 조작
- 지문 인식 또는 얼굴 인식과 같은 디바이스 보안 기능
사용자 경험
웹 앱은 브라우저에 따라 많이 달라지기 때문에 사용자 경험이 일관되지 않습니다. 특정 기능 또는 이미지가 브라우저에 따라 다르게 보일 수 있다. 모바일 브라우저에서 버튼과 메뉴 모음 기능에 액세스하기 어려울 수 있다. 브라우저 창의 크기를 조정하면 웹 앱의 모양, 느낌 및 기능에 영향을 미칠 수 있다.
네이티브 앱이 사용자에게 더 나은 경험을 제공하는 경우가 많다. 예를 들어 네이티브 앱은 화면을 채우고 전체 디바이스를 제어한다. 조작 방법이 사용자에게 익숙하기 때문에 사용자가 네이티브 앱을 더 능숙하게 활용할 수 있다. 또한 네이티브 앱은 사용자에게 푸시 알림을 보내고 사용자가 앱을 다시 사용하도록 유도할 수 있다.
성능
네이티브 앱은 웹 앱보다 더 나은 성능 제공한다. 더 빠르고, 응답성과 조작성이 더 뛰어나다. 하지만 네이티브 앱의 성능을 유지 관리할 책임이 사용자에게 있다. 앱이 최적의 상태로 실행되도록 하려면 사용자가 정기적인 소프트웨어 업데이트를 다운로드하고 설치해야 한다. 웹 애플리케이션은 속도가 느리고 응답성이 떨어지지만 성능을 보다 세부적으로 제어할 수 있다. 소프트웨어 업데이트가 모든 사용자에게 즉시 적용된다.
앱 개발
웹 앱은 비교적 단순하고, 가격이 낮으며, 개발 속도가 빠르다. 앱 개발 프로세스가 간단하기 때문에 출시 기간이 단축된다. 또한 단일 코드베이스를 테스트하고 업데이트하기만 하면 되므로 유지 관리하기가 더 쉽다. 네이티브 앱은 더 많은 재정적 투자를 필요로 한다. 또한 교차 플랫폼 개발 경험이 있는 개발 팀도 필요하다. 예를 들어, 네이티브 iOS 앱을 전문으로 하는 개발자는 네이티브 Android 앱을 구축하는 데 적합하지 않을 수 있다.
방대한 고객층
사용자가 앱에 액세스하려면 인터넷 연결이 필요하기 때문에 웹 앱은 고객층이 제한적이다. 웹 앱의 경우 사용자가 먼저 모바일 브라우저를 열고 앱을 찾아야 하므로, 여러 단계의 프로세스를 거쳐 액세스하게 된다. 반면, 네이티브 앱은 사용자의 디바이스에서 오프라인으로 작동하도록 설계할 수 있다. 또한 네이티브 앱은 앱 스토어에서 제공되므로 검색에서 더 많이 노출된다. 앱 스토어 내에서 마케팅 캠페인을 실행하여 고객 기반을 넓히거나 새로운 고객층을 확보할 수 있다.
주요 차이점: 네이티브 앱 vs. 하이브리드 앱
하이브리드 앱은 특정 유형의 네이티브 앱이다. 네이티브 앱과 마찬가지로 사용자가 앱 스토어에서 하이브리드 앱을 다운로드하고 설치할 수 있다. 하지만 네이티브 앱과 하이브리드 앱의 내부 구조는 매우 다르다. 내부적으로 하이브리드 앱은 웹 앱에 더 가깝다. 하이브리드 앱은 네이티브 앱과 웹 앱의 중간에 해당한다.
앱 개발
네이티브 앱의 경우 개발자가 네이티브 개발 언어로 모든 앱 기능을 다시 작성하고 다시 설계해야 한다. 하이브리드 앱의 경우 앱 기능을 단일 코드베이스로 작성할 수 있다. 그런 다음 코드를 간단한 네이티브 앱 셸 또는 컨테이너에 래핑할 수 있다. 컨테이너를 사용하면 하드웨어, 캘린더, 알림 등, 모바일 디바이스의 네이티브 기능을 활용할 수 있다.
비용 효율성
하이브리드 앱은 더 낮은 비용으로 네이티브 앱과 동일한 성능 및 사용자 경험을 제공한다. 개발자는 JavaScript, CSS, HTML5와 같은 일반적으로 사용되는 앱 개발 언어와 기술을 사용하여 하이브리드 앱을 구축할 수 있다. 구축한 앱은 Ionic, Cordova 또는 React Native와 같은 하이브리드 앱 개발 프레임워크와 통합할 수 있다. 개발 시간이 짧고 비용이 낮으면서도, 앱 스토어에 업로드하여 동일한 노출 및 검색 범위를 확보할 수 있다.
주요 차이점: 하이브리드 앱 vs. 프로그레시브 웹 앱
프로그레시브 웹 앱은 브라우저 기술의 발전으로 탄생한 결과물이다. 최신 브라우저의 경우 웹 앱 자체에서 네이티브 앱과 같은 경험을 사용자에게 제공할 수 있다. 기존 웹 앱을 중심으로 JavaScript 프레임워크를 통합하여 이를 실현할 수 있다. 프로그레시브 웹 앱은 모바일 브라우저, 사용자 위치 추적 등을 통해 알림을 보낼 수 있다. 프로그레시브 웹 앱도 하이브리드 앱과 마찬가지로 네이티브 앱과 웹 앱의 중간에 해당하는 유형이다. 하지만 몇 가지 주요한 차이점이 있다.
검색 노출
프로그레시브 웹 앱과 하이브리드 앱은 모두 앱 스토어에서 제공할 수 있다. 그러나 프로그레시브 앱은 별다른 노력을 하지 않아도 검색 엔진 결과에서 더 높은 순위를 차지한다. 또한 동일한 키워드 타겟팅을 사용하는 하이브리드 앱보다 더 나은 검색 결과를 얻을 수 있다.
성능
대부분의 경우, 프로그레시브 웹 앱은 하이브리드 앱보다 크기가 작고 모바일 스토리지와 메모리의 사용량이 적다. 하지만 기반 기술이 네이티브 기술이 아니다. 브라우저 종속성으로 인해 사용자의 모바일 배터리 소모량이 증가할 수 있다.
성숙도
프로그레시브 웹 앱 기술은 하이브리드 앱이나 웹 앱에 비해 새로운 기술이다. 따라서 프로그레시브 앱은 활발한 개발자와 커뮤니티의 지원을 바탕으로 여전히 진화하고 있다. 하이브리드 앱 기술은 상대적으로 성숙한 기술이고 개발 비용이 더 적게 든다.
차이점 요약: 웹 앱 vs. 하이브리드 앱 vs. 네이티브 앱
특징 웹 앱 하이브리드 앱 네이티브 앱 사용법 사용자가 브라우저에서 직접 액세스 할 수 있음 사용자가 원하는 디바이스에 앱을 설치해야 함 사용자가 원하는 디바이스에 앱을 설치해야 함 내부 작동 방식 브라우저의 클라이언트 코드가 원격 서버 측 코드 및 데이터베이스와 통신 클라이언트 코드 및 브라우저 코드가 네이티브 쉘 또는 컨테이너에 래핑되어 있음 클라이언트 코드가 설치될 디바이스 또는 플랫폼에 특정 기술 및 언어로 작성됨 네이티브 디바이스 기능 액세스 불가 액세스 가능 액세스 가능 사용자 경험 일관성이 없고 사용하는 브라우저에 따라 달라짐 일관되고 매력적임 일관되고 매력적임 액세스 브라우저 및 네트워크 연결에 따라 제한됨 한 곳에서 액세스 가능하며 오프라인 기능 지원 한 곳에서 액세스 가능하며 오프라인 기능 지원 성능 느리고 응답성이 떨어짐 빠르지만 배터리 전원을 더 많이 소모함 디바이스에 맞추어 성능을 최적화할 수 있음 개발 비용 효율적, 상대적으로 짧은 출시기간 비용 효율적, 상대적으로 짧은 출시 기간 높은 비용, 상대적으로 긴 출시 기간 'Android' 카테고리의 다른 글
Jetpack compose Scaffold 와 Snackbar (0) 2023.05.03 Android Native App 개발 - ⑤ (0) 2023.04.25 Android Native App 개발 - ④ (0) 2023.04.21 Android Native App 개발 - ③ (0) 2023.04.17 Android Native App 개발 - ② (0) 2023.04.17