아키텍쳐 /모바일

모바일 개발 트렌드

Terry Cho 2015. 11. 17. 10:55


모바일 개발 트렌드에 대한 예측


조대협 (http://bcho.tistory.com)


시장 환경


2016년 모바일 개발 트렌드에 대해서 언급하기 앞서서 전체적인 모바일 비지니스 변화를 지켜볼 필요가 있다.


모바일 스타트업 중심의 개발 트랜드가 계속


여러 유니콘(실리콘 밸리에서 급속도로 성장하고 있는 스타트업)들의 실적 약화에도, 내년에도 변함없이 계속해서 스타트업 생태계는 확장이 되어갈 것이고, 그 중심에 모바일 앱이 있을 것 이라고 본다.

많은 모바일 앱들은 톡톡 튀는 아이디어와 새로운 기술들로 무장한 스타트업을 중심으로 개발이 될것이라고 보는데, 모바일 스타트업의 특성상 필요한 몇가지 요구 사항이 있고, 이 요구 사항을 채워주는 기술 위주로 내년은 기술 트랜드가 발전하지 않을까 싶다.


모바일 중심의 스타트업 비지니스에서 개발팀이 필요한 내용을 정리해보면 다음과 같다.


효율성과 스피드가 점점 중요시 됨

스타트업의 본질적인 특성상 적은 인원으로, 개발을 해야 하고, 시장에 많은 경쟁 서비스들과 우위를 점하기 위해서는 스피드가 중요하다. 적은 인원으로 스피드를 내려면, 팀의 효율성이 중요하다. 그래서 효율성을 최대로 할 수 있는 개발 프로세스가 필요하고, 빠르게 배우고 빠르게 사용할 수 있는 기술이 필요하며, 시스템 운영등을 대행해주는 서비스들이 필요하다.


고객 피드백과 실험

근래에 스타트업 아니, 비단 스타트업 뿐 아니라 대부분의 서비스 개발 방식은 “린 스타트업” 방식을 따르는데, 최소한의 기능을 가진 제품을 시장에 출시하고, 그 기능을 피드백을 기반으로 계속해서 보강해 나가는 서비스 개발 프로세스를 가지게 된다.

이 프로세스를 실현화 하려면 새로운 기능이나 UX등에 대해 사용자로 부터 피드백을 받을 필요가 있고, 다양한 옵션에 대해서 실험과 분석을할 필요가 있다. 

이런 실험과 분석을 하기 위해서는 사용자에 앱 사용 패턴을 분석할 수 있는 분석 플랫폼과, 다양한 기능을 테스트할 수 있는 테스팅 플랫폼이 필요하게 된다.


글로벌 서비스

모바일 앱 서비스의 수익 모델을 보면 인앱 결재도 많지만, 아직까지는 광고에 의존하는 모델이 상당히 많다. 이 경우, 한국 시장만 보기에는 시장 규모가 너무 작고, 애플리케이션 성의 앱들은 특별히 한국이라는 시장에 갖혀 있을 필요가 없기 때문에 글로벌로 서비스를 확장하거나 처음부터 아예 글로벌을 타케팅 하는 경우가 많은데, 개인 정보 위치에 대한 속지 주의 (개인 정보는 그 나라를 떠자니 못한다) 요건이나 각 나라의 문화나 계정 체계 (동남아는 라인 로그인을 많이 쓰고, 한국은 카톡 로그인, 미국은 페북 로그인을 많이 쓰는)나 기술적 차이 (중국에서는 구글이나 애플 푸쉬가 작동하지 않는다)로 인하여 각 국가에 맞게 애플리케이션을 수정해야 할 필요가 있다. 


개발 트랜드


그러면 이런 니즈를 맞추기 위해서 개발 트랜트는 어떻게 변화하고 있을까?


클라우드 활용의 가속화

첫번째는 클라우드 서비스 활용의 가속화이다.  클라우드 서비스의 활용은 어제 오늘일이 아닌 이미 보편화된 내용인데,  그렇다면 변화는 무엇인가? 클라우드 서비스 활용이 주로 서버등의 인프라를 활용하는 IaaS 중심이었고, 근래에는 웹서버나 데이타베이스 서버등의 미들웨어를 활용하는 PaaS 형태로 그 중심이 옮겨왔다.

예전에는  아마존의 EC2등에 직접 솔루션을 설치해서 개발을 했는데, 요즘은 그보다  아마존 Beans Talk이나 Heroku 클라우드 같은 PaaS 형태의 사용이 잦아졌고, Redis나 MongoDB등과 같은 다양한 솔루션들이 PaaS 형태로 제공되어 많은 미들웨어를 직접 설치하지 않고 managed 서비스를 사용하는 형태로 이동하고 있다. 이는 복잡한 인프라에 대한 설치 및 운영 비용을 줄이고, 빠른 개발을 할 수 있게 도와준다.

 대표적인 서비스로는 아마존 BeansTalk, IBM BlueMix, Heroku 클라우드등을 예로 들 수 있다.


여기에 한걸음 더 나가서 Fundamental 서비스의 활용이 두드러 지는데, Fundamental 서비스는 애플리케이션을 구성하는데 사용되는 기능을 제공하는 서비스로 대표적으로 푸쉬 서비스, 메세지 큐 서비스, 사용자 계정 관리 서비스등이 이에 해당한다. 특히 이러한 서비스는 여러가지 복잡한 기능들을 추상화해주기 때문에 여러가지 기능들을 동시에 지원해야 하는 경우 쉽게 개발을할 수 있게 해준다. 대표적인 예로는 푸쉬 서비스를 들 수 있는데, 푸쉬는 기본적으로 안드로이드와 iOS를 위한 GCM,APNS 푸쉬 지원뿐 아니라, 중국을 위한 바이두 푸쉬등 다양한 푸쉬를 지원해야 하며, 대량 발송, 예약 발송등 복잡한 기능들을 제공해야 하는데, 이를 일일이 개발하려면 그것만으로도 하나의 제품을 개발하는 정도의 개발 노력이 필요하다. 이러한 고급 기능들이 근래에는 클라우드로 제공되는데, 아마존의 SNS와 같이 대형 클라우드 벤더에서 Fundamental 서비스로 제공하는 기능이나 또는 OneSignal.com 과 같이 특정 도메인(기능)에 전문화된 형태로 서비스가 제공 되는 경우가 있다.


 대형 벤더에서 제공되는 Fundamental 서비스는 해당 클라우드 인프라와 같은 위치에서 서비스가 제공되고 같은 인프라를 사용하기 때문에 통합이 쉽다는 장점을 가지고 있지만 반대로 특정 도메인 기능만 제공하는 전문화된 서비스에 비해서 가격이나 기능적인 면에서 열세인 경우가 많다.


대표적인 서비스로는 앞에서 언급한 푸쉬 전문 서비스인 OneSignal.com , 동영상 인코딩 서비스 heywatch.com, zencoder.com , Redis 전문 서비스인 redislabs.com , 몽고디비 및 DBaas 서비스 전문업체인 compose.io , 검색 전문 서비스인 https://www.algolia.com/ 등을 들 수 있다. 


여담으로 나이가 많은 개발자들은 기술을 탐독하고, EC2등에 직접 깔아서 사용하는 것을 선호하는 반면, 근래에 많은 스타트업 개발자들을 만나서 개발 아키텍쳐를 검토하다보면, 오히려 잘 구성되어 있는 매니지드 서비스들을 잘 엮어서 빠른 시간내에 더 좋은 기능으로 서비스를 개발하는 것을 보면, 세대간에 기술에 대한 접근 방법이 벌써부터 차이가 나지 않는가 한다.



풀스택 개발자

풀스택 개발자란 한명의 엔지니어가 독립적으로 모든 서비스를 개발할 수 있는 수직적인 기술 능력을 가지고 있는 사람을 정의한다. 수직적인 기술 능력이란, 앱-백앤드-인프라 또는 프론트-백앤드-인프라 까지 서비스를 개발하는 데 필요한 모든 End to End  기술을 이야기 한다.

작년까지만 해도 풀스택 개발자가 바람직하다 아니다 라는 논쟁에서 부터, 풀스택 엔지니어는 불가능하다 가능하다 까지 여러 논쟁이 많았다.

결론 부터 말하자면 풀스택 개발자가 가능하고 불가능하고, 바람직하고 말고의 논쟁을 떠나서, 할 수 밖에 없다.


스타트업 인원 구조의 특성상 각 기술 계층에 해당하는 엔지니어를 따로 뽑을 수 가 없기 때문에 한명의 개발자가 앱 개발에서 부터 백앤드 개발까지 모두 맏아야 하며, 시스템을 운영하기 위한 인프라 설치 및 운영까지 모두 커버해야 한다. 


이런 것이 가능한 것은, 스타트업 인력 구성의 한계에 의한 필요성도 있지만, 이런 필요성에 의해서 기술도 그만큼 편리해졌기 때문이다. 스크립트 언어의 발전으로 루비나 node.js 의 경우 학습 비용이 매우 낮고, 생산성이 높게 개발을 할 수 있으며, 아울러, 클라우드의 발전으로 전문적인 하드웨어 전문적인 지식이 없이도 얼마든지 인프라를 운영할 수 있고 더불어 PaaS의 발전으로 하드웨어의 지식이나 미들웨어에 대한 지식이 없이도 설치 및 운영이 가능하게 되었다.


개인적으로 풀스택 개발자의 가능성에 대해서 많은 고민을 했는데, 스타트업에서 만난 엔지니어들을 보면 앱 개발에서 시작했다가 필요로 인하여 서버를 개발하게 되고, 쉬운 방법을 찾아가면서 클라우드를 활용하면서 서버 개발까지 같이 하는 개발자들을 많이 보았다. 특히나 백앤드 개발에 대한 선입관이 없기 때문에 솔루션이나 아키텍쳐 구성에 유연성이 보이고, 기존 전통적인 백앤드 아키텍쳐의 사상을 넘어서는 좀더 실용적인 아키텍쳐 디자인을 하는 것을 볼 수 있었다.


서비스 기반의 데이타 분석

근 몇년 빅데이타 분석의 중요성은 계속 강조되어 왔기 때문에 데이타 분석의 필요성등에 대해서는 별도로 언급하지는 않겠다. 그런데 이 데이타 분석이라는 것이, 많은 양의 데이타를 저장하기 위한 하드웨어 인프라가 필요함은 물론이고, 이를 분석하기 위한 소프트웨어 예를 들자면 하둡이나 스팍과 같은 기술을 도입하기 위해서는 높은 기술 수준과 자금이 필요하기 때문에 일반적인 스타트업에서는 적용이 매우 어렵다. 그래서 빅데이타라는 넘어가야 하는 영역이 있음에도 불구하고 실제로 활용하기가 어려운 영역이었다.

그런데 근래에 광고 서비스 업체나 인터넷 서비스 업체를 중심으로 데이타 수집에 대한 요구와 개발자 생태계를 자기쪽으로 끌어들이기 위한 목적으로 데이타 분석 서비스를 무료 또는 부분 무료로 오픈 하는 경우가 많다.


대표적인예로, 구글 애널러틱스 (aka. GA)나 야후의 Flurry, 트위터의 Fabric과 같은 서비스들이 대표적인 예이며, 한국의 경우 파이브락스(http://www.5rocks.io/en) 가 무료(광고를 내보내야하기는 하지만)에서 서비스를 제공하고 있다. 



< 그림. Yahoo Flurry 스크린샷 >


단순하게는 일/월 방문자수 (DAU/MAU)에서 부터, 사용자가 앱에서 어떤 경로로 돌아다니고 머무는 시간이 얼마인지, 사용자 층은 어떻게 되는지까지 분석이 가능하다.

앱을 개발해서 서비스를 한다면 반드시 사용해야 하는 서비스가 아닐까?


AB 테스팅의 도입 가속

페이스북을 사용하는 사용자라면 어느날 갑자기 앱 업데이트를 하지 않았는데도 새로운 기능이 돌다가 갑자기 그 기능이 없어진것을 확인할 수 있다. 페이스북에서는 사용자의 반응을 살피기 위해서 새로운 기능을 미리 넣어서 배포해놓고,사용자를 A/B 두 그룹 (또는 그 이상)으로 나눠서 사용자의 기능 사용에 대한 반응을 보고 그 기능을 적용할지 여부를 결정하는 방법이다.


A/B 테스팅은 개념 자체는 좋지만, 앱스토어 환경에서 이를 하려면, 

  1. 두개의 기능을 개발해야 하고
  2. 각 기능을 A/B 두개의 사용자 그룹에 별도로 보이게 해야 하며
  3. A/B 사용자에 대한 기능 사용율을 매번 수집하여 분석해야 한다.


물론 직접 코드로 만들 수 도 있지만, 배포된 애플리케이션에서 테스트 비율을 조정한다던지, 테스트 진행 상황에 대한 리포팅을 작성하려면 로그도 수집해야 하고 별도의 개발 노력이 드는게 사실이기 때문에, 막상 쉽게 접근하기는 어렵다.


이런 일반적인 AB 테스팅 개발을 제공하기 위한 클라우드 기반의 서비스가 근래에 들어서 많이 제공되고 있는데, optimizely.com apptimize.com 등 여러 서비스들이 있고, 아마존 AB 테스팅의 경우 무료로 그 기능을 제공한다.

아마존의 경우는 무료인 만큼 기능이 빈약하다. 상용 서비스의 경우에는 5만, 10만 사용자까지 무료로 기능을 제공하거나 수익을 내지 못하거나 펀딩을 받지 못한 스타트업에는 무료로 제공하는 경우도 있으니, 꼼꼼하게 살펴볼 필요가 있다. 


  

<그림. AB 테스팅 도구에서  UI를 변경하는 화면> 

출처 : https://www.leanplum.com/c/blog/page/2/


특히 상용 솔루션의 경우에는 앱이 배포된 상태에서 별도의 재 배포 없이 UI 요소 (버튼 색, 이미지, 텍스트)를 동적으로 변경해서 테스트를 진행할 수 있는 기능을 제공하기 때문에, 손쉽게 UI 개선을 해나갈 수 있고, 특히 GUI 기반의 도구를 제공하기 때문에, 개발팀의 도움 없이 디자인팀이 직접 수정을 해서 테스트가 가능하다.


개발에 대한 공수나, 적절한 플랫폼의 부재로 지금까지 쉽지 않았던 분야인데, 여러 클라우드 기반의 서비스를 기반으로해서 2016년에는 일반 앱 서비스 개발에도 사용 빈도가 꽤 높아지지 않을까 하는 예상을 조심스럽게 해본다.

오픈 소스 머신 러닝 알고리즘 및 클라우드 머신 러닝 서비스


데이타 분석의 다른 영역으로는 데이타를 분석하여, 추천이나 데이타등을 군집화 또는 분류해주는 머신러닝 (Machine Learning) 분야가 있다. 수학적인 지식과 대규모 인프라가 필요하기 때문에, 일반적인 기업이나 개발자들이 접근하기 어려운 부분이었는데, 근래에 하둡과 같은 빅데이타 인프라가 오픈소스화 되고, 또한 복잡한 ML  알고리즘이 오픈소스 패키지로 제공됨에 따라서 급격히 확산이 되기 있는데, 여전히 소규모의 앱 개발자들이 쓰기에는 복잡한 인프라를(하둡,스파크 등) 직접 설치 운영해야 하는 부담이 있었다.

 그러나 근래에 Microsoft 나 Google 등을 중심으로 이 머신 러닝 알고리즘을 클라우드 서비스 형태로 API가 제공됨으로써 개발 접근성이 매우 쉬워졌고, coursera.org 와 같은 온라인 강의를 통해서, 일반 개발자들오 머신러닝 관련된 기술을 쉽게 배울 수 있는 온라인 강좌됨에 따라, 예전에 비해서 훨씬 쉽게, 빅데이타를 활용한 머신러닝 서비스에 접근이 가능하게 되었다. 




<그림.  Microsoft Azure 클라우드의 머신러닝 로직 설계 화면 >




지금까지 짧게지만 앞으로는 모바일 서비스 개발 방향에 대해서 살펴보았다.

전체적인 흐름을 요약해보자면, 스타트업 주도의 개발이 활성화 되면서 적은 인원으로 효율적인 개발을 할 수 있는 환경이 필요함에 따라 앱 개발자가 스크립트 언어등 러닝 커브가 낮은 언어를 이용하여 서버쪽에 구현을 같이하는 풀스택 개발자 형태로 전환되는 현상이 가속화될 것이고, 이에 맞물려서 쉽게 인프라를 사용할 수 있게 하는 클라우드 컴퓨팅 환경의 활용이 플랫폼 형태로 되어 있는 PaaS를 중심으로 활용될것이다.

또한 빅데이타에 대한 활용 부분이 대기업 뿐 아니라, 저 자본에 소인원인 스타트업 앱 개발에도 사용이 되는 대중화의 국면을 맏을 것이라고 보는데, 클라우드 서비스 형태로 제공되는 빅데이타 분석등의 플랫폼을 중심으로 무료 또는 저 비용의 서비스가 활용 될것이며, AB 테스팅 서비스의 활성화로 사용자의 반응을 기반으로 하는 개발이 가속화 될것으로 보인다. 또한 고급 머신 러닝 알고리즘이 오픈소스화 되고, 서비스 API화 되면서 대중화 국면을 맞을 것이다.


그리드형