인생 머 있어? 한방이지~



ICT Columnist at ZDNet Korea and KT Digieco.
I’m developing social & contents platform for convergence devices.
Hobby: Mahler, Golf, MTB, UFC, EPL
Recent Tweets @minupark
Who I Follow
Posts tagged "플랫폼"

한국형 모바일 운영체제(OS)의 허와 실

 

얼마전 구글의 모토로라 인수 이후 지식경제부에서 정부와 삼성전자, LG전자 등 산업계 컨소시엄을 구성해서 애플, 구글에 대항할 수 잇는 한국형 모바일 운영체제를 독자 개발할 것이라는 발표를 한 뒤, 수많은 IT 전문가들의 현실성 논란에 대한 따가운 질타를 받은바 있다.

이미 많은 IT 전문가들도 지적한 부분이지만, WIPI 사례에서 본 것 처럼 국가 주도형 플랫폼 사업의 전형적인 문제가 다시 언급되었다. 물론 지경부에서는 WIPI 사례를 거울삼아 개방형 그리고 클라우드 중심으로 설계를 할 것이라고 하지만 허울좋은 전시행정일 뿐 대기업 배불리고 세금만 낭비할 것이라는 예상이 크다. 어찌보면 그만큼 정부의 IT 정책에 대해서 국민들의 불신이 크다고 볼 수 있다.

여전히 해결되지 않은 공인인증서, 엑티브엑스, 게임등급위원회 등등 트랜드를 따라가지 못하는 정부 정책에 대해서 신뢰를 가지기 어려운 것이 현실이다.

 

필자의 위피 의무화 폐지와 국내 무선 변화” 컬럼에서도 언급하였지만, 2009년 위피(WPI) 의무화가 폐지될 때까지 국내 무선 인터넷 플랫폼은 통합되어 있는것 처럼 보였지만, 오히려 아이폰 등 스마트폰 도입의 걸림돌로 작용하여 국내 모바일 개발 인프라만 후퇴시켰다. 당시에도 위피 의무화를 주도한 정부의 주장은 해외로 로열티 유출이라는 명분이었다. 하지만 위피 또한 상당부분이 당시 썬마이크로시스템즈의 특허를 침해하였고 다시 로열티를 내야 하는 웃지못할 일이 발생하기도 하였다. 지금도 정부의 명분은 해외 모바일 운영체제에 종속된 국내 스마트폰 환경을 보호해야 한다는 것일 것이다. 분명히 이러한 시도는 필요하겠지만 보다 신중한 접근 방법이 필요할 것이다.

 

한국형 모바일 운영체제개발에 앞서 몇가지 질문을 해보고 싶다.

  1. 어떻게 생태계를 만들어 낼 것인가?
  2. 누가 사용하게 될 것인가?
  3. 개발자들이 왜 사용해야 하는가?

 

우선 모바일 생태계는 운영체제가 존재한다고 저절로 만들어지는 것이 아니다. 모바일 어플리케이션 유통의 핵심인 어플리케이션 스토어(이하 앱스토어”)가 존재하지 않으면 무용지물이다. SK텔레콤의 T-스토어, 삼성전자의 삼성앱스 등등 굴지의 통신사와 제조사들이 많은 노력을 기울이고 있지만 아직은 애플 앱스토어나 구글 안드로이드마켓에 견줄바는 아니다. 이런 상황에서 운영체제 + 앱스토어까지 고려한다면 시간과 비용의 문제를 해결할 수 없을 것이다.

물론 K-WAC(Korea-Wholesale Application Community)을 대안으로 생각하는 사람들도 있겠지만, WAC조차 아직은 시작에 불과하며 애플이나 구글의 스토어와 경쟁할 수준은 아니다. 글로벌 앱스토어와 경쟁하기에 시기도 규모도 맞지가 않다.

 

정부에서는 한국형 모바일 운영체제가 만들어지면 국내 제조사들이 우선적으로 탑재하여 출시할 것이라 기대하고 있을 것이다. 국내 제조사들 입장에서는 멀티 운영체제 전략의 하나로 사용할 뿐 여전히 해외 시장에서 경쟁력을 가진 안드로이드에 집중할 것이다. 만약 의무화가 된다면 제2의 위피가 될 것은 불을 보듯 뻔할 것이다. 어떤 형태로든 제품으로 출시가 되었다고 가정하더라도 어떤 개발자가 사용하게 될 지 의문이다. 스토어의 규모도 부족하고 열약한 국내 개발 환경에서 한국형 운영체제를 위한 앱을 만들 개발자는 누구인가 생각해봐야 한다. 아마도 제조사나 통신사에 납품을 위한 SI 도구로 전락하게 될 것이다.

 

