토스 어플의 대부분의 페이지가 웹 뷰라고 한다.
또한 카카오톡에서 링크를 클릭하면, 브라우저가 열리지 않고 어플 내부에서 해당 웹 페이지를 보여준다. 이렇듯 네이티브 어플에서 웹 뷰를 활용하는 경우를 많이 볼 수 있다.
최근 회사에서 네이티브 어플을 하이브리드 어플로 변경하기로 결정이 났는데,
우리는 거의 모든 페이지를 네이티브 기능을 사용해 구현했기 때문에 처음부터 다시 만들어야 하는 상황이 발생했다.
만약 웹 뷰를 사용했다면 새로 어플을 만드는데 조금은 공수가 줄어들지 않았을까 하는 생각에
웹 뷰를 사용했을때의 장단점과 브라우저와 네이티브 앱과 차이점이 무엇인지 알아보고자 한다.
네이티브 앱은 모바일 장치용으로 특별히 제작된 소프트웨어 애플리케이션이다.
주로 iOS, Android에서 실행되며 이 두개의 OS가 모바일 시장의 98.7% 차지하므로 그 외의 운영체제는 배제하고 설명할 것이다.
iOS 앱은 Swift 혹은 Objective-C, Android 앱은 Java 혹은 Kotlin언어를 사용한다.
즉, 서로 다른 언어를 사용하는 iOS 앱과 Android 앱은 서로의 OS에서 구동될 수가 없다.
그럼 어플을 출시하고 싶으면 어떻게 하냐?
iOS 기기에서 사용할 어플과 Android 기기에서 사용할 어플을 각각 만들어 Apple Store와 Play Store에서 심사받고 출시해야한다.
브라우저를 실행하지 않고 앱에서 웹 페이지를 임배딩하는 기술이다.
브라우저를 열면, 탭과 주소창, 페이지가 보여지는 화면으로 구성되어 있다.
웹 뷰는 여기에서 탭과 주소창이 없이 컨텐츠가 그려진 페이지만 보인다. (아래 사진처럼)
보이기에는 네이티브 기능을 사용해 구현한것과 다를것이 없다.

서두에 얘기했던 것처럼 이러한 웹 뷰는 토스, 카카오톡, 트위터, 페이스북 등 대부분의 어플에서 활용되고 있다.
앞서 얘기한것 처럼 iOS와 Android는 각각 다른 언어를 사용해 앱을 만들때와 유지보수 할때 각 운영체제 별 개발자가 필요하다. 돈 혹은 시간이 두 번씩 들어간다는 얘기다.
웹 뷰를 사용하면?
하나의 코드로 iOS, Android에서 실행시킬 수 있어 Native App을 만들때 보다 돈과 시간이 절반이나 절약된다.
Native 앱들은 업데이트 버전을 출시할 때마다 앱 스토어의 심사를 받아야한다.
특히, Apple Store는 심사 기준이 까다로워 심사에서 거절 당하거나 심사기간이 오래걸리는 경우가 다반사다.
예를들어, 매주 주말마다 새로운 이벤트를 진행하는 앱이 있다고 하자.
이벤트를 페이지를 구현해 출시를 할 때마다 Apple Store와 Play Store에서 심사를 기다려야 한다.
심사에서 거절당하거나 심사기간이 길어지면 이벤트를 진행해야하는 당일에 새로운 버전의 앱이 배포되지 않아 고객과의 약속을 어기게 되는것이다.🙀
이때, 이벤트 페이지가 웹 뷰로 구현되어 있다면?
원하는 날짜에 이벤트 페이지만 업데이트 해서 배포할 수가 있다.(웹은 따로 심사단계를 거치지 않고 배포가 가능하다.)
비슷한 경우로 아주 작은 CSS 오류를 고치거나 앱의 작은 기능 추가를 할때 등
웹 뷰를 사용하면 빈번한 업데이트가 가능해 불필요한 리소스와 감정을 낭비할 필요가 없다!
1번의 연장되는 내용으로 웹 뷰를 브라우저과 Native 앱에서 동일하게 작동한다는 것이다.
예시로는 아래와 같다.
1. 웹 뷰를 브라우저에서 사용
앱에 식당을 예약하는 기능이 웹 뷰로 구현되어있다.
이 페이지를 어플을 다운받지 않고 바로 링크로 들어가서 예약을 하게한다.
어플을 다운받는 귀찮은 단계를 생략할 수 있어 이탈률이 낮으며 서비스를 이용하게 할 수 있다.
2. 웹 페이지를 웹 뷰로 사용
브라우저에서 웹 페이지로 제공했던 서비스가 사용자가 많아지면서 네이티브 어플에 대한 요구사항이 생겼다.
하지만 Native 앱 개발자가 없어 앱을 만들수가 없다.
이때, 웹 뷰를 사용하면 기존 서비스를 활용할 수가 있으면서 비용과 시간을 절약할 수 있다.
각 운영체제에 최적화된 방식으로 만들어진 Native APP보다 성능이 떨어진다.
또한, Native APP은 앱 실행에 필요한 대부분의 파일이 로컬에 저장되는 반면에
웹 뷰는 JS파일을 서버에서 가져와렌더링 해야해서 인터넷에 연결되어 있지 않으면 접속할 수 없다.
디바이스의 카메라, 음성 인식 등의 기능을 사용하는데 제약이 있거나 번거롭다.
Natvie App은 디바이스 전체에 접근 권한이 있어 기기 자체 기능 활용에 유리하다.
높은 사양의 그래픽으로 원하는 디자인을 구현할 수 있다. (비주얼이 화려한 게임은 대부분 네이티브 방식으로 앱 개발이 이루어짐)
디바이스 전체에 접근 권한을 가질 수 있기 때문에 기기 자체의 기능을 앱에 활용할 수 있다.
웹 뷰만으로 이루어진 앱은 Apple App Store에서 통과되지 않는다.
Native 기능인 네비게이션 등의 네이티브 기능이 포함시키고 웹 뷰를 임베딩 해야한다.
웹 페이지로 구현된 서비스를 앱으로 배포하고 싶을때
앱 제작 비용과 시간을 절감할 수 있다.
이러한 이점을 누리려면 웹 뷰 외에 하이브리드 앱이라는 옵션도 있다!
웹 페이지로 구현된 서비스를 앱으로 배포하려 하지만, 앱에서의 UI가 많이 다를때
디바이스의 기능을 많이 사용할 필요가 없을때
직접 서비스를 개발하다보니 플랫폼이 바뀌는 상황이 발생하기도 하고
그에 맞게 혹은 대비해서 비용과 시간을 절약해 확장성 있는 서비스를 만들 수 있는 방법을 찾아야 한다는것을 깨달았다.
웹 뷰를 사용하면 적은 인원의 네이티브 개발자로 확장성 있는 서비스를 제공할 수 있어
앱 서비스에서 필수적으로 고려해야하는 선택지라고 생각이 들었다.