다시 돌아온 '클라이언트 - 서버' 구조 : 모바일 앱
ITSQTF의 SW개발직무에는 UI/UX개발자, 응용 SW개발자 이외의 다른 개발 직무가 있다. 시스템 SW개발을 비롯한 4가지의 개발 직무가 더 있다. 빅데이터개발과 인공지능 SW개발은 이름만 봐도 빅데이터를 개발하는 개발자, 인공지능 SW개발은 AI관련 개발을 하는 것이라 짐작할 수 있다(물론 빅데이터나 AI에 대한 IT지식의 깊이에 상관없이). 시스템 SW개발과 임베디드 SW개발은 어떤 것인지 잘 모르겠다.
이 개발자들에 대해 더 알아보기 전에 중요한 것이 개발자가 있다. 바로 앱개발자이다. 앱 개발자를 왜 별도 SW개발 직무로 구분이 하지 않았는지 모르겠다. 모바일 시대에 앱 개발자를 UI/UX개발자로 같이 퉁 치기에는 별도 구분된다. 현장에서 일반 개발자와 달리 취급한다.(그냥 개발자 될래? 앱 개발자 될래?)
앱 개발자의 직무를 이해하기 위해 먼저 모바일 서비스에서 필수인 "앱"이라는 것에 대해 알아보자.
우리가 매일 사용하는 스마트 폰 앱에 대해 알아보기 위해 다시 웹을 리뷰해 보자.
웹 서비스를 활용하기 위해서는 디바이스에 브라우즈(크롬, 익스플로, 에지 등)만 있으면 된다. 브라우즈에 웹 주소를 입력하면 웹 페이지가 브라우즈에 나타난다. 사용자는 웹 화면에서 하고자 하는 일을 한다. 따라서 굳이 프로그램을 깔지 않아도 주소만 치면 브라우즈로 프로그램을 이용할 수 있다.(브라우즈는 디바이스에 대부분 기본으로 깔려 있다.)
웹 서비스의 과정은, 브라우즈에 있는 화면의 모든 요청을 웹 서버로 전달하고 백 엔드의 서비스 프로그램을 통해 처리된다. 여기에서 브라우즈를 통한 웹 서비스의 한계가 발생한다.
브라우즈 상 화면 기능이 동작하려면 모든 처리는 네트워크를 타고 서버로 가야 한다. 클라이언트(PC, 패드, 스마트폰)에서 할 수 있는 것은 없다. 웹 서비스 구조가 한번 페이지를 표시하고 나면 서버와의 통신이 끊기고 다음 호출하면 연결되는 단발성인 것이다. 따라서 작은 동작 하나 할 때마다 매번 서버를 호출해야 한다. 브라우즈는 그저 보여 줄 뿐 자체적으로 처리할 수 있는 기능이 거의 없다.
웹 서비스의 문제점은 크게 두 가지인데, 첫째는 매번 서버를 호출해야 하므로 네트워크 거쳐야 하므로 성능이 문제 된다. 버튼 하나 누를 때마다 네트워크를 타야 해서 시간이 소요된다. 두 번째는 브라우즈 상의 웹 페이지는 보여주기만 할 뿐 자체적으로 클라이언트에서 할 수 있는 것이 기본적으로 없다.
웹의 특성상 웹 페이지는 클라이언트를 기기를 제어할 수 없다. 무슨 말인고 하니 웹 페이지에서 스마트폰의 카메라를 동작하게 하는 것과 같은 클라이언트 디바이스를 프로그래밍으로 제어하거나 다룰 수 없다. 웹 페이지에서 디바이스가 제공하는 카메라, 내비게이션, 지문인식과 같은 기능을 호출할 수 없다.
모바일 기기 제어 한계, 모바일 웹의 사용자 화면의 제스처 부족,
보안의 적용의 어려움과 같은 단점이 있다.
이런 한계는 인터넷이 발전한 PC 시대에서는 크게 문제가 되지 않았지만, 스마트폰이 대세인 모바일 시대에는 심각한 문제가 된다. 스마트폰의 카메라, 내비게이션, 음성, 통화와 같은 기능을 이용할 수 없다면, 카메라로 사진을 올리거나, 내비게이션을 이용한 지도 같은 모바일 서비스를 만드는데 애로가 된다. 스마트폰이 가진 특성을 살리는 서비스를 만들 수 없다. 모바일 서비스를 위해 웹 서비스의 한계를 극복할 수 있는 다른 대안이 필요하다.
웹 서비스의 한계를 극복하기 위해 HTML로 만들어지는 웹 표준도 꾸준히 발전해 그 한계를 극복해 왔다. 그러나 웹 구조 특성상 클라이언트 디바이스를 제어하지 못하는 한계는 여전히 존재했다. 사용자들은 더 많은 모바일 서비스 성능과 기능을 요구했고, 이러한 요구에 맞게 개발된 것이 모바일 앱이다.
앱(App)은 전혀 새로운 것이 아니다. 컴퓨터의 운영체계(윈도나 Mac 같은) 위에서 구동되는 SW를 응용 프로그램 즉 영어로 애플리케이션(Application) 프로그램 또는 SW라 한다. 모바일 스마트 폰에서 애플리케이션을 줄여서 앱이라 한다.
모바일 앱은 브라우즈에서 돌아가는 웹 페이지이지가 아닌, 모바일 기기에서 직접 돌아가는 응용프로그램이다. 스마트폰에 직접 프로그램을 설치하여 서비스를 실행하는 SW이다. 이러한 방식은 우리가 앞서 살펴보았던 클라이언트-서버 구조와 동일하다. 웹 서비스 이전의 구조인 클라이언트-서버 구조가 다시 소환된 것이다. 유행도 돌고 돌지만 기술도 돌고 돈다. 어제 낡았던 기술이라 생각되었던 기술이 알고 보니 좋은 것이었다. 기술이 발전하면 늘 새로운 것만 나오는 것이 아니다. 다시 옛날 것을 차용하는 경우가 많다.
(자세한 사항은 <6. IT 서비스의 핵심, '서버'>를 참조하세요.) IT 서비스의 핵심 '서버'비스의 핵심 '서버'
모바일 웹과 앱의 구분은 단순하다. 구글 플레이나 앱스토어를 통해 통스마트폰에 다운로드한 후 설치를 해야 하면 앱이고, 그냥 검색해서 링크를 눌러 들어간다면 모바일 웹이라고 보면 된다. 웹은 다운로드가 필요 없어 사용자가 접근하기 쉽다. 서비스를 이용하기 위해 앱을 다운로드하는 것은 서비스 진입의 허들이 되기 때문이다. 그런 점에서는 앱이 부담스럽다.
웹과 앱은 각자 장단점이 있으므로 기업들은 두 가지 다 서비스하는 경우가 많다. 그러다 보니 서비스를 하는 입장에서는 개발해야 하는 것이 자꾸 늘어난다.
[가능한 모바일 서비스의 종류]
웹(Web) - PC용
웹(Web) - 모바일용(패드, 스마트폰 용)
앱(App) - 스마트폰 용
앱(App) - 패드 용
여건이 좋은 서비스 제공자라면 위 가능한 시스템을 구축하지만 대부분 그렇지 못하다. 웹 중심으로 할 것인지, 앱 중심으로 할 것인지 결정해야 한다. 대부분 앱을 위주로 하고 웹을 보조로 하는 경우가 많다. 그것마저도 비용이 많이 들어 앱만 서비스하는 경우가 많아지고 있다.(그래서 앱 개발자가 수요가 많다.)
모바일 웹과 앱의 장점을 간단하게 비교해 보면 다음과 같다.
웹의 장점이 앱의 단점이고, 앱의 장점이 웹의 단점 즉 한계라고 보면 된다.
웹과 앱의 장단점이 확실하고, 디바이스도 다양해지다 보니 어떤 서비스 전략을 가지고 가야 할지 고민이 생겼다. 물론 예산만 넉넉하다면 위의 네 가지 경우처럼 디바이스별 웹과 앱을 다 개발하는 것이 좋지만 비용이 엄두가 안 날 수 있다.(개발 이후의 지속적인 관리를 생각해 본다면 -ㅠ-ㅠ)
앱의 가장 단점은 OS별로 개발해야 하는 것이다.
안드로이드 용 앱과 iOS용 앱을 따로 개발해야 한다.
어떤 전략을 가지고 갈지 의사결정이 쉽지 않다. 앱은 하나의 서비스를 안드로이드, iOS 두 벌을 개발해야 한다. 그러나 웹은 하나로 가능하다. 이런 앱의 한계로 초기 대부분 기업이 PC웹을 모바일 웹으로 만드는 것에 집중했다. 웹으로 앱만큼 가능한 서비스를 최대로 구현하려 했다.
하지만 스마트폰의 발전으로 스마트폰 기능 활용이 더 중요해졌고, 둘의 장점을 결합하는 새로운 방밥을 생각하게 되었다. 그것이 웹과 앱을 결합한 하이브리드 앱이다.
|하이브리드 앱|
네이티브 앱(순수하게 앱으로만 개발한 것)과 웹의 장점을 합친 앱입이다. 기본 기능은 HTML 등의 웹 표준 기술 기반으로 개발하고, 앱에서 웹이 동작하도록 개발한 것이다. 카메라, 지문 등 단말 기기를 제어할 수 있는 기능은 앱으로 하고, 업무적인 화면은 웹으로 개발하여 서로의 장점을 취할 수 있도록 개발한 앱이다.
웹과 앱만 장점만 모은 것 같은 하이브리드 앱이 한 때 모바일 개발의 대세가 되었다. 모바일 개발자라면 으레 하이브리드 앱을 개발할 수 있어야 했다. 그러나 하이브리드 앱은 기대만큼 효과적이지 않았다. 개발 방법도 복잡하다. 웹의 단점은 여전했고, 웹과 앱이 연계되는 부분이 매끄럽지 않아 좋은 사용자 경험(UX)을 만드는데 한계가 있었다.
결국 돌고 돌아서 순수한 네이티브 앱 개발로 돌아왔다. 지금은 순수 앱(네이티브 앱)이 대세라고 생각한다. 대부분 기능은 앱에서 구현하고 있고, 보조적으로 모바일 웹을 두고 있다. 웹과 앱의 여전히 상호 공존하고 있으며, 전략적 선택은 아직도 진행 중이다.
체계적이고 보완된 내용으로 브런치 글과 같은 이름으로 출간을 하게되었습니다. 아래의 링크를 통해 자세한 내용을 확인할 수 있습니다.
교보문고
나에게 맞는 IT 직업 찾기
예스24
나에게 맞는 IT 직업 찾기
알라딘
나에게 맞는 IT 직업 찾기
웹과 앱에 비교, 앱의 종류 등 대한 기술적인 부분이 많다. 그런 내용들은 다양한 자료를 참조하기 바란다. 제가 말하고자 하는 것은 앱 개발자와 현장의 개발 방법에 대한 것이기 때문에 이 정도 이해하면 충분하다 생각한다.
다음 편에는 앱개발자에 대해 좀 더 자세하게 알아볼 것이다. 앱 개발자가 갖추어야 할 기술과 현장에서의 앱개발과 타 개발자와 관계에 대해 살펴볼 것이다.