내가 이해한 모바일용 OS

 [그림1] OS의 구조와 개념의 확대
Source : Visionmobile


 피처폰 시대의 OS는 기기를 제어하는 역할만을 담당했다. 그래서 퀄컴과 같은 칩셋 제조사가 칩셋과 함께 칩셋에 최적화된 간단한 수준의 OS를 제공했었다. 하지만 스마트폰에서는 다양한 애플리케이션을 활용할 수 있도록 OS 역할은 더 강력하고 광범위해졌다. 구체적으로 스마트폰 OS는 기기 제어라는 기본 역할 뿐만 아니라 콘텐츠&서비스를 제어하는 역할도 한다. 기기 제어는 OS 구조의 가장 하단에 있는 “커널(Kernel)과 하드웨어 드라이브”가 그 역할을 하며 이는 피처폰에서도 공히 OS라 불렸었다.

 스마트폰 OS의 콘텐츠와 서비스 제어기능은 애플리케이션 구동에 필요한 다양한 프로그램이 존재하는 AEE(Application Executive Environment), “커널”과 AEE를 최적화 시켜주는 미들웨어(M/W; Middleware) 및 사용자와 직접 대면하는 초기화면을 결정하는 UI 프레임워크 때문에 가능하다. 그리고 스마트폰 OS는 커널부터 UI 프레임워크까지 하나의 통합·완결된 형태로 구동되기 때문에 기기 제어 및 콘텐츠&서비스 제어 역할을 동시에 할 수 있다

 우리가 스마트폰으로 사용하는 애플리케이션은 OS개발사에서 SDK(Software Development Kit)을 통해 개발된다. 이 SDK는 미들웨어, AEE 및 UI 프레임워크에 포함된 코드 등을 사용하기 때문에 애플리케이션은 특정OS 및 OS별 버전에 따라 작동될 수 밖에 없다. 그래서 초기에 더 많은 애플리케이션을 가진 OS가 경쟁우위에 있을 수 밖에 없었으며 애플이 강할 수 밖에 없었다. 


1. OS는 기기용 소프트웨어의 뼈대

 소프트웨어도 뼈대가 있고, 살이 있다. 소프트웨어가 제대로 기능을 하려면 뼈대와 살이 모두 있어야 한다. 여기서 설계와 뼈대를 아키텍쳐(Architecture)라고 하고 살을 붙이는 작업을 코딩(Coding)이라고 한다. 기본적으로는 아키텍쳐가 중요하지만 소프트웨어의 크기와 그 역할에 따라서 코딩만으로 커버할 수 있는 경우도 있다. 예를 들어 1 ~ 2층 건물은 뼈대가 부족하더라도 시멘트와 벽돌을 잘 사용하면 튼튼한 건물을 지을 수 있다. 하지만 100층 이상 고층 건물은 아무리 시멘트와 벽돌을 잘 사용하더라도 뼈대가 잘 잡혀있지 않다면 부실 건물이 될 수 밖에 없는 이유와 같다.

 이러한 소프트웨어의 특징 때문에 2007년 애플의 아이폰이 출시된 후 한국 휴대폰 제조사들은 패닉에 빠졌었다. 당시 한국기업들은 피처폰 중심으로 제품을 개발, 제조를 해 왔었다. 피처폰의 OS를 포함한 소프트웨어도 이미 몇 메가 수준이어서 A4용지에 출력하면 3 ~ 5평 정도 방에는 가득찰 정도였다. 사실 그 당시도 소프트웨어 구조를 다 이해하지 못했지만 충분한 사후 테스트를 거쳐 소비자들이 느끼지 못할 수준의 버그를 안고 제품들이 출시되었다. 하지만 스마트폰 OS는 차원이 달랐다. 소프트웨어가 몇 백 메가 에서 몇 기가 용량까지 기존의 소프트웨어보다 몇 백에서 몇 천 배 더 커졌다. 이는 코딩이라는 살을 붙이는 작업으로 극복할 수 있는 단계가 아니었다. 그래서 기존에 중요했던 코딩은 더 이상 완충 역할을 할 수 없게 되었다.

 뿐만 아니라 2008년 애플이 앱스토어 서비스를 시작하면서 스마트폰이 다양한 애플리케이션을 유통 채널을 통해 다운로드 받아 설치, 사용할 수 있게 되었다. 과거에는 이미 휴대폰이 출시될 때 필요한 만큼의 애플리케이션이 미리 설치되어 있어 사전에 충분히 버그를 고칠 수 있었다. 하지만 스마트폰은 어떤 애플리케이션이 설치될지 모르고 제품에 어떤 버그가 발생할지 모르는 상황을 만들었다.

 이처럼 이제는 코딩으로 아키텍쳐의 부족한 부분을 채울 수 없는 상황이 도래했으며, 뼈대인 아키텍쳐를 얼마나 잘 설계하고 만드는지가 중요한 환경이 되었다. 물론 그 중심에는 스마트폰 OS가 있으며 그 OS 또는 OS를 잘 이해하는 역량이 기기의 경쟁력과 연결되는 환경이 되었다.


2. OS의 성능이 콘텐츠와 서비스의 품질과 성능을 결정

 앞서 살펴본 것처럼 OS의 미들웨어, AEE, UI 프레임워크가 어떤 성능과 기능을 지원하는가에 따라 SDK와 구동되는 애플리케이션이 달라질 수 있다. 예를 들어 아이폰 iOS가 터치스크린의 멀티터치를 지원했기 때문에 “멀티 터치”를 활용한 다양한 애플리케이션이 개발될 수 있었다. 그리고 아이폰이 어도비(Adobe)의 플래쉬(Flash)를 지원하지 않아 ‘09년 당시 웹의 99%를 차지하고 있던 게임, 광고 및 미디어를 애플에서 사용할 수 없었다. 그리고 OS 버전별로 지원되는 기능이 다르기 때문에 OS의 기능과 성능에 따라 가능한 콘텐츠&서비스가 달라진다. 예를 들어 안드로이드 2.2인 프로요(Froyo)는 멀티 카메라를 지원하지 않아서 전방 카메라를 통해서 화상 통화를 할 수 없었지만 안드로이드 2.3인 진저브레드(Ginger Bread)에서 지원되면서 가능해졌다. 앞으로 OS가 업그레이드 되면서 가능해진 콘텐츠&서비스가 더 많이 더 다양하게 나타날 것으로 예상된다.