인 이 한

dWkorea |  July 15 2010 | Tags:  interview | Comments (0)  |  Visits (1,043)

권영길 | 그루터 대표
contact@gruter.com


 
 권영길검색엔진 개발은 어떻게 시작하셨나요.
원래 경제학을 전공했고 1996년에 직장 생활을 시작하면서 통계 업무를 했습니다. 당시 사용하던 도구들이 주로 비주얼 베이직으로 만들어진 것이었는데 쓰다 보니 불편한 점들이 눈에 띄더군요. 코드를 보니 if, else, then밖에(?) 없어 보이고 '나도 할 수 있겠다' 싶어 1997년부터 프로그래밍을 독학하기 시작했습니다. 검색 쪽에 관심이 생긴 건 1999년 모니터링 시스템 개발을 하면서부터입니다. 모니터링 시스템에는 자료가 많아 검색엔진이 필요했고 그 때부터 그야말로 '삽질'을 시작한 거죠. 전공자들은 학교에서 배울 수 있었지만 전 그런 상황은 아니라 인터넷을 열심히 뒤지면서 '검색은 이런 것일 거야' 하며 코드를 짜기 시작해 지금까지 이르렀습니다. 본격적으로 시작한 건 2000년이었는데 제가 만든 검색엔진 자체는 그다지 좋지 않았고 검색에 대한 감을 잡아간 때였죠. 2003년부터 검색 서비스를 해보려고 구상하고 있었는데 검색엔진, 특히 대용량 검색에 대해 별로 자신이 없었습니다. 1000만 건이 넘어가면 엔진이 죽는 상황을 겪다가 루씬(lucene,http://lucene.apache.org/)이란 걸 알게 됐습니다. 루씬을 테스트해 보고 '이게 바로 내가 찾던 것이고 이보다 더 잘 만들 수 없다'고 생각하고 그 이전까지 제가 만들던 것을 버렸습니다. 몇 가지 사소한 단점이 있지만 성능이나 기능 면에서는 여느 검색엔진 못지 않은 것 같습니다. 그 이후로는 루씬을 기반으로 이런 저런 실험을 해보고 있습니다.

검색 분야 개발은 '철인 N종 경기'라는 느낌이 드는데 어떻게 생각하시나요.
검색이란 분야가 상당히 넓습니다. 보통 사람들은 포털을 검색엔진이라고 이야기하기도 하고 엔지니어들은 순수하게 검색을 할 수 있게 하는 프로그램을 검색엔진이라고 부르기도 하고 합니다. 또 단순히 검색어를 넣어 결과를 돌려주는 것 외에도 첫눈에서 시도했던 클러스터링 같은 다른 분야 기술을 필요로 하죠. 웹 로봇(크롤러)도 검색에 속한다고 볼 수 있구요. 관점에 따라 범위가 달라지거나 넓어지다 보니 그런 것 같습니다. 코딩 양이나 복잡도 측면에서도 철인 경기라 볼 수 있을 텐데 예를 들어 크롤러의 경우 2시간 만에 다 짤 수도 있지만 2년이 걸려도 원하는 만큼 못 짤 수도 있는 프로그램입니다. 일반 사용자들은 브라우저에서는 보이는 것들을 왜 크롤러가 가져다 주지 못하느냐는 질문을 하곤 합니다만 그렇게 되려면 쿠키나 자바스크립트, 인증 등 고려해야 할 것이 엄청나게 늘어나죠. 크롤러를 원하는 만큼의 수준으로 짠다는 것은 확실히 부담스러운 작업입니다. 워낙 많은 것을 다뤄야 한다는 게 철인 경기와 통하는 측면일 겁니다.

현존하는 검색 기법이나 알고리듬 들이 언제까지 유효할까요.
어느 회사나 바탕이 되는 알고리듬은 크게 보면 비슷한데 부가적으로 채용하는 것들이 조금씩 다릅니다. 하지만 사용자들의 '입맛'이 계속 변하기 때문에 검색 기법들을 그에 맞게 끊임없이 바꾸어야 합니다. 그런 변화를 쫓아갈 수 있어야 하구요. 어쩌면 이 세계가 정답이 없기 때문인 듯 합니다. 80점이었다가 갑자기 70점으로 떨어지기도 하고 어떤 사람에게는 90점인데 다른 사람에게는 50점이 되기도 하니까요. 모든 사람을 만족시키는 알고리듬을 고안하기란 어렵습니다. 최근에 구글에서 검색을 하면 예전에 비해 일반 웹 문서보다 블로그들이 많이 나오는 것도 한 예일 겁니다. 심지어 구글에서 "개인 블로그"라는 검색어를 넣고 'I'm Feeling Lucky'를 누르면 개인 블로그로서 별로 유명하지 않은 제 블로그로 연결되기까지 하는데요. 이런 현상은 블로그들이 높은 페이지 랭크를 받기에 유리하기 때문에 어쩔 수 없는 현상이기는 하지만 블로그 검색과 웹 검색을 완전히 분리해 변화에 대처하는 게 좋을 것 같습니다.

인터뷰어가 애매한 질문을 하면 인터뷰이가 답을 하기 어렵듯이 검색엔진도 마찬가지라는 생각이 듭니다.
그런 면도 있습니다. 그 동안 많은 노력이 있었지만 아직까지는 사람이 알려주지 않은 것을 유추할 수 있는 소프트웨어를 만들기란 어렵습니다. 그래서 검색엔진에서 사용자의 의도를 파악하기 위해 쓰는 전략이 개인 검색 기록입니다. A라는 검색어에 대해 사용자들마다 원하는 답은 각자 다르므로 검색 결과 중에서 클릭해 보는 글도 다릅니다. 이런 기록들이 쌓이면 특정 사용자가 A라는 검색어를 입력했을 때 그 사용자가 자주 봤던 종류의 글 위주로 보여줄 수 있게 되는 거죠. 하지만 워낙 많은 사용자를 대상으로 하는 대형 시스템을 만들어야 하기 때문에 여전히 쉽지 않은 면이 있습니다.

일반 사용자들은 검색 연산자를 쓴다든지 하는 걸 아직까지는 좀 어려워 하는 것 같은데...
대부분은 그냥 검색어들을 넣어버리죠. 그래서 검색어로 두 단어 이상이 들어오면 검색엔진 내부에서 'and'와 'or' 둘 다로 검색을 한 후 검색어가 다 들어 있는 걸 순위를 올린다든지, 앞에 넣은 검색어를 먼저 나오게 한다는지 하는 기법을 이용해 순위를 조정합니다. 어떤 걸 채택하느냐는 검색엔진 개발자마다 다른데 역시나 정답이 없는 문제입니다. 예를 들어 무조건 붙여 쓰는 사용자들이 많지만 '블로그 검색'과 '블로그검색'의 의도가 다를 수도 있으니까요. 또 통신체가 보편적이 되면서 이런 낱말들에 대한 색인 기법도 고민해야 할 문제라고 봅니다.

검색엔진 개발 못지 않게 성능이나 운영 문제도 중요해 보입니다.
몇 년 전만 해도 몇 백 만 건이 한계였던 것 같습니다. 1000만 건이면 대용량이라고 불렀구요. 사실 몇 만 건이면 검색엔진이 필요 없습니다. 데이터베이스를 쓰면 되죠. 검색이란 것이 어떤 낱말이 들어오면 가장 빨리 찾기 위해 색인을 만들고 그 낱말이 어디에 있는지를 알려주는 것인데 데이터 양이 많아지면 색인 구조를 잡기가 아주 벅찹니다. 요즘은 데이터가 굉장히 많습니다. 제가 모니터하는 블로그 데이터가 하루에 기본 20만 건인데 한 달이면 600만 건, 1년이면 7000만 건이 넘습니다. 1000만 건 테스트와 2000만 건, 4000만 건 테스트는 성능이 많이 다릅니다. 일단 한계를 넘어서면 분산을 해야 하는데 다시 수십억 건에 이르면 단순한 분산만으로도 어려워지고 계층 구조를 효율적으로 만들어야 합니다. 대용량으로 갈수록 어려워지는 거죠. 운영 문제는 결국 프로그램의 안정성입니다. 예를 들어 인덱싱 반영은 검색 대상에 따라 주기와 방법이 달라지는데 뉴스나 블로그처럼 자주 업데이트해야 하는 경우 필요한 때 정확히 인덱싱이 반영되고 죽지 않고 동작해야 하므로 복잡합니다. 지금까지 경험으로는 프로그램이 안정적으로 제대로 동작한다면 운영에 큰 문제는 없는 것 같습니다.

검개그(검색엔진개발자그룹 http://irgroup.org/) 운영자로 활동중이신데 검개그에 대해 소개 부탁 드립니다.
원래 2003년에 다른 분이 만들었는데 제가 옆에서 돕다 지금은 운영을 맡고 있습니다. 초창기에는 포털이나 검색엔진 개발사에서 일하는 분들이 많았는데 지금은 층이 다양해졌습니다. 뭔가 부족함을 느끼고 자신의 지식을 확장하는 데 관심이 많은 분들이 대부분 활발히 활동합니다. 그 이전에는 검색에 대한 자료가 거의 없었는데 검개그가 생기면서 저변 확대가 됐다고 평가합니다.

검색엔진 개발자 수는 상대적으로 적어 보이던데...
검색엔진 개발을 필요로 하는 곳이 많지 않기 때문입니다. 포털이나 검색엔진 개발사 정도죠. 그런데 이제는 좀 변할 때라고 봅니다. 앞으로는 검색이 플랫폼이 되는 시대이기 때문입니다. 즉 콘텐츠가 있으면 검색이 필요하고 검색엔진 개발 자체가 중요한 게 아니라 자신의 목적에 맞게 검색엔진을 쓸 수 있는 것이 중요해지죠. 루씬이 그러한 변화에 일조하고 있구요. 이런 기반 위에 한국 개발자들에게 필요한 형태소 분석기들이 공개되고 쉽게 배울 수 있는 강좌 같은 것들이 더 쌓이면 자신의 목적에 맞는 검색 프로그램을 짤 수 있는 시기가 오리라 봅니다.

주의 깊게 지켜보는 검색 관련 서비스나 기술이 있다면.
루씬 개발자 Doug Cutting이 진행하는 하둡(Hadoop)이라는 오픈소스 프로젝트에 관심이 있습니다. 검색으로 세상을 바꿀 수 있는 또 다른 새로운 도구가 나온 것이거든요. 이 프로젝트는 HDFS(Hadoop Distributed Filesystem)와 map/reduce 구현으로 구성되어 있는데 구글 분산 파일 시스템 같은 것입니다. 구글 분산 파일 시스템의 목표가 대용량 저장 시스템이면서 검색 시스템이 되는 것인데 현재 그에 필적하는 시스템이 없습니다. 구글처럼 수십억 건을 처리할 수 있는 분산 파일 시스템을 만들기란 쉽지 않거든요. 대부분 데이터베이스를 쓰는데 한계가 있습니다. 그래서 이 프로젝트가 성공한다면 많은 변화가 기대됩니다. 기존에 존재하는 수많은 정보에 루씬이라는 검색엔진과 하둡, 기타 검색 기술, 그리고 자신의 아이디어를 덧붙여 검색 시스템을 만들어 보려고 시도하는 사람들이 나올 겁니다. 그리고 전에는 전문 검색 서비스에 대해 많이 생각했는데 지금은 생활 스타일 관련 검색에 대해 고민하고 있습니다. 그래서 지도 관련 매시업들을 유심히 보고 있습니다.

지금 개발중이신 블로그리더에 대해 소개해 주세요.
원래는 제가 개발하던 엔진을 버리고 나서 루씬이 성능이 어느 정도인지, 대용량이 가능한지, 유연한지 테스트하기 위해 만들어본 것입니다. 공식적으로 발표한 적이 없는데 어떻게 소문이 나서 알려지게 됐습니다. 현재 1억 건 처리를 목표로 설계되어 있는데 서비스를 정식으로 시작한 상태는 아닙니다. 실제 서비스 이름이나 형태는 바뀔 수도 있고 8월 중에 정식으로 시작할 예정입니다.

루씬에서 개선하고 싶은 부분은 있다면 무엇인가요.
현재 루씬 구조가 클러스터링 엔진을 만들기에는 좀 부족한 부분이 있습니다. 클러스터링이란 특정 주제에 대해 비슷한 검색 결과들을 묶어 보여주는 기법인데 루씬에서는 이런 종류의 처리가 느려 고치고 싶은 생각이 있습니다. 그 문제를 해결하면 구상중인 서비스의 모습에 한 발 더 다가갈 수 있을 것 같습니다.

검색원으로서 국내 웹을 어떻게 보시나요.
쓰레기 정보가 많다는 논란이 있는데 그 속에서 핵심을 뽑아내는 게 검색 서비스의 목적이라고 봅니다. 예를 들어 네이버에서 하루에 블로그가 40만 건이 나온다고 했을 때 그 중에서 핵심 정보를 1%만이라도 뽑아도 기존 매체 못지 않은 콘텐츠를 확보할 수 있습니다. 구글의 성공 역시 그에 기인한 것이구요. 또 국내 웹이 검색이 쉽지 않은 구조라(예를 들어 자바스크립트 남용 같은) 정말 좋은 정보가 드러나지 않은 경우도 있을 것이므로 더 많은 노력이 필요하다고 생각합니다. 다시 말하면 아직 발견하지 못한 기회를 놓치고 있는 것이죠. 누군가는 해야 할 작업이라고 생각합니다.

'검색으로 인간을 이롭게 한다'는 신조는 얼마나 이루셨나요.
이롭게 한다는 게 아주 고결한 개념은 아닙니다. 검색 결과가 잘 나오고 사람이 편해지면 이롭게 되는 것이죠. 그 외에 구체화되지는 않았지만 어떤 방식으로든 검색에 참여하는 사람들이 혜택을 받고 검색에 의해 생기는 가치들이 사회에도 환원될 수 있는 모델이 있으면 좋겠다는 생각을 합니다.



[권영길 소개] 중앙일보 뉴미디어에서 일했고 현재 블로그리더라는 검색 서비스를 개발중이며 검개그(검색엔진개발자그룹 http://irgroup.org/) 운영자로도 활동중이다. 


출처 - https://www.ibm.com/developerworks/mydeveloperworks/blogs/9e635b49-09e9-4c23-8999-a4d461aeace2/entry/21?lang=en




Posted by linuxism
,