요근래 플랫폼이 이슈가 자주되고 있고, mobizen 또한 관심이 많은 터라 플랫폼에 대한 언급을 자주 하고 있다. 얼마전 외부강의를 한 적이 있는데, 그 쪽 담당자가 나에게 어떤 회사에 근무하냐고 물어보더니
"저는 하도 플랫폼 이야기를 자주 하시길래 서버 관련 업무를 하시는 줄 알았어요."
라고 하는 것 아닌가?
 
처음에는 무슨 말인지 몰라서 멈칫 했는데, 조금 더 생각해보니 강연을 요청한 업체에서 주업무로 하는게 서버쪽 업무이고, 그러다보니 서버 플랫폼에 대한 이야기를 자주 해서 SI 업계의 서버 플랫폼과 혼동하고 있다는 것을 이해하게 되었다. IT 업계가 새로운 단어가 계속 생기기도 하고, 원래 의미와 변형이 되는 경우도 많고, 각 도메인에 따라 동일한 단어가 다른 의미로 쓰이는 경우가 많아 간혹 이런 오해를 낳곤 한다. 요즘 다른 블로그에서도 모바일 플랫폼 이야기를 많이 언급하는 것 같아 이번 기회에 기본적인 정의를 해보고자 한다.

예전에는 모바일 플랫폼은 정확하게는 Middleware Platform에서 Middleware를 생략하고 이야기하는 것이었다. 그렇다면 Winodws Mobile을 위시하여 안드로이드나 iPhone 등에서 사용되는 것이 기술적으로 'Middleware Platform' 이라고 불릴 수 있는 것인지 다소 혼동스럽다. 언론 매체에서도 대부분 위의 기술들을 소개할 때 제목에는 '플랫폼'이라는 단어를 사용하다가, 본문에서는 OS와 비슷한 것이라고 소개된 것을 종종 보게 된다. 이러한 기술적인 단어의 배경을 이해하려면 일반폰(Normal Phone 또는 Simple Phone이라고 불림)과 스마트폰의 구조적인 차이점을 이해하여야 한다.

스마트폰이 요즘과 같이 비약적인 발전을 하기 전에는 모바일 디바이스는 일반폰만을 중심으로 움직였다. 이 일반폰위에서 움직이는 다양한 Middleware Platform등이 탄생하였는데, 대표적인 것으로는 Java VM이나 BREW, WIPI, Mocha, 인피니온 등이 있다. 아래는 WIPI의 개념적 구조도이다.


대부분의 Middleware Platform은 위와 같은 구조를 가진다. 이중에서 2가지 Layer가 중요하다. '단말기 기본 S/W'는 가장 기본적인 기능인 음성통화를 가능하게 해주는 통신 기능과 OS를 말한다. HAL은 여러 가지 기능을 제공하는 API로, 하단의 단말기 기본 S/W와 위의 Middleware platfrom(위 그림에서는 WIPI)을 연결해주는 역할을 한다. 여기에서 OS를 RTOS라고 하며, CDMA에서는 REX, GSM에서는 뉴클리어, kadak등이 사용되고 있다.

예전 Windows 3.1이 우리의 PC를 뛰어다닐 때, Windows 3.1이 OS냐 아니냐에 대한 학술적인 접근이 많았다. 그럴 때 주로 이야기 되었던게 OS의 필수 3요소인데, 그것은 바로 메모리 관리, Thread 관리, 파일시스템 지원 이다. 이러한 OS의 3대 요소 중에 Middleware Platform이 하는 것은 없다. '단말기 기본 S/W'안에 있는 RTOS가 모두 이러한 일을 담당하고 Middleware Platform은 HAL을 통해서 OS의 API를 접근할 뿐이다.

그렇다! Middleware Platform과 Mobile OS는 다르다. 적어도 일반폰(Normal Phone)에서는..


하지만, 이러한 공식이 스마트폰으로 오면 상황이 달라진다. 스마트폰은 기본적으로 멀티 태스킹을 지원하고 다양한 멀티미디어 작업을 해야 하는데 현재의 RTOS로는 한계가 있었다. 그러다 보니 PC의 운영체제들을 아키텍쳐는 유지하고 커널을 바꾸는 것을 기본으로 모바일에 최적화를 하기 시작하였다. 이러한 노력들로 MS는 Windows Mobile을, 애플은 아이폰을, LiMO을 Linux를 이용해서 플랫폼을 개발하고 제품에 상용화 하였다. 아래는 'Linux 기반의 모바일 플랫폼 동향 #1'에서 소개했던 LiMo 플랫폼의 구조이다.


그림을 보면 알겠지만 Linux Kernel이 직접 H/W를 접근 제어를 하고 있다. HAL도 필요가 없다. 'Middleware Platform'에서 'Middleware'가 아닌 'Platform'의 구조인 것이다. Linux나 Windows 그 자체가 OS이며 메모리, 쓰레드, 파일시스템관리를 모두 지원하는 것이다. 현재 개방형의 흐름을 타고 개발되는 모든 플랫폼은 스마트폰을 타겟으로 하고 있으며, 위와 비슷한 구조를 가지고 있다. 정리를 해보자면,

스마트폰에서의 Platform은 OS 이다.


기술적인 관점에서 이야기하자면 이렇게 간단하다. 요즘 언론에서 언급되는 대부분의 플랫폼은 후자에 해당하므로 굳이 플랫폼이라는 단어 대신에 OS라는 단어를 써도 무방하다. 한데, 사람의 버릇이라는게 쉽사리 바뀌지 않는다. Normal 폰 때부터 불러왔던 'Platform'이라는 단어가 쉽사리 'OS'로 바뀌지가 않는다. 게다가 요 근래의 'Platform'은 OS만 제공하지 않는다. 그 위에 다양한 Interface와 Component, Drawing Engine, Application SDK 등을 같이 제공을 하다 보니 OS로만 부르기에는 부족하게 느껴진다.

이런저런 이유로 모바일에서는 Mobile OS라는 단어보다는 Mobile Platform이라는 단어가 일반적이 되고 있고 바뀌지는 않을 것 같다. 뭐라고 불리운들 어떠하리, 시장의 흐름에 따라 준비를 하고 BM을 찾는 것이 중요하겠지...

 

 

 

* 2008/08/21 13:51에 작성한 글의 백업본입니다.

+ Recent posts