http://fstory97.blog.me/70090886556

아이폰과 안드로이드를 비교할때 많은 이들이 지적하는것이 폐쇄성과 개방성입니다. 
(물론 애플도 전체가 폐쇄적인건 아니지만 ..) 하지만 엔드유저들에게는 잘만들어진 단말기를 선택하는 것이 중요할뿐 사실 이 논란은 잘 와닿지 못하기 마련입니다. 그렇기 때문에 최적화가 안된 안드로이드를 플랫폼의 개방성탓으로 돌리는 잘못된 인식을 보곤합니다. 이 개방성이란 무엇이고 어떠한 장점을 유저에게 가져다줄수있는지를 이번 포스팅에서는 설명하려고 합니다. 이 이야기는 사실 핸드폰 단말에만 국한된이야기가 아닙니다. 폐쇄성을 가진 한국의 많은 서비스에도 해당되는 이야기 입니다. 사실 저도 아주 잘아는건 아니지만 부족하마나 제 의견을 써보려고합니다.

1. 스마트폰 = 소프트웨어, 소프트웨어 개방성에 대한 이야기

 스마트폰이 무엇인가 묻는다면 전 단연코 소프트웨어라고 말하고 싶습니다. 단순히 애플이 소프트웨어로 혁신을 이루었다는 이야기를 하고자함이 아니라 실제 스마트폰의 전체적인 구성중 가장 큰 것이 바로 소프트웨어, 곧 앱, 어플리케이션이 본격적으로 유저가 개발하고 배포하고, 설치되고 삭제되고 구동되는 모든 환경을 의미한다는 것입니다.
 기존의 피쳐폰은 이 환경의 대부분을 벤더가 통제하고 있었습니다. 이를통해 높은 안정성과 벤더가 생각한 최소의 꼭 필요한 앱이 설치되는 구조였습니다. 여기에서 벗어난것이 바로 스마트폰 입니다. 때문에 앱의 개수가 그 단말의 경쟁력이란 이야기도 나오고 있는것이죠.
 자. 그러면 스마트폰, 아니 소프트웨어의 개방성을 이제 논해도 되겠죠? 이번 포스팅에서 제가 핵심적으로 이야기 하고 싶은것이 바로 이 소프트웨어개방성입니다.

2. 소프트웨어 개방성

1) api set공개, SDK 배포, 소프트웨어 개발 툴의 공개
소프트웨어가 개방성을 가지려면 그 소프트웨어를 이용할 수 있는 api를 공개해야하고 소프트웨어의 라이브러리를 이용하기 위해서는 sdk를 배포해야합니다. 실제 개발을 하시는 분들은 이쯤 이야기해도 무슨 이야기인줄 알겠지만, 더 쉽게 풀이하자면 레고조립메뉴얼과 기계를 사용하기위한 레고블럭을 프로그래머에게 제공한다는 이야기입니다. 기존의 폐쇄적 소프트웨어플랫폼들은 이부분이 감춰져있었습니다. 사실 폐쇄 플랫폼으로 잘못알려진 국내의 Wipi도 여기까지는 지원을 잘했었습니다.

2) 배포및 설치 지원
 플랫폼개발사가 제공한 Sdk에서 구동하는 앱이있다고 해서 상용 단말기나 기계에 바로 구동하지 못합니다. 실제단말에서는 이를 구동하기 위한 환경설정작업을 필요로하기도 합니다. 윈도우즈의 인스톨실드가 그러한툴이죠.
 혹은 안정성문제로 단말사에서 검증된 어플만 배포가 가능하도록 허가를 해줍니다. 이 방법이 바로 애플과 wipi가 취했던 방법입니다. 이러한 허가제는 유저의 앱의 만족도를 높이는데는 기여하나 사람이나 혹은 단체의 허가는 결국 주관적인 룰이 들어가게 됩니다. 이게 과거 wipi의 폐쇄성과 애플이 자주 지적받는 폐쇄성이죠.

3) 크로스 컴파일및 포팅, 미들웨어
 소프트웨어 개발작업 방법의 하나일뿐일지도 모르는 이를 개방성에 넣어야할지는 사실 의문이지만, 애플이 크로스컴파일과 미들웨어를 사실상 약관으로 제한하면서 이부분을 이야기하겠습니다. 사실 이는 개방성이라기보다는 이기종 플랫폼간에 동일한 하나의 프로그램을 돌리기 위한 방법론입니다. 기존에 개발된 수많은 레거시시스템을 새로운 플랫폼에 맞춰 다시 개발하는것보다는 중간에 이를 컨버팅해주는 무언가를 만드는 편이 좋다는것이죠.
 그 중 소스에서 이 작업을 수행하는게 사람이 직접 몽땅 수정하는게 포팅이고, 기계가 알아들을 수 있는 프로그램으로 만드는 빌드과정에서 수행하는게 크로스컴파일, 그리고 수행단계에서 각 플랫폼에 맞게 api를 변경해주는 중간 앱이존재하는 것이 바로 미들웨어입니다.
 이 중 애플은 포팅외에는 약관을 통해 금지하는 듯한 액션을 취하고 있는데, 어도비의 플래시와 안드로이드진영의 Java, pc진영의 다른 앱이 손쉽게 아이폰으로 흘러들어오는 것을 막아서 앱스토어시장을 보호하려는 듯 합니다.
 그러나 개발사입장에서는 초기진입장벽을 높게 만들고 큰 비용을 초래하게 만듭니다. 타 플랫폼에서 개발된 좋은 앱이 아이폰에서 구동하게 만드는데 장벽이 되기도 합니다. 이 경우에는 기술적 장벽이 아니라 비즈니스적 장벽입니다.