이런 문제들이 해결되었다고 하더라도 모바일 운영체제를 만든다는 것은 쉬운 일이 아니다. 이미 HP의 경우 webOS 탑재 선언 후 6개월만에 실패를 인정했다. 정부가 추진하고자 하는 웹기반 모바일 운영체제는 HPwebOS와 가장 유사한 형태다. 이미 공개되어 있는 다양한 운영체제 커널들이 존재하고 오픈소스도 다양하게 공개되어 있지만, 이런 것들의 단순한 조합만으로 운영체제가 만들어 지는 것은 아니다. 운영체제는 커널 뿐만 아니라 그래픽엔진(OpenGL ES), 폰트, 웹렌더링(Webkit), 보안모듈, 통신모듈, 하드웨어 디바이스 지원, 멀티터치 등 고민해야 될 부분이 한 두개가 아니다. 심지어는 웹렌더링만 만드는데도 수년이 걸리기도 한다. Opera 같은 모바일 브라우저 회사에는 직원이 700명이 넘고 상당수가 엔지니어다. 삼성전자의 경우만 하더라도 바다 운영체제를 상용화하기까지 5년 가까운 시간이 소모되었다. 결론적으로 한국형 모바일 운영체제는 정책의 문제뿐만 아니라 실제 개발의 난이도 또한 버겁기는 마찬가지다. 이러한 논의가 지금 시점에 이루어진다는 것 자체가 문제라고 보인다.

 

본고에서는 한국형 모바일 운영체제정책에 대한 반론이나 대안을 내놓고자 하는 것이 목적은 아니다. 최근에 언론을 통해서 많이 거론되고 있는 운영체제 그리고 플랫폼에 대한 보다 깊이있는 이해와 특히, 다양한 모바일 운영체제와 개발환경 때문에 문제가 되고 있는 모바일 플랫폼 파편화에 대한 대안으로 이슈가 되고 있는 크로스 플랫폼에 대한 분석과 고민을 하고자 한다.

 

플랫폼에 대한 이해

플랫폼은 간단하게는 소프트웨어를 실행할 수 있는 기반을 말한다. 일반적으로 플랫폼은 운영체제, 런타임 라이브러리, 미들웨어, GUI, SDK 등을 포함한다고 위키에서는 정의하고 있다. 그리고 운영체제는 커널을 중심으로 메모리관리, 멀티태스킹, 파일시스템 관리, 입출력 관리를 해주는 도구라고 정의할 수 있다. 이 설명에서 확인할 수 있는 것은 플랫폼이 운영체제를 포괄하는 의미로 사용되고 있다는 사실이다. 그런 측면에서 구글 안드로이드, 애플의 iOS, 삼성전자의 바다는 운영체제를 내장한 플랫폼이라고 볼 수 있다. 포괄적인 의미에서 애플의 앱스토어나 구글의 안드로이드 마켓, 그리고 클라우드까지 모두 유기적으로 연결되어 있는 하나의 플랫폼이라고 할 수 있다. 하지만 최근에 플랫폼과 운영체제의 구분이 어려워진 이유 중에 하나는 게임 플랫폼, 소셜 플랫폼, 메시징 플랫폼 등과 같은 운영체제를 포함하지 않는 서비스 플랫폼의 증가 때문이다. 이제는 기술적인 용어의 구분으로 플랫폼을 구분 짓은 것은 큰 의미가 없는 것도 사실이다. (이런 구분법으로 본다면 플랫폼이 운영체제보다 더 기술적으로 접근하기 쉬울 수 도 있다)

 

