모바일로 서비스를 만나는 여러 가지 방법
겉보기에 대부분의 앱은 모두 비슷해 보이지만, 모바일 애플리케이션을 만드는 방법에는 여러 종류가 있다. 그렇기 때문에 앱의 특성에 따라 어떤 방법으로 개발할지 선택하는 것은 서비스를 원활히 운영하기 위해 고려해야 할 중요한 사안이다. 다양한 앱의 종류는 크게 5가지로 분류할 수 있다.
모바일 기기에 최적화되어 있는 모바일 앱으로 안드로이드와 iOS 같은 각 플랫폼에 특정 프로그래밍 언어를 사용하여 만들어진 애플리케이션이다. 안드로이드의 경우 Google에서 제공하는 안드로이드 SDK*를 이용하여 Kotlin(코틀린)과 Java(자바) 언어를 활용하여 개발하고, iOS의 경우 애플에서 제공하는 iOS SDK를 이용하여 Swift(스위프트)와 Objective-C 언어로 네이티브 앱 개발이 가능하다.
* SDK(Software Development Kit)
소프트웨어를 만들기 위한 도구 모음으로 프로그래머는 SDK를 이용하여 특정 플랫폼용 앱을 개발할 수 있다. 예를 들어, iOS SDK를 다운로드하면 개발자는 iOS 앱을 만드는 데 필요한 모든 도구를 제공받을 수 있다.
안드로이드와 iOS 기반 API*로 개발하여 속도가 빠르고 안정적이다.
다양한 퍼포먼스를 구현할 수 있어 좋은 사용자 경험을 제공할 수 있다.
기기의 고유 정보에 직접 접근이 가능하기 때문에 업데이트 사항을 빠르게 반영할 수 있다.
* API(Application Programming Interface)
관련 없는 두 애플리케이션이 서로 통신할 수 있도록 운영체제나 프로그래밍 언어가 제공하는 기능을 제어하는 인터페이스이다. 예를 들어, API 기능을 이용하여 차량 공유 앱에서 승차 거리와 시간을 계산할 수 있다.
플랫폼별 호환이 불가하여 앱을 각각 따로 개발해야 하므로 비용과 시간이 2배로 소요된다.
수정 및 업데이트 시 각 마켓의 심사를 통과해야 하기 때문에 변경 사항이 늦게 반영될 수 있다.
성능이 좋은 만큼 용량이 크다.
PC 화면에서 볼 수 있는 웹 사이트를 모바일 화면에 알맞게 최적화한 것으로 별도의 앱을 설치하지 않고 크롬(Chrome), 사파리(Safari)와 같은 웹 브라우저에 URL을 입력하여 접속할 수 있다. HTML, CSS, JavaScript 등 표준 웹 언어를 기반으로 개발한다. 모바일 웹은 적응형 웹*과 반응형 웹*으로 나눌 수 있다.
* 적응형 웹(Adaptive Website)
PC, 스마트폰, 태블릿 등 각 디바이스의 독립적인 레이아웃을 별도 제작 후 접속 기기 종류를 인식해 알맞은 웹 페이지를 랜딩 하는 형태이다.
* 반응형 웹(Responsive Website)
웹 브라우저 크기에 따라 설정한 비율에 맞춰 자동으로 웹 페이지의 레이아웃이 변경되는 형태이다.
안드로이드와 iOS를 구분하여 제작할 필요가 없고, 표준 웹 언어를 사용하기 때문에 개발 및 유지 보수가 간편하다.
앱 설치 없이 이용 가능하므로 변경 사항 발생 시 별도의 마켓별 승인 없이 웹 사이트만 수정하면 된다.
모든 기기와 웹 브라우저에서 접근 가능하다.
웹 브라우저를 통해서만 이용할 수 있어 네이티브 앱처럼 홈 화면에 아이콘을 추가해 사용하는 편리함을 누리기 어렵다.
URL을 직접 입력하거나 검색 엔진을 통해서만 접속할 수 있기 때문에 접근성이 떨어진다.
웹 브라우저에서 공통으로 제공하는 기능까지만 활용이 가능하고, 디바이스 접근 권한이 제한되는 경우가 많아 유저 데이터 수집에 한계가 있다.
표준 웹 언어(HTML/CSS/JavaScript)를 사용하여 만든 웹 형태의 애플리케이션이다. 모바일 웹과 유사하지만, 실행 방법에서 명확한 차이점*이 존재한다.
* 모바일 웹과 웹 앱의 차이점
모바일 웹은 풀 브라우징(Full Browsing) 방식, 웹 앱은 단일 페이지(SPA, Single Page Application) 방식으로 실행된다. 풀 브라우징은 화면에 일부 변경 사항이 있을 때 전체 내용을 서버에서 새로 받아 오는 방식이고, 단일 페이지는 최초 실행 시에만 페이지 전체를 받아 오는 방식이다.
모바일 웹보다 조금 더 모바일에 최적화되어 있다.
웹 기반으로 개발을 하기 때문에 마켓별 검수 및 승인 과정 없이 유지 보수가 용이하다.
모바일 웹과 마찬가지로 디바이스 접근 권한이 제한되기 때문에 웹 브라우저에서 공통으로 제공하는 기능까지만 활용이 가능하다.
네이티브 앱에 비해 성능이 떨어지고 기능이 제한된다.
마켓에 출시가 가능한 네이티브 앱 형태에 웹뷰*를 띄울 수 있도록 개발하는 방법으로, 네이티브 앱과 웹 앱의 장점을 함께 갖고 있다. 따라서 모바일 웹과 웹 앱의 단점을 보완하여 웹을 기반으로 앱의 기능을 차용한 형태인 것이다.
* 웹뷰(WebView)
애플리케이션에서 웹 브라우저를 이용해 화면을 보여 주는 방식을 뜻한다.
웹 기술만으로 개발하여 마켓에 배포가 가능하다.
안드로이드와 iOS에서 동일한 웹 페이지를 사용할 수 있어 적은 비용으로 빠르게 개발할 수 있다.
웹뷰로 구현된 부분은 바로 수정 사항이 반영되어 매번 업데이트 심사를 받지 않아도 되기 때문에 유지 보수가 간편하다.
네이티브 앱에 비해 동적 요소 구현이 어렵고 성능과 속도가 떨어진다.
결과적으로 마켓을 통해 앱 배포를 진행해야 하므로 모바일 웹이나 웹 앱에 비해 업데이트 반영이 느리다.
한 가지의 개발 언어와 프레임워크로 동시에 안드로이드와 iOS 네이티브 앱을 만드는 개발 방식이다. 네이티브 앱이 OS 간 호환 불가능하다는 한계점을 개선하고자 등장하였으며 대표적인 툴로 Google의 Flutter(플러터), Facebook의 React Native(리액트 네이티브), Microsoft의 Xamarin(자마린)이 있다.
하나의 코드로 2가지 플랫폼 앱을 개발할 수 있어 소요되는 비용과 시간을 줄일 수 있다.
각 플랫폼에서 제공하는 공통 기능까지 활용이 가능해 성능이 좋다.
라이브러리가 다양하지 않아 기존 네이티브 앱의 동적 퍼포먼스를 동일하게 구현할 수 없다.
네이티브 앱보다 활용할 수 있는 기능 및 성능에 한계가 있어 안드로이드와 iOS에 새로운 기능이 추가되었을 때 업데이트 지연이 발생할 수 있다.
그렇다면 만들고자 하는 모바일 애플리케이션을 어떤 형태로 구현하는 것이 가장 효율적일까? 지금까지 알아본 것처럼 각 방식에는 장단점이 존재하므로 개발 방법의 우위를 따지기보다는 상황에 따라 적합한 방법을 선택해야 한다. 서비스의 형태와 목적 그리고 개발 리소스와 같은 사항을 따져 보고 가장 적절한 방법으로 구현하는 것이 중요하다. 앱의 종류별 장단점을 명확히 인지하고 전략적으로 개발 형태를 설정한다면 사용자는 모바일로 최적의 서비스를 경험하게 될지도 모른다.