Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

지금까지의 기업 컴퓨팅 환경은 서비스 중심이였다. 자원에 대한 전적인 권한을 기업이 가지고 있었으며, 서비스 제공자와 서비스 사용자가 엄격히 구분되어 있었다. 이러한 환경에서 기업은 자신들이 분명히 제어할 수 있는 환경을 원하기 마련이다. 그래서 매우 강력한 몇개의 컴퓨터와 이들 컴퓨터에 최적화된 상용 운영체제와 상용 소프트웨어를 이용한 정형화된 컴퓨팅 환경을 선호했었다. 성당모델을 따르는 환경이라고 할 수 있는데, 단지 몇개의 강력한 컴퓨터와 훌륭한 메뉴얼이 제공되는 소프트웨어를 사용하는 것으로 관리의 복잡성을 줄일 수 있었기 때문이다.

그러나 플랫폼 중심의 Web2 환경으로 넘어오면서, 기존의 컴퓨팅 환경도 변화하게 된다.

attachment:web2.png

기존에는 단지 몇대의 강력한 컴퓨터만을 이용해서 데이터를 다루고, 서비스를 할 수 있었으나, 데이터의 양이 극적으로 늘어나면서 수백/수천 심지어는 수만대의 컴퓨터를 이용한 서비스도 심심찮게 볼 수 있게 되었다. 여기에 서비스 제공자와 서비스 이용자가 분리되어 있던, Web1.0 시대와는 달리 MashUP(:12)서비스가 늘어나면서, 서비스 제공자와 서비스 이용자의 경계가 애매모호해 지게 되었다.

이제는 누구나 자신의 블로그 혹은 홈페이지를 통해서 , 온라인 경매, 온라인 서점, 개인화 검색 서비스, 동영상 서비스를 할 수 있게 되었으며, 가능한 서비스의 갯수도 점점 늘어날 것이다.

여기에서 기존의 컴퓨팅 페러다임에 대한 문제가 발생하게 된다. 일단 처리해야 하는 데이터의 양이, 컴퓨터의 처리능력을 초과해 버렸다. 아무리 강력한 컴퓨터를 사용한다고 하더라도, 단일 컴퓨터로는 입력되는 방대한 양의 처리가 불가능하게 되었다. 때문에 분산/병렬 컴퓨팅 환경을 구성해야될 필요성을 느끼게 된다. 이러한 Web2.0의 환경에서 아래와 같은 이유들 때문에 오픈소스 소프트웨어오픈소스 운영체제가 전략적인 요소로 자리매김 하게 될 것이다.

비용

대부분의 기계가 그렇듯이, 성능이 일정 수준이상 넘어가면 성능대비 가격 효율이 급격하게 떨어지게 된다. 10이 달성할 수 있는 최고 성능수준이라고 가정해보자. 3의 성능에서 6의 성능까지 올리는데에는 20의 자원으로 가능했다고 하면, 6에서 9로 올리는데에는 100 이상의 비용이 들어가게 된다. 구축하는데에도 엄청난 비용이 들어가지만, 유지보수 하는 것도 장난이 아니다. 시스템 하나하나가 강력하기 때문에, 하나의 시스템에서 문제가 생길경우, 전체분산시스템의 성능이 크게 떨어질 수 있기 때문이다. 거기에, 컴퓨터의 능력보다 처리해야 하는데이터의 증가속도가 더 빠르기 때문에, 계속적으로 값비싼 시스템을 추가해야 하는 부담까지 떠안게 된다. 이런 시스템은 관련 기술자를 찾는 것도 매우 어렵다는 문제점을 가진다. 분산 환경을 값비싼 소수의 컴퓨터로 구성하게 될경우, 밑빠진 독에 물붓기 식으로 비용이 증가하게 될 것이다. 이렇게 엄청난 비용을 투자해서 시스템을 갖춘다고 해도, 2년도 채 안되어서 구식 시스템이 되어버리는 문제가 생긴다.

attachment:cost.png

이러한 분산환경은 강력한 몇개의 컴퓨터대신에, 적당한 성능을 가진 저렴한 다수의 컴퓨터로 구성하는게 훨씬더 유리하다. 10대의 슈퍼컴퓨터로 분산컴퓨팅 환경을 만드는 것보다 100대의 서버급컴퓨터로 만드는게 훨씬 비용이 적게 든다는 얘기가 된다. 한대 한대의 컴퓨팅 파워가 약하기 때문에, 컴퓨터 몇대에 문제가 생기더라도 전체 분산환경에 미치는 영향도 그리 크지 않다. 또한 저렴하기 때문에 쉽게 시스템을 추가할 수 있으며, 데이터의 증가에도 유연하게 대처할 수 있다. 관련 기술도 쉽게 확보할 수 있다는 잇점을 가진다. 실질적으로 거의 대부분이 분산환경이 저렴한 다수의 컴퓨터를 활용하는 방식으로 구성되고 있다.