어째튼 이런 다양한 플랫폼의 존재가 해당 플랫폼을 사용하는 사용자에게는 큰 불편이 아닐 수도 있겠지만, 어플리케이션을 개발하는 기업이나 개발자에게는 다양한 모바일 플랫폼마다 앱 개발 기술이 상이하여 개별 플랫폼별로 개발을 해야하기 때문에 개발 비용과 기간이 증가하게 되는 단점이 있다. 웹표준을 이용하면 하나의 웹 기술로 다양한 플랫폼에 대응할 수 있기 때문에 이러한 문제를 해결할 수 있을 것이라고 생각되지만 여러가지 문제로 인하여 아직까지는 완전한 해결책이라고 보기는 어렵다. 그래서 대두된 것이 크로스 플랫폼(Cross Platform) 개발환경이다.

 

크로스 플랫폼이란?

 

크로스 플랫폼은 2개 이상의 운영체제 또는 플랫폼에서 공통으로 사용되는 소프트웨어 또는 어플리케이션을 말한다. 가장 대표적인 사례가 자바(Java) 언어다. 여기서 다시 세분화 되어 지면 크로스 컴파일, 크로스 프로그래밍 언어, 크로스 API  등으로 나뉠 수 있다. 자바로 개발된 소스코드는 개별 운영체제에서 다시 컴파일되어 목적코드가 생성되어야 비로소 해당 플랫폼에서 구동되는 어플리케이션이 된다. 이런과정에서 자바는 하나의 문법과 API를 가지는 언어이며, 개별 플랫폼을 위한 크로스 컴파일 도구를 포함하고 있다.

 

자바라는 훌륭한 크로스 플랫폼 도구가 존재함에도 불구하고 최근에 다시 이슈가 된 이유는 아이폰에 사용되는 iOS 때문이다. 실제로 자바로 개발이 가능한 모바일 플랫폼은 구글 안드로이드 정도 뿐이다.

아래 [ 1]에서 보는 바와 같이 다양한 모바일 플랫폼들이 모두 상이한 개발언어로 개발되어야 한다.

 

[ 1.] 모바일 프랫폼별 개발언어

제조사       | 애플             | 구글          | 마이크로소프트 | 삼성전자 | RIM         | HP

플랫폼(OS) | iOS              | 안드로이드 | 윈도폰7            | 바다       | 블랙베리 | Palm webOS

개발언어    | Objective-C | Java           | C#                   | C++      | Java        | JavaScript

 

특정 모바일 플랫폼의 시장 점유율이 압도적이라면 모르겠지만 현재와 같이 iOS와 안드로이드가 시장을 양분한 상태에서 마이크로소프트의 윈도폰7이 약진하고 삼성전자에서 바다에 꾸준히 투자를 하게 된다면 모바일 앱 개발사의 경우 울며겨자먹기로 멀티 플랫폼을 위한 앱 개발에 중복투자를 할 수 밖에 없는 것이 현실이다.

 

이런 모바일 플랫폼 파편화을 통일하고자 하는 의지가 크로스 플랫폼 개발환경이고, 최근에 가장 각광받는 기술은 HTML5 기술을 활용한 모바일 웹 플랫폼이라고 할 수 있다. 특히 iOS와 안드로이드가 모두 웹킷(Webkit) 기반의 웹뷰(Webview)를 제공하고 있고, 애플과 구글이 모두 웹킷 오픈소스 프로젝트 참여사이기 때문에 어느정도 호환성도 검증되어 있는 상태이기 때문에 많은 솔루션 업체들이 모바일 웹기반 크로스 플랫폼 개발도구를 출시하고 있다. 대표적인 솔루션은 아래 [ 2]와 같다.

 

[ 2.] 웹 기반 모바일 크로스 플랫폼 제품들

개발사 |  Nitobi      | Appcelerator | Rhomobile | KTH

솔루션 | PhoneGap | Titanium       | Rhodes      | Appspresso

 

그 외에도 최근에는 SKT, KT, AT&T, Verizon 등 전세계 24개 주요 통신사업자와 삼성전자, LG전자와 같은 디바이스 제조사들이 참여한 글로벌 통합 앱 스토어인 WAC(Wholesale Applications Community)에서 웹기반 크로스 프랫폼인 Waikiki API를 준비하고 있다.

 

