Truly Distributed Web

Tags:

이전부터 생각해오던 아이디어인데, Truly Distributed Web (TDW)란 이름으로 한번 올려봅니다.

우리가 웹을 이야기할 때는 항상 ‘분산’이란 말을 즐겨씁니다. 뭐 meshup 이 그렇고, SOA가 그렇고, XML-RPC가 그렇고. 하지만 대부분의 사용자가 웹을 사용하는 방식은 분산이 아니라 중앙 집중적입니다. 몇개의 서버 제공업체가 홈페이지 운영 서비스를 제공하며 사용자는 이를 이용해 자신의 홈페이지를 운영합니다. 따라서 개인의 홈페이지는 개인이 정보를 생산한다는 측면에서, 개인이 제공하는 서비스를 개인이 결정하고 운영한다는 측면에서 분산적입니다. 하지만 서비스가 제공되는 물리적 H/W는 어디까지나 한 곳에 집중되게 됩니다.

하지만 P2P의 한 예인 BitTorrent를 보겠습니다. BitTorrent에서는 하나의 파일이 분산되어 저장되며, 그 파일의 완벽한 저장에 대해서는 보장하지 않습니다. 그러나, 대부분의 경우 언젠가는 데이터를 받아올 수 있게 마련이죠. 이 방식의 장점은 데이터의 저장이 분산되며, 중요한 파일은 보존된다는 것입니다. 단점은 그 ‘중요하다’라는 것이 단순히 popular한가에만 근거를 두고 있어, 어떤 사람에게는 중요한 데이터가 넷 상에 없을 수도 있다는 것입니다. 또, 현재의 P2P란 분산된 계산이 아니라 단순히 분산된 데이터 저장에 불과하다는 한계가 있습니다. 인터넷은 분명히 그것 이상의 가능성을 갖는데도 말이죠.

제가 생각하는 완전히 분산된 웹은 BitTorrent와 같이 P2P를 근간으로 하여, 개인 웹사이트를 PC들이 분산하여 호스팅하는 형태입니다. 각 개인 PC는 반드시 자신의 웹 사이트는 호스팅을 하며, 자신의 것이 아닌 웹 사이트의 fragment 역시 호스팅 할 수 있습니다. 또 이 구조에서는 중앙 집중 방식의 server가 존재하여 만약의 경우 데이터가 완전 소실 되지 않도록 정보를 저장해놓습니다. (하지만 호스팅은 하지 않습니다.) 또 이 서버에서는 개개인의 사용자가 어떤 컨텐츠를 수정할 수 있는가를 관리하기 위한 권한 관리 모델을 갖습니다.

이 서비스를 이용하는 개인은 자신의 PC를 부팅할 경우 사전에 설치해둔 소프트웨어가 넷 상에 퍼져있는 웹 사이트 fragment들의 최신버젼을 찾아 자신의 PC에 저장하며, geographically 또는 network 거리로서 가까운 곳에 위치한 또다른 클라이언트가 웹 사이트를 요청할 경우 서비스를 담당하게 됩니다.

이와 같은 구조를 생각할때 해결해야할 문제는 (1) 어디서 웹 사이트를 찾아야하는지 어떻게 알 것인가, (2) 웹 사이트가 완전 소실 되지 않도록하려면 사용자가 PC를 끄기전에 사방에 충분한 복제가 만들어져야하는데 이 문제를 어떻게 해결할 것인가, (3) 사용자의 인증은 어떻게 할 것인가, (4) 개별 PC에 과도한 부하가 걸리지 않도록 하며 그 PC의 용량을 최대한 끌어다 쓰려면 어떻게 할 것인가, (5) 사용자의 참여를 어떻게 이끌어 낼 것인가 등이 있을 수 있습니다. 특히 어려운 점은 이들중 많은 부분이 mathematical problem 일 것이란 점과, 완벽한 해결이 불가능 할 수 있다 (예를들어, 웹 사이트의 정보가 영구 손실되지 않도록 하는 알고리즘을 구현할 경우 이 알고리즘이 웹 사이트 정보를 보존할 가능성은 0.9 와 같은식으로 100% 안전하지는 않을 것)는 점입니다.

이와 같은 아키텍처의 장점은 (1) 정보의 중앙 통제가 원천적으로 불가능하여 완전히 자유로운 의사소통이 가능하다, (2) 중앙 집중화된 서버의 운영비용이 거의 없어진다, (3) network as a platform 의 한가지 혁신적인 애플리케이션이 될 수 있다, (4) 백업과 복구가 불필요하다는 것입니다.

이런 시스템이 있다면, 사용자는 ‘돈’이 아니라 자신의 컴퓨터가 가진 ‘컴퓨팅 파워’로 웹 사이트의 운영에 기부를 할 수 있겠죠…. 가능하다면 언젠간 TDW 문제를 풀어 보고 싶은데 지금은 여건이 안되는군요.

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *