전 ICON 치프 아키텍트(Chief Architect). 임베디드 시스템 개발, 기업용 백업 소프트웨어 개발, 방송국 콘텐츠 수신제한 시스템 개발과 운영 지원, 클라우드에서 동작하는 서비스 개발에 이르기까지 다양한 실무 경험을 토대로 고성능 고가용성 시스템을 설계하고 있다. 집필 및 번역한 책이 40여 권에 이른다.
- 『English for Developers』(한빛미디어, 2015) 공저
- 『조엘 온 소프트웨어』(에이콘출판, 2005) 공역
- 『Clean Code 클린 코드』(인사이트, 2013) 공역
어떤 정보를 저장해야 한다는 요구사항을 받으면, 거의 본능적으로 데이터베이스를 떠올리게 된다. 물론 요즘에는 관계형 데이터베이스뿐만 아니라 NoSQL 계열의 데이터베이스도 일반화되고 있기에 선택의 폭이 넓어지긴 했지만, 다크호스가 하나 있다. 바로 검색 엔진이다. 물론 검색 엔진 자체만으로 기존 데이터베이스 관리 시스템에서 가능한 모든 작업을 그대로 수행하기는 어렵지만, 최소한 검색 측면에서 보여주는 유연함은 기존 관계형/NoSQL 계열 데이터베이스가 따라오기 어렵다는 생각이다. 검색 엔진을 사용할 경우 접두어/접미어 검색은 물론이고 구문 검색, 검색 키워드 사이의 연관성에 맞는 우선순위 조정, 어간 추출 검색 등을 자유롭게 수행할 수 있다. 여기에 보너스로 이런 복잡한 연산을 수행하는 경우에도 성능까지 보장한다. 이렇듯 텍스트 분석과 질의 능력이 뛰어나기에 전문(full text) 검색 엔진이라 부르는 이유가 바로 여기에 있다.
솔라는 검색과 관련된 기본 프레임워크를 제공하는 아파치 루씬을 기반으로 실제 기업에서 사용 가능한 완성된 검색 엔진을 목표로 삼고 있다. 루씬이 검색 관련 API를 제공하는 프레임워크라면 솔라는 루씬을 기반으로 REST와 유사한 API를 클라이언트에 제공하는 완성된 프로그램으로 아파치 톰캣이나 제티에 올려서 바로 시작 가능하다. 앞서 '기업'에서 사용 가능한 검색 엔진이라는 표현을 사용한 이유는 솔라가 관리자용 GUI 도구를 제공하며 레플리카와 분산 환경 구성을 위한 SolrCloud 기능을 제공하기 때문이다. 단독으로 동작하는 형태로는 수직 확장에 한계가 있기 마련이므로 고성능/고가용성을 달성하기 위해 솔라 4.0부터는 수평 확장이 가능한 아키텍처를 제공한다. 이런 좋은 특성으로 인해 상용 검색 엔진을 대신해 솔라를 채택한 사이트가 점점 늘어나고 있다. http://wiki.apache.org/solr/PublicServers를 살펴보면 솔라를 검색 엔진으로 채택한 곳은 일반 회사, 정부 기관, 오픈소스 프로젝트 등 분야를 가리지 않는다.
이 책은 솔라를 사용하는 과정에서 자주 발생하는 문제와 고민을 풀어주는 짧은 예제를 정리한 형태의 쿡북으로, 검색 엔진에 대한 기본 지식을 갖춘 개발자라면 재빨리 솔라 세상에 합류할 수 있는 여러 가지 힌트를 제공한다. 목차를 보면, 솔라 설정부터 시작해, 색인과 자료 분석, 질의 방법, 패싯 메커니즘 사용 방법을 소개하며, 다음으로 성능 개선, 클라우드 활용, 추가 기능 사용 방법, 실제 상황에서 자주 나오는 문제의 해법을 소개한다. 보다시피 솔라 운영과 활용, 그리고 문제 해결에 필요한 전 주기에 걸친 내용을 빠짐없이 다루고 있으므로, 아파치 솔라 공식 사이트(https://lucene.apache.org/solr/documentation.html)에서 제공하는 튜토리얼과 참조 가이드와 함께 읽으면 더욱 좋은 결과를 얻을 것이다.
이 책에서 다루는 아파치 솔라 버전은 4.0을 기준으로 하고 있지만, 번역 시점에서 가장 최신 버전은 4.7까지 나왔다. 여러 가지 다양한 기능이 추가되었고 버그도 수정됐으므로, 혹시 '책에 나오지는 않지만 솔라를 사용해 이런 작업도 가능할까?'라는 의문이 들 경우 릴리스 노트(https://lucene.apache.org/solr/4_7_0/changes/Changes.html)를 참조해 버전 4.0 이후 새로 추가된 기능 목록을 살펴보고 공식 참조 가이드에서 해당 부분을 읽어보기 바란다. 마지막으로, 한국 독자 여러분이 가장 관심이 많을 법한 솔라에서 한국어 처리와 관련된 정보를 정리해봤다. '검색에서 쓸 만한 오픈소스 한국어 형태소 분석기를 만들자!'라는 목표로 진행되고 있는 은전 한닢 프로젝트(http://eunjeon.blogspot.kr/2013/02/blog-post.html)와 루씬 KoreanAnalyzer 개발을 목표로 진행되고 있는 루씬 한글 분석기 오픈소스 프로젝트(http://sourceforge.net/projects/lucenekorean/)를 참고하면 된다. 온오프라인을 통틀어 솔라에 대한 정보가 부족한 상황에서 아무쪼록 이 책이 독자 여러분들께 조금이라도 도움이 되면 좋겠다.