어떤 형태로든 웹기반 모바일 크로스 플랫폼 제품들은 C, Java와 같은 프로그래밍 언어보다 쉽고 편하게 접근할 수 있는 웹 요소들(HTML, JavaScript, CSS)을 가지고 앱 같은 웹을 개발할 수 있게 해준다. 또한 HTML5에 대한 기대심리 때문에 가능성에 대한 기대 또한 큰 것이 사실이다. 하지만 이런 시도들이 장미빛 전망만을 보여주고 있는 것은 아니다. 최근에 화제가 되었던 HTML5 대한 편한 진실에서는 아직은 수정하고 보완해야 할 사항들이 많이 존재한다고 주장하고 있다. 물론 여기 내용이 100% 옳다고 볼수는 없다. 일부 내용들은 HTML5의 문제라기 보다는 클라이언트 앱 자체의 문제인 경우도 많이 있다. 그럼에도 불구하고 걱정이 되는 부분 몇가지는 오프라인 앱에서 로컬 스로리지 데이타 동기화 문제, 자바스크립트의 과도한 사용으로 인한 브라우저의 한계, 그리고 여전히 아직은 무거운 브라우저 그리고 플랫폼간의 브라우저 호환성 같은 것들이다. 물론 아직 HTML5가 진행중인 기술이고 표준이 완성되어지는 시점에는 이런 문제들이 상당부분 해소될 것이라 보지만, 아직은 고려해야 할 것이 많은 것도 사실이다.

 

이런 웹기반 모바일 크로스 플랫폼은 다른 표현으로 하이브리드 모바일 어플리케이션이라고 불리기도 한다. 하지만 구현 방법의 핵심이 웹기술을 이용하는 것은 동일하지만, 엄밀히 말하자면 웹기반 모바일 크로스 플랫폼과 달리 하이브리드 어플리케이션은 플랫폼을 지칭하기 보다는 개발방법론에 가깝다. 실제로 필자가 2005년 정통부 우수신기술 과제로 수행한 모바일 엔터프라이즈 비즈니스 플랫폼솔루션의 경우 핵심 경쟁력은 웹기반 하이브리드 개발 방법론 이었다. 지금 모바일 플랫폼과의 차이점은 웹기술이 컨텐츠와 레이아웃을 만드는 용도에 국한되어 있고, 자바스크립트 보다는 전용 태그(TAG) 기반으로 대부분의 행위를 프로그래밍 해야 하는 방식이었지만, 이것도 하이브리드 어플리케이션 개발방식 중에 하나라는 것이다. 이처럼 하이브리드 어플리케이션은 웹기술을 이용하기는 하지만 네이티브 코드의 비중이 가변적이라는 차이가 있다.

 

최근에 발표된 페이스북 앱의 경우도 마찬가지의 경우라고 본다. 웹기반으로 많은 부분을 변경하였지만 기본적인 컨셉은 하이브리드 어플리케이션에 가깝다. 다만 멀티 운영체제, 멀티 디바이스에서 N-스크린을 고려한 UI/UX 컨셉을 유지하기 위해서 텍스트/이미지를 표현하기 위한 영역을 최대한 HTML과 웹기술을 가지고 만들어졌다. 하지만 여전히 지도, 채팅 등 디바이스 운영체제에 의존적인 부분은 네이티브 코드로 만들어졌다. 사실 페이스북의 이러한 시도는 오래전부터 시작되어 왔다. 심지어 피쳐폰 기반에서도 페이스북은 서비스의 멀티플랫폼을 지원하기 위하여 HTML 기반으로 앱을 만들어서 다양한 운영체제에 적용시키기 위한 노력을 지속하였다.  

 

네이티브 크로스 플랫폼

 

현재 제품으로 출시된 웹 기반 모바일 크로스 플랫폼들이 모두 HTML5를 지원하는 것은 아니며, 개별 모바일 플랫폼에 맞도록 기능과 API에 대한 정리가 많이 되어 있어서 HTML5 문제와 상관없이 일정 수준 이상의 성능은 보장한다. 여기서 다시 한번 고민해야 할 부분은 쉽고 편하게 다양한 모바일 플랫폼에 동시에 적용이 가능한 앱을 만들수 있지만, 여전히 대세는 애플의 앱스토어이고 상위권의 앱들은 Xcode에서 Objective-C를 가지고 개발된 것들이다. 사실 iOS 전문 개발자들은 웹기반 모바일 크로스 플랫폼을 사용해야 할 이유를 느끼지 못하고 있다. 물론 웹의 역사를 보면 CGI, Servlet 개발방법들이 JavaScriptCSS 기술에 밀려난 사례가 있지만, 아직은 시기상조 인것 같다. “디벨로퍼 이코노믹스 2011” 보고서에 따르면 지난해 말 기준으로 애플 앱스토어에 등록된 앱은 약 40만개로 전체 모바일 앱 시장의 70% 이상 점유율을 가지고 있다. 40만개의 앱중에 상당수가 Objective-C로 개발되었음은 말할 것도 없다. 그리고 이런 iOS 개발자들이 안드로이드 어플리케이션 개발을 위한 새롭게 자바 언어를 익히고 시간을 투자하는 경우도 많지 않다. 결국 네이티브 어플리케이션 개발자들을 위한 크로스 플랫폼 환경도 중요한 시장 중에 하나라고 볼 수 있다.

 