4) 오픈소스
소프트웨어가 어떻게 만들어졌는지를 대중에 공개하는 방법입니다. 이를 통해 다른 어플리케이션내부에 똑같은 프로그램을 변형해서 사용이가능하며 프로그램을 필요한 부분만 분할하여 가져오거나 혹은 누구나 자신이 만든기계에 소스를 컴파일해서 구동해볼 수 있습니다. 소프트웨어 개방성의 가장 높은 수준이라고 할 수 있는데, 이때 중요한건 원본의 안정성과 품질을 유지해나가는겁니다. 이 원본관리자들은 가장 뛰어난 검증된 개발자가 하게 되며 해당 소스나 프로그램의 문제점은 누구나 발견하면 즉시 공유하여 이를 고칠수 있습니다. 대중에게 설계도를 공개할정도로 높은안정성을 보유하고 있다는 자신감과 이를 최신상태로 빠르게 유지할 수 있다는 장점이 있습니다. 대신 그만큼 신경쓸일은 배로 많아지죠.  리눅스나 이에 대한 변형인 안드로이드가 바로 이것입니다. 구글에게 인증을 받지 못하더라도 자동차나 세탁기에도 이식이 가능합니다. 물론 이때 사용시 따라야하는 오픈소스라이센스의 책임도 존재합니다. 이는 구글같은 한 기업에서 만든책임이 아니라 오픈소스를 주관하는 단체에서 만든것이며 법적효력도 가지는 경우도 있습니다.

 일단 생각나는데로만 적은건데, 여기에 덧붙힐만한것이 더 있을지도 모르겠습니다. 웹에서 많이 사용되는 OPEN API의 경우 1)에 해당될 수 있으므로 따로 이야기하지 않겠습니다.
 

3. 개방성이 갖는 장점
1) 유저의 입장

 - 다양한 응용소프트웨어 앱의 개발가능
이는 pc와 스마트폰이 이미 증명하고 있습니다.

 - 특수목적의 활용
플랫폼사가 제한을 두고 있지 않다면 기업이나 개인의 니즈에 따라 특수목적에 사용될수 있습니다. 필요에따라서는 앱의 검수과정자체가 유저의 보안정책에 위배될수도 있는데 이를 어떻게 풀어주느냐도 개방성에 해당됩니다.

2) 개발자
 - 손쉬운 개발환경과 빠른 개선
일반적으로 내부개발보다는 충실한 Ide와 api를 제공하고 불편한점은 빠르게 개선됩니다. 왜냐하면 개발자도 고객이기 때문이죠. 빠른개발환경지원은 이기종지원도 포함됩니다. 대부분의 플랫폼은 다양한 언어에 라이브러리를 제공하거나 컨버터나 미들웨어를 제공합니다.

4. 플랫폼의 개방성, 수직적 호환성 제공
 다른 소프트웨어를 구동하는 OS나 플랫폼은 수직적 호환성을 제공합니다. 아이폰의 iOS 처럼 앱과의 수직 호환성을 제공하며 안드로이드처럼 하드웨어까지 포함한 수직 호환성을 제공합니다. 기본적으로 하드웨어에 탑제되는 소프트웨어는 필연적으로 하드웨어에서 제공해야하는 Api셋을 정합니다. 이러한 구조중 하나가 윈도우즈의 다이렉트x드라이버 같은겁니다. 이중 iOS는 하드웨어개발사를 위한 개발툴이나 스펙을 공개하지 않기때문에 iOS를 다른 하드웨어에 올리는 것이 쉽지 않습니다. 그러나 안드로이드는 소스와 가이드라인을 공개하면서 이를 제공하고 있습니다.
 하지만 이 방식은 새로운것이 아닙니다. 애플에서 플래시대신 주장했던 HTML이 바로 이러한 방식을 사용하는겁니다. 사실 HTML은 HTML을 보여주는 브라우져개발사가 사실 안드로이드의 하드웨어개발사와 같은 역할을 하는겁니다.
 또한 하드웨어쪽에서라면 인터넷 또한 기본적으로 OSI7레이어란 케이크/레이어형구조로 되어있습니다. 이러한 레이어 혹은 케이크 구조는 각 플랫폼이나 단계에만 개발을 집중할 수 있는 구조이며 응용가능성이 매우 커지게 됩니다. 애플은 상위레이어인 어플개발자에게 응용가능성을 열어주었다면 구글은 하위레이어인 단말개발사에게도 응용가능성을 열어준겁니다.

