어제 Hadoop 커뮤니티 모임이 Daum에서 있었다.
그 모임에서 Daum에 계시는걸로 보이는 어떤분이 MPI로도 가능한데 Hadoop으로 꼭히 써야될 필요가 있는가에 대해서 굉장히 열정적으로(?) 조목조목 hadoop의 단점과 문제점에대한 질문을 하셨다. 처음에는 질문이 날카로웠지만 점점 끝나지 않을거 같은 헤게모니 논쟁으로 흘러가는 분위기였다. ㅡㅡ;
솔직히 MPI를 사용해본적은 없고 멀티코어CPU 관련된 프로그래밍 라이브러리 이야기 할때 잠깐 소개를 받은적이 있었다. 메시지 패싱 방식으로 프로그래밍을 하는 모델이라고 들었는데, 아마도 이 부분은 Erlang의 메시지 패싱 방식의 모델과 엇비슷하리라 예상해 본다.
여튼 분산처리가 각 회사에서 다양한 방법으로 구현이 되고 있을거라는 생각을 해봤고 그것들이 굳이 Hadoop으로 바뀌어야 하는지도 고민을 어제 누군가의 질문에 의해서 해봤다.
내 개인적인 생각은 일단 “굳이 잘 돌고있고 크게 문제없고 확장성도 좋은 분산처리프레임웍이 있다면 굳이 바꿀 필요는 없다고 생각한다.“는 것이다.
하지만 분산처리 프레임웍이 각 부서마다 다른 언어와 방법을 쓰고 어떤 사람이 입사하거나 부서 이동을 하면서 굉장히 많은 노력과 시간을 부여해야 분산처리 프레임웍을 사용하는 방법을 익힐 수 있다면 심히 공통 프레임웍으로 가야 한다고 생각하고, 가지고 있는 것들중에서 경합을 벌이든 Hadoop을 쓰든 선택을 하는것이 좀더 효율적으로 일하는 방법중에 하나이고 경영자입장에서도 선호하는 방향일 것이다.
이 부분에서 Hadoop을 추천하는 점은 외부에서 그래도 관심이 있는 사람은 map/reduce에 대해 잘 알고 있을것이고 프로그램도 작은거나마 돌려봤을것이다. 그런 사람들이 회사에 온다면 굳이 많은 교육을 시키지 않아도 쉽게 분산처리환경에 적응하기 쉬울 것이다.
전에 platformday2008 에서 “야후에서 개발자들이 많이 쓰는 라이브러리들은 거의 모두 map/reduce 형식으로 재패킹이 되어 있고 이걸 받아서 커스터마이징 없이 hadoop 클러스터에 올려서 쓰고 있다”고 이야기 한적이 있다. 이와같은 야후의 사례는 큰 효율성과 더불어 같은(코딩과 디자인에 힘쓸) 시간에 좀더 다른 혁신적인 고민을 할 시간을 늘려주게 된다.
그럼 개발자로서 자존심이 있지 난 그걸 만들어 보고 싶다는 분들에게 조언을 하자면, 경험상 Hadoop이랑 비슷한 map/reduce 프레임웍을 간단하게 만들어 보는건 어렵지 않다. 이런것은 Hadoop 기술문서와 코드 약간만 보더라도 제한된 성능이지만 구현의 능력은 누구든지 기를 수 있다. 만일 그 구현 경험을 기르고 싶다면 나처럼 굳이 회사일이 아니더라도 개인적인 시간을 내서 몇일 고민하면서 코딩해보면 된다. 크게 어렵지 않다.(나는 딱 4일 걸렸다. 집필도 동시에.. ^^;)
Hadoop을 과 비슷한 무언가를 비교하면서 어떤게 좋다 나쁘다 하는건 윈도우가 좋냐 리눅스가 좋냐 하는 끝나지 않는 헤게모니싸움밖에 안된다. (끝나지 않는…논쟁…)
그런 논쟁보다는 Hadoop과 같은(혹은 비슷한) 분산프레임웍을 이용해 현재 서비스에서 어떤점을 개선할 수 있는지를 고민하는게 더 발전적인 생각이지 않을까 한다.
그런면에서 어제 박수혁님이 발표한 Hadoop을 이용한 로그 마이닝 방법론은 인상깊었다.
요즘 검색 서비스들도 처리해야 될 데이터가 많아지고 동시에 전처리 해야 될 것들이 점점 많아지고 있다.(게다가 freshness도 점점 중요해 지고 있다.) 그래서 검색 서비스에도 분산처리를 한두곳이 아닌 여러곳에 사용하는게 흔한 상황이 되어 버렸다. 따라서 어떻게 하면 빠르고 정확하게 처리할 수 있을까 하는 알고리즘의 고민들이 상당히 많아지니 차라리 이런 고민들을 하는게 더 생산적이 아닐까 한다. 어제도 사람들에게 이야기 했지만 내가 관심을 가지고 있는건 이미 Hadoop이 아니다. 검색을 빠르게 하기 위한 관심에서 시작되어서 어느정도 방법론에 대한 충족이 되어 이제 다른 것으로 이미 넘어간지 오래다. 시작이 검색이니 검색을 더 잘(?) 할 수 있게 하기 위한 다른 것으로 넘어갔다는 이야기다.
“Hadoop에 대한 맹신도, 비판도 내가 볼때는 시간낭비다.” 라고 생각한다.
단지 그것을(아니면 비슷한 프레임웍을) 어떻게 사용하는지를 고민해야될 시간이라는 것이다.
이렇듯 분산처리도 무엇을 하기 위한 수단에 불과하다. 좀더 넓게 보고 높이보고 연결시켜 보려는 노력을 게을리 하지 말아야 할거란 생각을 해본다.
Hadoop 헤게모니 논쟁을 벗어나자! by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.