오래 걸렸습니다. 이 책의 원서가 출간됐을 때 "제가 처음 검색 분야를 접할 때 이런 책이 있었다면 좋았겠다."는 아쉬움이 들었고, 그래서 이 책의 한국어판이 반드시 필요하다고 생각했습니다. 이 책에는 많은 오픈소스 프로젝트를 사용한 예제가 들어 있고, 이 프로젝트들은 지금도 끊임없이 진화하고 있습니다. 개발자들이 이 책으로 검색과 자연언어 처리를 쉽게 활용하는 시작 지점으로 삼으면 좋겠습니다. 깃허브에 책의 예제가 모두 올라와 있고, 거의 바로 실행시킬 수 있는 정도로 완성도가 높으니 좋은 참고가 될 것이라고 생각합니다.
9개의 장으로 이뤄진 이 책은, 텍스트 처리에 대한 소개부터 시작해서 처리 대상인 텍스트를 얻기 위한 방법, 검색 이론, 검색 서비스를 구성하는 주요 요소가 되는 유사 문자열 일치, 개체명 인식, 결과를 사용자에게 도움이 되는 방식으로 보여주기 위한 클러스터링과 분류, 앞의 내용을 통합해서 적용하는 QA 시스템 소개와 심화된 주제에 이르는 내용으로 구성됐습니다. 순차적으로 읽을 필요는 없지만, 이 분야가 낯선 사람이라도 차근차근 따라갈 수 있게 구성돼 있습니다.
2018년 12월에 솔라 최신 버전인 7.5를 기준으로 책 내용을 검토해, 최신 버전을 사용하려고 하는 이가 어떤 것을 보면 될지에 대한 안내를 덧붙였습니다. 머하웃의 경우에는 패키지 전체적인 변화가 너무 크고, 그동안 더 널리 사용되는 다른 라이브러리(아파치 스파크)가 있어 주석에 책에서 하는 일을 스파크로 하기 위해 어떤 문서를 보면 좋을지에 대해 간단히 설명했습니다.
파이썬은 최근에 굉장히 인기 있는 언어로 널리 쓰이고 있습니다. 머신 러닝부터 데이터 가공, 웹 애플리케이션까지 다양한 분야에서 파이썬을 활용할 수 있으며 사용하기 쉽고 직관적인 문법을 갖고 있어 진입 장벽도 낮은 편입니다. 그러나 또 개발자들은 파이썬으로 프로그램을 빨리 만들어 사용할 수는 있지만, 규모가 커지면 성능상 문제가 일어날 것이기 때문에 중요한 곳에서는 사용할 수 없다고도 생각합니다. 그런 영역이 있을지도 모르지만, 저는 어쩌면 너무 빨리 파이썬을 포기하는 것이 아닐까 의심했습니다.
이 책은 파이썬을 사용하면서 충분한 성능을 얻을 수 있는 여러 가지 접근법에 대해 설명합니다. 첫 장에서는 일반적인 성능 개선에 대해 사용할 수 있는 프로파일링과 벤치마킹에 대해 다룹니다. 그다음은 알고리즘과 데이터 구조 및 캐싱을 활용하는 순수 파이썬 최적화를 다룹니다. 데이터 분석에서 널리 사용되는 NumPy와 Pandas로 고속 배열 연산을 하는 방법도 설명하며, Cython으로 확장 파이썬 문법을 사용해 효율적인 C 코드를 얻고 사용하는 방법도 소개합니다. JIT를 활용하는 파이썬 성능 개선 방법도 보여주며, 동시성과 병렬성, 분산 처리를 파이썬에서 구현하는 방법과 라이브러리에 대해서도 소개합니다. 이 과정에서 반응형 프로그래밍 개념, 테아노나 텐서플로, 스파크처럼 요즘 유명해진 라이브러리 등에 대해서도 소개합니다.
좀 더 확장된 파이썬 언어 구현이나 파이썬 성능을 높이는 다양한 방법에 대해 관심이 있다면 이 책이 좋은 길잡이 역할을 해줄 거라고 생각합니다.
웹 서비스를 떼어놓고 우리 삶을 생각하기 어려운 세상이 됐습니다. 그런 만큼 웹을 이루는 핵심 요소인 HTTP를 이해하는 것은 어떤 입장으로든 웹 서비스를 이해하고 개발하는 데 꼭 필요합니다.
이 책은 HTTP/2가 필요해진 이유와 HTTP/2로 진화하기까지의 과정, 최적화 기법을 적용할 때 알아야 하는 것들, 그리고 더 깊이 있게 알고 싶어하는 사람을 위해 HTTP/2 사양의 상세한 정보를 설명합니다. 게다가 이후의 발전 방향이라고 할 수 있는 QUIC과 HTTP/3에 대한 논의도 다룹니다.
그저 동작하는 사이트와 프로그램에 그치지 않고 웹을 좀 더 깊게 다루고 싶다면 도움이 될 책이라고 생각하며, 한국어판이 좀 더 빠른 습득에 도움이 됐으면 합니다.