이러한 분산환경에서 오픈소스는 진가를 발휘하게 된다. 웹 플랫폼을 위해서 500대의 컴퓨터를 사용해야 한다고 가정해보자. 이 환경을 구성하기 위해서 상용 운영체제를 사용할 것인가 ? 수백만원이 넘는 값비싼 상용 소프트웨어를 사용할 것인가 ? 과거 Web1.0 시대라면, 컴퓨터 자체가 강력하고 워낙에나 비쌌기 때문에 소프트웨어의 가격이 좀 비싸다고 해도, 큰문제가 되지 않았겠지만 수백대의 저렴한 컴퓨터에 사용하기에는 비용이나 효과면에서 너무 비효율적이다. 나라면 Linux(:12) 운영체제(:12)와 Mysql(:12), Postgresql(:12)등의 공개소프트웨어를 이용해서 시스템을 구성할 것이다.

유연성

기존의 패러다임으로 분산환경을 구축하는데에는 비용도 문제가 되지만, 지나치게 경직되어 있다는 근본적인 문제를 가진다. 기존의 상용 운영체제와 소프트웨어들은 자신들이 제시한 환경을 고객에게 강제하는 스타일이다. Web1.0 시대라면 이게 문제가 되지 않는다. 그냥 그들이 원하는 대로 시스템을 꾸리고, 서비스를 거기에 맞게 튜닝하면 되기 때문이다.

그러나 Web2.0환경에서는 그러한 방식이 적용되지 않는다. Web2.0은 사용자에게 서비스를 제공하는 환경이 아닌, 플랫폼을 제공하는 환경으로, 다양한 서비스들과 플렛폼이 유동적으로 연결되는 일종의 EchoSystem(생태계)의 성격을 가지게 된다.

attachment:eco.png

500대의 시스템으로 이루어진 분산환경을 예로들어 보겠다. 분산파일시스템(:12), 분산연산시스템을 만든다면 응용 프로그램에서 뿐만 아니라, kernel(:12) 수준에서의 수정작업이 필요할 수 있다. 상용운영체제에서는 불가능하다. 획일화된 서비스가 아닌, 다양한 서비스가 개발되어야 하기 때문에 쉽게 수정이 되며, 분기가능한 소프트웨어가 있어야 한다. 역시 상용 소프트웨어에서는 불가능하다. 제한적으로 가능하다고 하더라도, 별도의 비용과 정치적인 문제로 많은 시간이 소비된다.

상용소프트웨어는 더 안전하고 강력하다고 반론을 제기할 수도 있을 것이다. 물론 상용 소프트웨어는 여전히 쓰일 수 있을 것이다. 그러나 Web2.0에서의 플랫폼은 애시당초 적당히 견고하고, 적당히 강력한 환경의 구성을 지향점으로 하고 있다. 따라서 소프트웨어 역시 적당히 견고하고 적당히 강력하면 된다. 굳이 비싼 비용을 들여서 매우 견고한 환경을 만들 필요는 없다. 정리하자면 적당히 견고하고, 적당히 강력하며, 매우 유연한 환경이 Web2.0 플랫폼의 지향점이다.

오픈소스 소프트웨어는 상용 소프트웨어로는 결코 얻을 수 없는 유연성을 보장한다. 상용 소프트웨어 만큼의 견고함은 아니라 하더라도, 충분한 수준의 견고함을 확보하고 있으며, 표준을 따르며, 소스코드를 직접 제어할 수도 있다. 일정 수준이상의 개발자혹은 커뮤니티를 확보하고 있다면, 상용 소프트웨어보다 훨씬 빠르게 문제점을 찾아서 해결할 수도 있다.

최근 포탈사이트와 Web2.0을 표방하는 기업들을 중심으로 오픈소스 커뮤니티를 직접적으로 지원하며, 관련 개발자를 확보하려는 이유가 여기에 있다.

반론

위의 상황은 Web2.0을 핵심전략으로 삼고 있는 포털급의 규모를 가진 회사에나 적용가능한 것 아닌가라고 반론을 제기할 수도 있을 것이다. 웹서비스, 웹플랫폼은 주변요소가 아닌 핵심요소가 되었다. MS사가 이 흐름에 대항하려고 시도했었지만, 결국은 흐름을 인정하고 방향을 선회했다. 또한 큰 규모의 회사가 움직이면, 산업역시 거기에 맞추어서 재편이 될 수 밖에 없다.

오픈소스에 관심을

우리나라의 경우 오픈소스에 대한 관심과 이해가 취약한게 사실이다. 학생들도 재미삼아서 혹은 보험용으로 다루는 경우가 많은 것으로 알고 있다. 그러나 앞으로 상황은 바뀌게 될 것이다. 변두리에서 벗어나서 소프트웨어 산업의 핵심요소로 자리매김 하게 될 것이다. 오픈소스에 조금더 관심을 가져보기 바란다. 재미도 있을 뿐더러, 많은 도움이 될 것이다.