지하철을 타기 위해서 대기하는 위치를 플랫폼이라고도 하고, 무대처럼 올라간 곳을 플랫폼이라고도 합니다. 여러가지 뜻으로 사용되지만 컴퓨팅에서는 다음의 뜻으로 사용됩니다.
"In computing, a platform describes some sort of framework, either in hardware or software, which allows software to run.(플랫폼은 하드웨어나 소프트웨어 위에서 소프트웨어가 돌아갈 수 있도록 해주는 프레임웍과 같은 것을 이야기한다.)" - Wikipedia의 정의
쉽게, 우리가 흔히 사용하고 있는 PC의 CPU가 제공하는 x86 아키텍쳐/x64 아키텍쳐 같은 것들이 하드웨어 플랫폼의 예가 되겠습니다. 이 하드웨어 플랫폼 위에서는 Bios같은 소프트웨어가 돌아가고, OS같은 소프트웨어가 돌아가고, OS를 기반으로 또 다양한 소프트웨어들이 돌아갑니다. 마이크로소프트 Windows, 애플의 OSX, 선의 Solaris, Linux 등은 OS 플랫폼입니다. 그 OS 자체가 다른 소프트웨어를 돌릴 수 있는 기술로 위치해 있기 때문에 역시나 플랫폼이라고 불립니다. 이런 플랫폼들은 해당하는 기술 위에서만 사용할 수 있는 소프트웨어를 만들 수 있는 수직(Vertical) 플랫폼이라고 할 수 있겠습니다. OSX의 실행파일(바이너리)을 Windows 상에서 돌리는 것을 불가능하다고 하겠죠.
Sun의 Java나 Microsoft의 .NET Framework 이라는 소프트웨어 플랫폼도 있습니다. 역시나 Java의 바이너리를 .NET Framework 상에서 돌릴 수 없습니다만, 이들이 나온 본래의 취지 중 한가지가 하드웨어 혹은 OS 플랫폼과는 상관 없는 소프트웨어를 만들기 위함이었기 때문에 그 태생은 수평 플랫폼이라고 이야기할 수도 있겠습니다. Java나 .NET Framework의 VM이 있는 곳이면 어디든지(OSX 위라든지, Windows 위라든지) 동일한 바이너리를 실행할 수 있는 모습을 이야기하겠죠. 하지만, 실상은 그 하부 플랫폼에 너무 가깝게 만들어진(coupled) 이유로 쉽지가 않았습니다. 이들도 OS라는 플랫폼 위에 하나의 레이어(Layer)를 얹은 소프트웨어 플랫폼입니다.
월드 와이드 웹(WWW)이라는 것이 도래한 이후에는 HTML이라는 마크업 언어(Markup Language)를 알아들을 수 있는 레이어로서의 브라우저라는 플랫폼이 등장했습니다(* 브라우저를 플랫폼으로 보는 견해는 이견이 있을 수 있지만, 여기서는 일반적인 플랫폼의 의미를 위한 예임을 강조합니다). 이 플랫폼 또한 하부의 하드웨어나 OS등의 플랫폼과는 무관하게 동작할 수 있는 꿈을 가지고 만들어졌고, 기반이 되는 HTML은 실행이라는 개념을 한단계 추상화하여 Java나 .NET Framework과는 다르게 이들의 바이너리 속성(실행파일)을 전혀 신경쓰지 않아도 되는 텍스트를 기반으로 한 언어를 사용하였기 때문에 이를 이해하는 어떤 브라우저에서도 비슷하게 데이타와 링크를 보여줄 수 있었습니다. <b>라는 태그는 하드웨어와 OS 그리고 브라우저가 어떤 식으로 동작하든간에 문자를 볼드(bold)로 보여주면 되는 의미를 전달하는 역할을 하고, 이는 이런 동작 자체는 추상화하여 장식한 말 그대로의 마크업이었습니다.
점차 웹 응용프로그램들이 복잡미려(Sophisticated)해지면서 이질적인 브라우저 플랫폼간의 괴리가 발생하기 시작했습니다. 비록 텍스트로 되어있고, 문법(Syntax)이 표준화되었더라도, 텍스트들의 표현에 관한 시맨틱 자체는 표준화되어있지 않은 이유로 그리고 표준을 따르지 않는 구현들의 추가로 이런 현상은 가속화되었습니다. 설명을 위해 간단히 <p> 태그를 예로 들면, 몇 픽셀만큼 얼마나 어떤식으로 paragraph를 구분해야하는지에 대한 약속은 되어있지 않기 때문에 다른 브라우저간의 구현이 다르게 되고 최종 결과물간의 괴리가 생기게 된다는 것입니다.
이런 괴리를 해결하기 위한 늦은 표준 작성 노력은 너무나 소수였던 IE 이외의 브라우저 점유율로 인해서 모멘텀을 얻지 못하고 있었습니다. 그런 와중에 높은 점유율을 가진 인터넷 탐색기(IE)가 일부 사용자의 구미에 맞는 모습을 보여주는 다른 브라우저들에게 조금씩 사용자 내주기 시작하면서 이런 괴리는 부각이 되기 시작했고, 이리하여 이런 괴리를 해결하기 위한 사용자들의 해결책으로 웹 표준화 운동이라는 것이 생겨납니다. 점하나의 위치가 중요한 디자이너들의 불만도 불만이지만, 심지어는 사용자들에게도 직접적인 불편이 초래되었기 때문에(타 브라우저를 사용하면 아예 보이지 않는 일) 이런 현상은 지극히 당연한 것이었습니다.
그 결과로 이런 웹 표준화 운동과 함께 표준화로 재무장된 새로운 웹 응용프로그램의 조류가 만들어지면서 "플랫폼으로써의 웹(Web as a Plaform)"이라는 캐치프레이즈가 유효해지게 됩니다. 웹의 취지에 맞게 어떤 브라우저에서도 돌아가는 웹 응용프로그램으로의 모습을 향해 가는 방향성을 보여주는 것이죠. 브라우저라는 하부 플랫폼 종속적인 플랫폼이 아니라 웹 자체가 수평 플랫폼의 역할을 하며, 이런 (역시나) 하드웨어/OS 플랫폼과는 무관하게 응용프로그램들이 연동되고 유기적으로 동작하고 표현되며 사용자와 인터랙션할 수 있는 프레임웍을 만들어낼 수 있는 기반이 됩니다.
이것이 현재의 플랫폼들의 모습이고 사용자에게 점차 당연히 받아들여지는 방향으로 전해지고 있는 상황입니다. 소프트웨어는 필연적으로 사용자에게 가까워지기 위해서 각 기술 위에 또하나의 기술을 창출하고 플랫폼화하는 방향으로 갈 수 밖에 없습니다.
하지만, 이런 일련의 (필수적인) 추상화 단계(Layer)를 거친 과정의 현 시점은 두가지 약점이 드러나고 있습니다 - 그리고 위 이야기가 아니더라도 역사적으로도 많은 기술들이 비슷한 현상을 겪습니다. 하나는 표준이 기술 속도를 따라가지 못한다는 것과 다른 하나는 브라우저라는 상자 밖을 나가지 못하고 있다는 것입니다.
(다음편에 계속...)
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