네이티브 어플리케이션의 장점은 그래픽/UI 처리 능력이 뛰어나서 웹기반 앱들보다 보다 섬세한 UI를 구성할 수 있고, 스토리지 관리나 디바이스 제어가 유리하다. 특정 어플리케이션의 경우에는 네이티브 형태가 아니면 개발이 불가능한 경우도 있고, 모바일 게임 어플리케이션의 경우 거의 대부분이 네이티브 형태로 개발되어진다. 네이티브라고 해서 웹기술을 이용하지 않는 것은 아니다. 텍스트/이미지 컨텐츠 처리량이 많다면, 그리고 효율에 문제가 없다면 네이티브 어플리케이션을 개발할때도 브라우져 모듈을 가져와서 HTML/CSS/JavaScript로 처리하는 경우도 많이 있다. 이런 경우 하이브리드 개발방법론을 네이티브에 적용한 경우라고 보면 될 것이다. 문제는 이런 네이티브 어플리케이션도 크로스 플랫폼이 가능한지? 그리고 개발언어는 어떤것이 되어야할지? 등이 궁금하지 않을 수 없다.

 

우선 네이티브 크로스 플랫폼의 원리에 대해서 이해해 보도록 하자. 네이티브 크로스 플랫폼의 원리는 개별 운영체제에 존재하는 어플리케이션 프레임워크와 라이브러리의 기능을 대체하거나 브릿지 역활을 함으로서 네이티브 크로스 플랫폼 개발환경으로 제작된 앱들이 개별 운영체제에서 네이티브하게 동작하게 되는 것을 말한다. , 개별 플랫폼에 존재하는 라이브러리와 API를 사용하지 않고, 네이티브 크로스 플랫폼 솔루션이 제공하는 API를 이용하여 개발하기 때문에 개별 플랫폼의 API를 알지 못해도 하나의 API만 숙지하면 멀티 플랫폼에서 동작하는 앱을 만들 수 있다는 것이다.

 

일반적인 경우 네이티브 크로스 플랫폼 개발환경은 C/C++ 언어로 비주얼스튜디오나 Xcode 환경에서 개발된다. 자바 대신에 C/C++이 기본언어가 된 이유는 대부분의 모바일 플랫폼의 커널이 UNIX/Linux 계열의 커널과 프레임워크를 가지고 있어서 C/C++로 개발된 앱을 이식시키기가 용이하기 때문이다. 안드로이드의 경우 플랫폼에서 NDK를 지원하고 있기 때문에 대부분의 C/C++로 개발된 앱들이 잘 이식되고 또 잘 동작한다. 아마도 많은 개발자들이 자바로 개발된 앱들이 iOS에서 동작하기를 원하겠지만 자바의 특성인 가상머신 플랫폼의 구조적인 이유로 쉽지만은 않다. 어플리케이션 프레임워크와 라이브러리를 대체한다는 것이 말은 쉽지만 사실 멀티 플랫폼을 위한 통합 미들웨어를 만드는 것과 다름이 없다. 그래서 안정적인 기능을 제공하는 솔루션도 많지 않다. 현재 가장 유명한 네이티브 크로스 플랫폼은 Ideaworks3D라는 회사에서 개발한 Marmalade라는 제품이다. 이 제품의 장점은 드래그앤드롭 방식의 UI 빌더와 시뮬레이터를 제공하기 때문에 N-스크린을 대응하는 UI를 쉽게 개발할 수 있고, 쉽게 확인할 수 있기 때문에 C/C++ 개발자들에게는 웹기반 크로스 플랫폼보다 오히려 사용하기가 더 쉬울 수도 있다. 이미 이 회사는 삼성전자, LG전자, KT와 같은 국내회사들과도 제휴가 되어 있다고 한다.

 