5. 이러한 레이어구조가 과연 안드로이드의 품질을 떨어뜨릴까?
 그리고 사실 이러한 구조는 소프트웨어 개발의 전분야에 널리 걸쳐져 있는 사상이며 이 방법의 장점은 매우 높은 응용성능을 지니고 각 레이어별로 제품경쟁을 통해 품질이 유지된다는 장점이 있습니다. 안드로이드플랫폼의 경쟁력은 디자이어와 갤럭시s까지를 포함하게 되겠지만 각 단말의 경쟁력은 또 안드로이드 단말끼리 경쟁을 하는 것이죠. 이는 무혈입성의 아이폰과는 사실 다른 구조입니다. 그리고 결국 이 구조는 안드로이드 플랫폼개선에 도움이 될것이고 많은 단말이 경쟁을 통해 개선되고 도태될것입니다. (그게 물론 갤럭시S가 될수도 있습니다..)

 그리고 그동안 우리는 소프트웨어의 역사를 통해 이 방법의 장점과 독점의 턴키 구조의 단점을 보아왔습니다. 턴키구조의 가장 큰 단점은 각레이어중 가장 못하는 레이어의 성능에 제한 받는 다는겁니다.   대기업에서 자사의 어떤 레이어의 솔루션을 살리기 위해 굳이 성능이 나쁜 그 솔루션을 끌어와 전체 성능을 낮추는경우도 비일비재 한 일입니다. iOS는 아이폰의 판매량이상의 성공을 거둘수가 없습니다. 그러나 안드로이드는 넥서스원의 실패와 상관없이 디자이어가 어쩌면 lg의 드럼세탁기가 대박을 터뜨려줄지는 알 수 없는것입니다.

 이렇듯 개방형 구조는 전체 시장으로 그 가능성이 커져버립니다. 

 

6. 소프트웨어2.0
 이러한 한회사에서 모든 레이어를 가져가고자 하는 욕심은 그동안 Ms와 애플이 전통적으로 보여주었던 구조였습니다. 그래서 모든 솔루션에서 옆회사로 넘어가지 못하도록 하게하는것이죠.
 그러나 이 패러다임전환을 가져온것이 바로 구글과 최근 그를 위협하는 페이스북같은 시스템입니다. 진정한 소프트웨어 2.0사상은 웹2.0사상과 동일해야합니다. 한소프트웨어의 가능성은 그회사의 최대능력에 머물러서는 안됩니다. 이는 소프트웨어뿐만 아니라 비즈니스와 서비스 그리고 각 회사의 조직간에서도 이루어질 수 있는 일입니다. 그동안 최근 수년간 이러한 시도는 지속적으로 있어왔고 그 결실이 서서히 보이기 시작하는것이 아닌가합니다.

 이러한 사상에서라면 아이폰에 안드로이드를 올리는것도, 안드로이드에 iOS를 올리는것도 가능해지는것입니다. AMOLED가 달린 아이폰을 만지는것도 꿈은 아니죠. 웹의 경우 플릭커에 사진을 저장하고 다른 웹서비스에서 이를 활용합니다. 아이폰을 사용하는 유저들이 구글맵을 이용하는것과 마찬가지죠.

 이모든것이 사실 소프트웨어가 가진 본연의 기능입니다.

 

7. 국내 업체들은 얼마나 대비가 되어있는가 ?

 그러나 최근 이러한 패러다임 변화에 문제가 있다면 국내의 회사들이 얼마나 대비하고 있고 전략을 가져가고 있느냐입니다. 또한 모바일 시장에서 아이폰을 너무 우상화한 나머지 그 소프트웨어 경쟁력의 실체를 이해하고 있지 못하는것이 아닌가 싶습니다. 그저 성능 최적화란 단어에만 집중된 나머지 사실 스마트폰이 가진 경쟁력의 실체를 얼마나 이해하고 있는걸까요 ? 애플의 자충수를 국내업체들이 따라하지 않기를 바랍니다. 또한 국내업체는 애플만큼의 소프트웨어레이어의 전체를 가지고 있지 못한것도 분명 사실이니까 더더욱 따라해서는 안되는겁니다. 무엇보다도 이러한 소프트웨어의 변화 바람은 단순히 모바일 환경이 아닌 웹과 기업환경 전체에서 불고 있습니다.

 

 저도 한낱 범부라 제 주관에 의해 이렇게 떠든것이지만, 국내의 많은 기업들은 이를 어떻게 생각하고 있을지 사실 궁금한 부분입니다. 앞으로의 10년 우리는 대비가 되있을까요 ? 그동안 10년간 S/W산업에서 했던 삽질을 계속해나갈지, 새로운 시장을 맞을지는 우리에게 달렸습니다.