[코드스테이츠 PMB 10기] 앱 유형 살펴보기
알쏭달쏭
한눈에 보기 어려운 앱의 세계
이전 포스팅에서는 웹을 구성하는 요소 중 프론트엔드에 관하여 상세하게 알아보았다. 하지만 IT 기술이 발전하고 스마트폰이라는 신문물이 발전함에 따라 세상은 급속도로 스마트폰에서 구동하는 응용 프로그램, 애플리케이션에 관심을 가지게 되었다.
실제로, 시장조사업체 아이리서치(iResearch)에 따르면 2020년 전 세계 모바일 앱 시장은 5,819억 달러 규모로 추산되며 2023년에는 9,352억 달러를 돌파할 것이라고 한다.
또한, 모바일 앱 전문 시장조사업체인 센서타워(Sensor Tower)에 따르면 2019년 4분기 전 세계 기준으로 구글 플레이 스토어에서는 총 209억 건의 다운로드가 발생하였고, 애플 앱 스토어에서는 78억 건의 다운로드가 발생하였다고 한다. 이는 전년 대비 각각 3.5%, 7.9% 가량이 증가한 수준이다.
이처럼 PM으로서 모바일 앱 시장은 포기할 수 없는 중요한 시장인 것이다. 그러므로 애플리케이션 개발을 원활히 하기 위한 지식을 쌓기 이전에, 먼저 애플리케이션이라는 단어의 역사에 대해 재미있는 일화가 있어 공유하고자 한다.
대부분은 사람들은 애플리케이션이라는 단어가 스마트폰 시대에서 새로 나온 개념이라 알고 있지만, 사실 해당 단어는 컴퓨터의 응용 소프트웨어를 지칭할 때 쓰이는 말이었다. 즉, 운영체제를 제외한 나머지 소프트웨어/프로그램을 일컫는 말인 응용 소프트웨어의 번역어가 애플리케이션이었던 것이다. (정식명칭 : application software)
하지만 한국에서는 애플리케이션보다는 프로그램이라는 단어를 더 많이 썼고, 애플리케이션은 잊혀지는 단어가 되는 듯 했다. 그런데 iPhone이 대히트를 치면서 해당 단어는 부활했다. 왜냐하면 iPhone에서는 맥에서 쓰였던 것처럼 application의 약자로 app(앱)을 사용했는데, 이 단어가 한국에 그대로 굳어지게 된 것이다.
마치 이 위의 사진과 동일한 상황이 되었달까! 재미있는 점은 app이라는 단어는 자사명인 Apple의 약자로도 쓰일 수 있다. 즉, 애플은 자사의 약자를 하나의 명사로서 유통시켜버린 것이다.
앞서 이야기했듯 컴퓨터, 모바일 등 모든 곳에서 설치되는 프로그램은 app이라 불릴 수 있지만, 국내에서는 모바일에서의 각인으로 인하여 오로지 모바일에 설치되는 응용 프로그램만 '애플리케이션' 이라 부른다.
본격적으로 앱 유형을 정리하기 전에, 나의 경험을 먼저 공유하고 싶다. 사실, 놀랍게도 나는 2학년 Mobile Progamming 팀프로젝트 때문에 JavaScript를 활용하여 앱을 만들어본 경험이 있다! (정말 깊게는 몰라도 한번씩은 다 하게 해주는 ITM.. 당시에는 깊이가 있지 않다고 투덜댔는데 이런 빅픽쳐가 숨어있었다.)
당시에 JavaScript를 학습했기 때문에 해당 언어를 사용하여 '나만의 뮤지컬 다이어리' 를 작성할 수 있는 안드로이드앱을 만들었었는데 뮤지컬 api를 연결하거나 GPS를 활용하기 위한 기능을 넣는 게 힘들었던 것으로 기억한다.
그리고 한이음 ICT 팀 프로젝트를 하면서 Kotlin을 학습하는 조원을 만나 Kotlin이라는 언어도 새롭게 인식했다. 하지만 앱 프론트를 구성하는 언어는 JavaScript나 Kotlin, 그리고 백엔드를 담당하는 언어로는 Node.js, Java Spring만 있는 줄 알았는데.. 이건 네이티브 앱에만 국한된 것이었고 다른 유형의 앱들도 무척 많은 것을 이번 몰입학습으로 알게 되었다.
그래서 알고만 있었던 네이티브 앱도 확실히 알자는 의미에서 모든 걸 다 꼼꼼히 분석해보도록 하겠다! 일단 간단히 나누자면 4가지의 대표 개발 방식이 존재한다.
˙네이티브 앱 (Native App) : 모바일 기기에 최적화된 기능을 구현하는 앱
˙모바일 웹 (Mobile Web) : 모바일 화면에 맞게 구성한 웹
˙모바일 웹앱 (Mobile WebApp) : 모바일 웹과 비슷하지만 구동방식이 앱처럼 보이게 한 앱
˙하이브리드 앱 (Hybrid App) : 겉으로 보기에는 앱이지만 실제로는 웹을 기반으로 앱의 기능을 차용한 형태의 앱
그러면 하나씩 해당 앱 개발 방식의 특성과 장단점을 알아보자.
네이티브 앱은 스마트폰의 운영 체제에 맞춰 개발된 프로그램이다. 간단히 설명하자면, 사용자 폰에 있는 안드로이드, iOS 마켓에서 다운로드해서 사용하는 앱이라 할 수 있다.
네이티브 앱을 개발하기 위해서는 각 운영 체제에서 사용하는 언어를 이용해 코딩을 해야 하는데, 안드로이드 앱이라면 JavaScript 또는 Kotlin을 주로 사용하고 iOS에서는 Obejctvie-C 또는 Swift를 이용하여 앱을 구현한다.
장점
Android, iOS 기반의 api로 개발하여 속도가 빠르고 안정적으로 서비스를 제공
동적인 효과를 구현하기에 좋음 (고사양 게임은 네이티브로 구현)
스마트폰의 다양한 기능들에 대한 접근이 자유로움 (카메라, 지문인식, 연락처 조회 등)
단점
개발한 앱을 플레이 스토어나 앱 스토어에 올려 심사를 받고 통과해야만 앱이 등록됨
업데이트할 때도 해당 심사를 다시 받아야 해서 다소 번거로움
높은 수준의 기술력이 필요
각기의 모바일 운영체제 별로 앱을 개발해야 하기 때문에 개발 기간이나 비용이 많이 듦
하이브리드 앱에 비해 용량이 큼
ex) 유튜브, 카카오톡, 인스타그램, 페이스북 등
모바일 웹은 사실 엄밀히 말하자면 Web이다. 단순히 모바일에서 PC용 사이트의 글자폰트와 이미지, 터치 아이콘, 플래시 등 PC 브라우저에서 실행되는 기능을 모바일에 맞추어 표현한 사이트를 의미한다.
PC웹과의 가장 큰 차이점은 www.로 시작하는 것이 아니라 m.으로 시작하는 url을 가지고 있다는 점으로, 터치 스크린의 인터페이스를 가지고 모바일에 특화된 기능을 제공한다.
장점
반응형으로 제작 시 PC,태블릿, 모바일 사이즈 모두 대응 가능
웹에서 사용하는 언어로 개발하기 때문에 개발기간 및 비용이 상대적으로 적음
별도 설치 및 승인과정이 필요 없기 때문에 유지보수가 용이
단점
플랫폼 API (카메라, 지문인식 등)을 사용할 수 없고 오로지 브라우저 API만 사용 가능
친화적인 터치 앱을 개발하기가 까다로움
네이티브, 하이브리드 앱보다 실행이 까다로움 (브라우저를 열고 검색해 들어가야 함)
모바일 웹앱이란 모바일 웹과 네이티브앱을 결합한 형태로 모바일웹의 특징을 가지면서도 네이티브앱의 장점을 갖고 있는 앱이다. 즉, 모바일 웹보다는 좀 더 앱에 가까운 형태로 모바일에 최적화된 앱을 의미한다. (범고래도 고래다!)
하지만 모바일 웹과 웹앱 사이가 차이점은 분명이 존재한다. 여기에서 모바일 웹과 웹앱 사이의 차이점을 짚어보자면, 웹앱도 모바일웹처럼 일반적인 웹 기술로 개발되고 모바일 브라우저에서 실행되지만 풀 브라우저 방식이 아닌 단일 페이지 방식으로 화면을 진화해 속도가 빠르다는 장점이 있다.
장점
모든 기기와 브라우저에서 url만으로 접근 가능
웹에서 사용하는 언어로 개발하기 때문에 개발기간 및 비용이 상대적으로 적음
별도 설치 및 승인과정이 필요 없기 때문에 유지보수가 용이
단점
플랫폼 API (카메라, 지문인식 등)을 사용할 수 없고 오로지 브라우저 API만 사용 가능
친화적인 터치 앱을 개발하기가 까다로움
네이티브, 하이브리드 앱보다 실행이 까다로움 (브라우저를 열고 검색해 들어가야 함)
ex) 우리은행, 신한은행
개발은 Web으로, 결과물은 Native로 보이는 형태의 앱이다. 즉, 겉으로 보기에는 단순히 네이티브 앱처럼 보이지만 실제로는 웹을 기반으로 하는 앱으로 웹과 네이티브 앱의 단점을 보완한 앱이다.
이때 일반적으로 앱의 기본 틀은 네이티브 앱으로 만들되, 특정 영역은 브라우저를 띄워 화면을 보여준다. 네이티브 앱 영역은 주로 자주 바뀌지 않는 영역을, 자주 바꿔야 하는 페이지는 HTML코드만 수정하면 모든 사용자에게 수정된 페이지를 보여줄 수 있는 웹앱 영역으로 설정한다.
장점
네이티브 API와 브라우저 API를 이용한 다양한 개발이 가능
개발 비용 및 시간 소요가 네이티브에 비해 적게 들어감
유지 보수에 효율적
네이티브 앱 용량에 비해 용량이 가벼움
단점
네이티브 기능에 접근하기 위해선 네이티브 개발지식이 결국 필요함
하이브리드 앱을 하기 위한 전반적인 이해와 관련 기술 (PhoneGap, ionic, AngularJS) 지식 필요
웹뷰에서 앱을 실행하기 때문에 브라우저의 성능에 영향을 받음
네이티브앱에 비하여 어색한 부분 또는 버벅거림을 느낄 수 있음
UI 프레임워크 도구를 사용하지 않는다면 개발자가 UI를 제작해야 함
ex) 네이버, 크롬, 다음 등
하지만 위의 글처럼 정리를 했다 하더라도, 인터넷을 둘러보면 볼 수록 여기저기에서 사람들이 하는 말이 달랐다. 이는 웹앱, 하이브리드앱 모든 게 네이티브앱의 불편성을 개선하기 위해 나온 과도기적 앱이고 정확한 정의가 이루어지지 않아서이지 않을까 싶다.
그래서 이번 과제를 수행하면서 헷갈렸던 개념들을 적어보고자 한다.
많은 사람들이 모바일 웹은 반응형, 적응형 디자인이 반영된 웹이라 서술했다. 하지만 IT 아웃소싱을 또 전문으로 하는 위시캣의 포스팅에서는 모바일 웹과 반응형 웹은 다른 것인 것처럼 서술되어 있었다. (참고)
해당 글 내용에 따르면, 일반적으로 반응형 웹이나 모바일 웹 모두 일반적인 웹 사이트와 마찬가지로 HTML로 만들어진 페이지이고 어떤 브라우저에서든 접속할 수 있다는 공통점을 가진다.
반응형 웹은 일반 웹페이지와 동일하게 www. 으로 시작하는 웹페이지이지만 동작하는 기기의 화면과 해상도에 맞춰 최적화된 화면을 보여준다. 하지만 모바일 웹은 경우 PC용 웹사이트와 별개로 모바일 브라우저에서 이용자들이 편하게 이용할 수 있도록 PC용 웹사이트를 모바일 스크린 크기에 맞춰 줄여놓은 것을 뜻한다고 한다. m.으로 시작되는 웹페이지가 모바일 웹인 것이다.
즉, 반응형 웹은 하나의 url을 이용하여 데스크톱과 모바일용 웹사이트에 모두 적용시킬 수 있는 것이지만 모바일 웹은 m.이라는 새로운 url을 다시 제작해야 한다고 한다.
앞선 서술에서는 모바일 웹과 웹앱의 차이로는 모바일 웹은 풀 브라우저 방식을 사용하고 있지만, 웹앱은 단일 페이지 방식을 사용하고 있다는 점이라 서술하였다.
그 외에도 다른 차이점이 있는가 살펴보려 하니, 위시캣의 포스팅과는 전혀 다르게 웹페이지에 반응형 적응형 디자인을 포함시킨 것이 모바일 웹이고 웹앱은 m.으로 url을 가진 것을 웹앱이라는 글들이 많이 나왔다. 이런 식으로 언급된 것이 아니라면 웹앱을 하이브리드앱처럼 설명하는 경우도 많았다. 또한 스토어에 등록하지 않고 사용한다고는 하지만, 그렇다고 스토어에 등록하지 못하는 것도 아니다. 결국 찾으면 찾을 수록 혼란에 빠지고 말았다..(ㅠ..)
그래서 한번 영어로 검색해보니, 영어자료에서는 대부분 mobile web과 mobile webapp은 구분하지 않았다. difference를 찾는다면 대부분 mobile web과 mobile app을 구분하고 있었다. 그나마 web과 webapp을 구분하는 포스팅을 보면 대다수가 적은 바와 같이 반응형, 적응형 디자인을 포함시킨 것이 모바일 웹, 웹앱은 모바일 최적화로 주소창이 보이지 않고 앱처럼 보인다고 말하고 있었다.
그래서 해당 개념들을 명확하게 칼 자르듯 구분하는 것은 어렵다는 결론을 내렸다. 그래서 나만의 방식으로 위의 4가지 앱유형을 구분해보자면 다음과 같다.
˙네이티브 앱 (Native App) : 운영체제 기반의 언어를 사용하여 개발된 앱
˙모바일 웹 (Mobile Web) : m.으로 시작하는 모바일에 맞춘 웹
˙모바일 웹앱 (Mobile WebApp) : 모바일 웹과 유사하지만 앱의 형태를 더 띈 앱
˙하이브리드 앱 (Mobile WebApp) : 네이티브앱처럼 휴대폰의 기능을 사용가능하면서도 웹앱의 형식을 띈 앱
그렇다면 앱의 유형도 명확하게는 아니더라도 스스로 기준을 내릴 수 있을 만큼 조사해보았다. 그러면 내가 만약 한 프로덕트의 PM이라면, 어떤 기준에 따라 앱 유형을 결정해야 할까?
먼저 위에 정리한 내용을 한눈에 보기 위하여 notion을 활용하여 테이블을 정리해보았다.
앞서 이야기했지만, 기술을 지속적으로 발전되고 있고 네이티브앱을 제외하면 서로의 장단점을 지속적으로 보완하고 있는 관계이기 때문에 명확하게 하나의 앱의 유형을 선택한다고 말하기 어렵다. 그러므로 PM은 각 유형의 장단점을 잘 파악하고 우리의 기술 스택을 생각하여 유형을 결정해야 하는 것이다.
그렇다면 앞서 짧게 설명했던, '나만의 뮤지컬 다이어리'는 어떠한 앱 유형을 선택해야 하는 지 결정해보자. 당시 우리 조는 '네이티브앱' 유형으로 개발을 진행하였다. 왜냐하면 가장 큰 이유는 당시 개발을 해야 하는 나와 팀원은 JavaScript에 관한 지식밖에 없었기 때문이다..! (이는 기술 스택을 결정할 때도 고려해 봐야 할 사항이었는데, 빠르게 앱을 만들어야 하는 상황에서 웹앱, 하이브리드 앱을 구현하는 기술을 다시 배울 시간은 없었다!)
또한, 해당 앱 내에서 전시 공연 API를 연결하여 뮤지컬에 대한 정보를 얻고 해당 앱 내에서 결제를 하는 기능 역시 구현하고 싶었기 때문에 인앱결제를 가능케하는 네이티브앱이 적절하다고 할 수 있다.
참고자료.