네이티브 크로스 플랫폼을 제공하는 또 다른 회사는 2009년에 만들어진 UXPlus라는 국내기업이다. 얼마전 매일경제가 주최하는 모바일창업코리아 2011-슈퍼스타 M”에서 7개 예비 슈퍼스타에 선정되기도 했다. 사실 척박한 국내 실정을 감안하면 중견 IT 기업들도 쉽게 시도하지 못하는 네이티브 크로스 플랫폼 솔루션을 만들어 냈다는 사실은 놀라운 일이다. SK커뮤니케이션에서 출시한 네이트온 UC”의 경우 이 회사의 제품인 아쿠아 플랫폼으로 개발되었다고 한다. 아이폰, 안드로이드, 윈도모바일 이렇게 3가지 모바일 플랫폼이 하나의 소스코드와 하나의 UI로 동일하게 동작하고 있다. 아쿠아 플랫폼 역시 Marmalade와 마찬가지로 비주얼스튜디오, Xcode 개발환경을 사용하고 있으며, 자체 개발한 N-스크린을 대응할 수 있는 UI빌더와 시뮬레이터를 제공한다

 

크로스 플랫폼은 새로운 플랫폼 영역으로 발전

 

지금까지 다양한 웹/네이티브 기반 크로스 플랫폼에 대해서 알아보았다. 서두에 뜬금없이 한국형 모바일 운영체제의 허와 실이란 주제로 시작하게 된 이유는 정부관계자들이 좀 더 시야를 넓힐 필요가 있다는 취지 때문이다. 당장 그럴듯 하게 보이는 일 보다는 현실적으로 국내 개발 인프라를 발전시킬 수 있는 투자가 필요하다. 그런 취지에서 정부가 대기업과 손을 잡고 운영체제를 만들겠다는 논리보다는 Appspresso나 아쿠아 플랫폼과 같은 국산 크로스 플랫폼을 정부와 기업이 협력 발전시켜서 웹/네이티브 기반 통합 크로스 플랫폼을 만드는 것이 어떨까 생각한다.

 

네이티브 크로스 플랫폼의 경우 시스템 구조상 운영체제 커널 바로 위에서 미들웨어 역활을 수행한다. 안정적인 미들웨어 역활을 할 수 있는 크로스 플랫폼이 대중화 된다면 향후 커널을 통합하여 독립적인 모바일 플랫폼으로의 전환도 생각해 볼 수 있다. 내년부터 블랙베리에서도 안드로이드 앱 사용이 가능하게 된다고 하는데, 마찬가지로 안드로이드를 위한 미들웨어 기능까지 탑재하겠다는 의미로 해석된다. 네이티브 크로스 플랫폼 기술을 활용한 미들웨어 인프라를 구성하고, 웹기반 크로스 플랫폼을 이용하여 쉬운 개발환경을 제공하는 통합 플랫폼을 만들 수 있다면 진정한 한국형 모바일 플랫폼이 되지 않을까 기대한다.

 

완성된 통합 플랫폼을 국내 IT 기업과 개발자들한테 보급하여, 애플 앱스토어와 안드로이드 마켓에서 국내 기업들과 개발자들이 보다 경쟁력을 가진다면, 국내 모바일 앱 인프라도 발전할 수 있고, 개발자들도 효과적인 개발을 할 수 있게 될 것이다. 글로벌 앱스토어 시장에서의 경쟁력이 당장 모바일 운영체제를 만드는 것보다 생색이 나지는 않겠지만, 통합 플랫폼을 통해서 만들어진 모바일 앱들이 앱스토어에서 많은 비중을 차지하게 된다면, 향후에는 플랫폼 시장에 대한 출사표를 던질 수도 있지 않을까 생각한다. 처음부터 거창하게 시작하는것 보다는 기초체력과 인프라를 만드는 것이 우선일 것이다.

 

35개국 200만명의 뷰티컨설턴트를 거느리고 있는 미국 최대 다단계 화장품 판매 회사인 “Mary Kay Cosmetic”의 창업자 “Mary Kay Ash”가 말을 기억할 필요가 있다. “Little success paves the way to bigger success (작은 성공이 보다 큰 성공을 만들어 낸다)” @

