3월 052009
 

스토리지나 데이터의 분산도 좋지만 사실 가장 비용이 드든건 CPU Time입니다.
이 CPU 자원을 잘게 쪼개서 여러 컴퓨터에 분산시킬 수 있다면 좋겠지요..
그런데 브라우저 사용자의 HTTP 통신을 이용해서 간단하게 분산하는 방법이 있습니다.

최근 어떤 사이트에 간단하게 브라우저와 Map-Reduce를 이용하여 분산 시스템을 만드는 법에 관한 글이 올라와 소개합니다.
일단 Flow를 그림으로 보면 아래와 같습니다. 




설명하자면 이렇습니다.

먼저 클러스터에 가입하려는 클라이언트(브라우저)가 Job Server에 접속합니다.
그러면 Job Server는 계산꺼리 데이터를 텍스트 형태로 브라우저에게 보내주는데(HTTP 301같은걸 이용해서),
이때 자바스크립트 map()함수와 reduce() 함수를 같이 보내줍니다.
그러면 클라이언트는 자바스크립트로 Map-Reduce를 실행하고 결과를 Job Server에게 돌려줍니다.


이렇게해서 Job Server는 작업의 조각들을 무수히 많은 대량의 클라이언트들(브라우저)에게 분산시키게 됩니다.


물론 여기에도 단점이 있을 수 있습니다.
Job Server가 받을 수 있는 Request의 수는 이론상의 최대 HTTP Request수를 넘을 수 없다는 것,
HTTP의 특성상 예상치 못한 오류가 생길 수 있다는 것,
보안에 약할 수 있다는 것 등의 해결해야 할 문제들이 있습니다만..,
이런 단점들을 조금씩 해결해 나가면 무지하게 큰 클라우드를 손쉽게 만들 수 있을지도 모르겠습니다.
어쨌든 참 재밌는 아이디어입니다.

간략하게 설명했습니다만 원본 글에 방문하시면 예제 소스와 함께 좀 더 자세히 보실 수 있습니다.

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)