(본 글은 2011년 10월 18일 KT경제경영연구소 Digieco Issue&Trend에 기고한 글입니다.)

http://www.digieco.co.kr/KTFront/report/report_issue_trend_view.action?board_seq=5931&board_id=issue_trend&sort_order=new&kind=&list_page=1&list_gubun=title&searchtext=&etc1=165&etc2=

며칠전에 작성한 바다폰 관련된 글에 대해서 200여분이 RT 또는 Mention을 주셨다. 사실 이정도로 많은 분들이 관심을 가져주실 줄은 몰랐던터라 좀 더 잘 정리해서 글을 썼어야 된다는 후회도 들지만, 이미 엎질러진 물이고…

Reply 중에서 바다는 OS가 아니라 플랫폼(Platform)이라는 지적을 해 주신 분들이 많다. 그래서 이번 기회에 OS와 플랫폼에 대한 명확한 정리를 해 볼 필요가 있을 것 같아서 글을 써본다. 더불어 유사하게 많이 사용되는 프레임워크(Framework)에 대해서도…

우선 OS에 대한 정의부터 다시 정리해보면… OS를 위키에서는 이렇게 정의하고 있다.

“운영 체제(運營體制, 문화어: 조작체계) 또는 오퍼레이팅 시스템(OS, operating system)은 컴퓨터의 하드웨어를 직접적으로 제어하고 관리하는 일을 하는 시스템 소프트웨어이다.”

OS는 하드웨어를 효율적으로 제어하고 어플리케이션들이 실행할 수 있는 환경을 제공하는 것이 주된 목적이다. 그 목적을 위해서 가장 핵심적인 역활을 수행하는 것이 커널(Kernel)이라고 할 수 있다. 따라서 OS라고 정의하기 위해서는 커널을 보유하고 있는가를 확인해야 한다.

하지만 최근에 OS는 커널 뿐만이 아니라 다양한 라이브러리와 프레임워크를 함께 제공하고 있다. 그럼 프레임워크는 또 뭐란 말인가? 프레임워크는 라이브러리에 포함된 코드들을 재사용이 가능한 형태로 추상화한 형태로 제공하는 것으로 일반적으로 API를 통해서 제공된다. (아~ 복잡하다. 다시 학교로 돌아간 기분이다. ㅜㅜ)

아무튼, 중요한 것은 OS는 커널과 라이브러리, 프레임워크 등으로 구성되어 있다는 사실이다.

그렇다면 플랫폼은 OS와 어떻게 다른가? 마찬가지로 위키의 정의에 의하면…

“컴퓨팅에서 플랫폼은 소프트웨어가 구동 가능한 하드웨어 아키텍쳐나 소프트웨어 프레임워크의 종류를 설명하는 단어이다. 일반적으로 플랫폼은 컴퓨터의 아키텍쳐, 운영체제(OS), 프로그램 언어, 그리고 관련 런타임 라이브러리 또는 GUI를 포함한다.”

얼추봐도 플랫폼은 OS보다 큰 개념이다. 하지만 OS를 설명할 때 나왔던 용어들이 다시 언급되는걸 보니 그 구분이 쉬워보이지 않는다. 그래서 MS윈도를 OS라고 부르기도하고 플랫폼이라고 부르기도 한다.

그런데 최근에 많이 대두되는 웹플랫폼이란 용어가 있는데, 웹플랫폼에서 OS는 무엇일까? OS의 핵심요소인 커널이 웹플랫폼에는 없으니 말이다. 웹플랫폼이 동작하기 위해서는 서버이든 PC이든 간에 HTML을 표현하기 위한 렌더링엔진이 존재해야한다. 그리고 랜더링엔진은 다시 고유의 OS위에서 동작한다. 그렇다면 고유의 OS를 보유하고있지 않는 웹플랫폼을 플랫폼이라고 말할 수 있는가?

최근에 동향을 보면 플랫폼을 좀 더 포괄적으로 활용하는 것 같다. 오히려 추상적인 OS를 배제한 상태에서 (즉, 커널은 기존 하드웨어 종속적인 부분을 활용하고) 라이브러리 + 프레임워크 + 런타임 등을 포함하여 플랫폼이라고 지칭하는 경우가 많아졌다.

정리하면 위키에 나와 있는 설명만 가지고는 OS와 플랫폼을 구분하기가 쉽지 않다. 하지만 현실적으로 사용되는 형태는 플랫폼은 보다 상위적인 개념에서, OS는 보다 하위적인 개념에서 자주 사용된다. 그래서 OS를 플랫폼이라고 부를 수는 있지만 플랫폼을 OS라고 부를 수는 없는 이유가 발생하는데 결국 OS의 핵심 요소인 커널의 존재여부라고 할 수 있다.

그럼 본 글이 제목인 삼성 바다는 OS인가? 플랫폼인가?

결론은 “두~다~(베컴 CF 패러디 ^^)” 왜냐하면 바다의 플랫폼 아키텍쳐를 보면 커널을 자체적으로 가지고 있기 때문이다. 바다 홈페이지에 있는 바다 아키텍쳐를 확인해 보시라.

그런데 재미있는 사실은 바다는 RTOS를 사용하기도 하고 리눅스 커널을 사용하기도 한다. 이 부분은 핸드폰을 제작하는 단계에서 결정되어 지는데 바다는 이 두가지 커널을 모두 지원하고 있다. 안드로이드도 리눅스 커널을 이용하는 것은 마찬가지고… 또한 안드로이드도 OS라고 불리기도 하고 안드로이드 플랫폼이라고 불리기도 한다.

사실 삼성은 RTOS에 관한 전문가집단이다. 그동안 만들어낸 거의 대부분의 휴대폰에 RTOS를 탑재했을테니깐… 하지만 왜 리눅스커널을 바다에 사용하는지는 의문이다. 아마도 기존 RTOS에서 플랫폼을 제공하기엔 커널 기능상의 한계와 응용프로그램 단에서 제공해 줄 수 있는 라이브러리의 한계 때문이 아닐까 생각해본다.

결국 바다는 삼성이 그동안 열심히 만들어왔던 휴대폰 RTOS와 리눅스커널을 잘 조합해서 만든 OS이자 플랫폼인데 20년간 최적화된 커널을 가지고 있고, 대부분 자신들이 만든 디바이스 위에서만 동작할테니 안정성도 어느정도 보장이 될 것이다.

하지만 이 부분이 결국 삼성에게 성공을 보장해주기는 하겠지만, 스스로 한계를 만드는 부분이기도하다. 안드로이드처럼 벤더들의 다양한 디바이스를 지원하기는 힘들 수 밖에 없다. 나중에 다시 한번 글로 정리를 하겠지만, 모바일 디바이스는 PC 같이 OS의 호환성을 보장해주지 않는다. 그래서 규모가 있는 모바일 단말기 회사(PMP나 네비게이션 기업들)에서는 OS 팀이 별도로 존재하며, 이 팀은 포팅과 안정성과 최적화를 전담하고 있다.

안드로이드가 뛰어난 점은 이런 디바이스의 OS 호환이 보장되지 않는 환경에서 그리고 포팅과 최적화를 위해서 많은 시간과 노력을 뺏기는 개발자들에게 가상머신(VM)을 통해서 호환성을 보장해주고 있다. 달빅(Dalvik)이라고 불리는 가상머신은 개발자들이 하드웨어에 대한 이해가 없더라도 쉽고 빠르게 모바일 디바이스용 어플리케이션을 개발할 수 있도록 해주고 있다.

일반적으로 가상머신은 속도가 느린 것이 문제라고 말한다. 하지만 달빅은 동일한 CPU와 하드웨어 스펙에서 윈도모바일보다 더 빠른 속도와 안정성을 제공해주고 있다. 바로 안드로이드 경쟁력의 핵심은 달빅이라고 보아도 무방할 것이다. 구글이 안드로이드를 인수할 때, 당시에 수많은 리눅스 커널을 기반으로 하는 모바일 플랫폼 기업들이 있었음에도 불구하고 안드로이드를 선택하게 된 배경에는 가상머신의 뛰어남 때문이 아닐까 생각한다.

아무튼 아이폰과 안드로이드 덕분에 스마트폰이 대세가 된 점에 대해서는 애플과 구글에 고마움을 느낀다. ^^;;;