금요일, 12월 14, 2012

[일상다반사] MongoDB NoSQL로 구축하는 PHP 웹 애플리케이션 번역서 출간

지난번에 소개드린 '악성코드와 멀웨어 포렌식' 번역서 출간 소식에 이어 이번에는 'MongoDB NoSQL로 구축하는 PHP 웹 애플리케이션'이라는 다소 긴 제목이 붙은 번역서 출간 소식을 독자 여러분들께 전해드린다. 최근 NoSQL이 사람들의 주목을 많이 받고 있긴 하지만, 관계형 데이터터베이스 기술과 비교해 노하우를 전달하는 자료나 책이 상당히 부족하므로, 비록 번역서긴 하지만 조금이라도 개발자 여러분의 목마름을 해소할 수 있으면 더할 나위 없겠다.

이 책은 NoSQL 계열 중에서도 문서 중심 아키텍처로 유명한 몽고DB를 설명하고 있다. 몽고DB 자체에 대한 설명은 물론이고 웹 개발자들에게 가장 널리 알려진 PHP를 사용해 몽고DB용 애플리케이션을 제작하는 방법을 자세히 설명하므로 NoSQL(특히 몽고DB)에 입문하는 개발자들이 읽어봐도 부담이 없다는 생각이다. 이 책은 몽고DB 버전 1.8.x 계열을 다루고 있기 때문에 가장 최신 버전인 2.2 계열과 비교해 조금 오래되었다는 생각이 들지 모르겠지만, 몽고DB에서 지축을 뒤흔들만큼 급격한 변경은 일어나지는 않았기에 기초 지식을 습득하는 과정에서 별다른 어려움은 없으리라 예상한다. 2.2.0 backward breaking을 살펴보면 알겠지만, 몽고DB 개발 공동체는 상당히 보수적이다(이럴 때는 천만다행 :)).

현재 Yes24교보문고등에서 절찬리에 예약판매 중이니 많은 성원 부탁드리겠다. 독자 여러분을 위해 역자 서문을 정리해드린다.

최근 클라우드 시대가 도래하면서 업계에 NoSQL 열풍이 불고 있다. 일부에서는 좋았던 관계형 데이터베이스의 시절은 저물고 NoSQL 시절이 도래하고 있다는 다소 과격한 주장까지 나오고 있으니, 개발자라면 누구나 한 번쯤 NoSQL에 대해 관심을 보여도 전혀 이상하지 않다. 하지만 컴퓨터 분야의 신기술이 나올 때마다 늘 반복되듯 중요한 것은 용어가 아니라 실체다. 하지만 실체는 직접 만져보고 써보기 전에는 관념에 불과하므로 어떻게든 시간을 투자해 신기술과 친해져야 할 필요가 있다. 그렇다면 어떻게 새로운 기술을 실전에 적용해볼까? 데이터베이스에 “Hello, World!”를 넣고 검색하는 테스트 프로그램만 작성해서는 감조차 오지 않을 것이고 그렇다고 실제 프로젝트에 적용하기에는 짊어져야 할 위험이 너무 크다. 방법은? 다행스럽게도 몽고DB 분야에서는 이 책이 신기술 탐험에 나선 여러분들을 도와줄 것이다.

이 책은 현재 나와 있는 여러 NoSQL 계열 데이터베이스 중에서 문서 중심(document-centric) 데이터베이스인 몽고DB를 설명하는 책이다. 하지만 단순히 NoSQL 이론을 늘어놓은 다음 몽고DB 관리법과 사용법만 설명하는 선에서 끝내는 대신, 웹 개발자라면 누구나 손쉽게 사용할 수 있는 PHP 스크립트와 자바스크립트를 사용해 가상적인 웹 서비스를 실제 몽고DB로 구축하는 방법을 단계별로 차근차근 소개한다. 따라서 이런 전개 방식은 실질적인 구현을 토대로 추상적인 개념을 이해하는 과정에 큰 도움을 주리라는 생각이다. 이렇게 컴퓨터에서 실제로 다양한 실험 과정을 거치고 나면 비로소 몽고DB의 실체에 한 걸음 다가간 자신을 발견할 수 있을 테다.

이 책에서는 몽고DB의 훌륭한 특성(특히 맵리듀스와 지리공간 색인)을 실제 현장에서 어떻게 적용할지를 놓고 충분히 고민한 내용을 담고 있다. 간단한 블로그를 만들어 로그 분석기를 추가하는 방법으로 몽고DB의 맵리듀스 기능을 실시간으로 활용하는 예제나 방문객의 위치에 인접한 음식점을 찾아주는 위치 인식 애플리케이션을 만들어 W3C API와 지리공간 색인 기능을 활용하는 예제는 (비록 상용에서 직접 사용하기는 어려울지라도) 몽고DB의 특성이 잘 녹아난 사례라 볼 수 있겠다. 몽고DB에 처음 입문하는 개발자를 대상 독자로 삼아 지나치게 복잡하지 않으면서도 그렇다고 부족함도 없이 딱 필요한 만큼 예제 중심으로 설명하는 방식을 따르기에 NoSQL에 대한 이론적인 사전 지식이 없더라도 웹과 PHP에 대한 기초 지식만 있으면 부담 없이 이 책이 여러분에게 다가올 것이다.

물론 몽고DB를 처음 접하는 독자를 위해 쉽게 작성하느라 중급 개발자들을 소외시키지도 않았다. 이 책에서는 클라우드에서 흔히 일어나는 다중 노드 배포 과정에서 분명히 직면할 세션 관리를 몽고DB를 사용해 처리하는 방안은 물론이고, 비동기식 특성을 사용해 여러 노드에서 동시에 접근 가능한 로그 시스템을 추축하는 방안도 소개한다. 또한 레거시 시스템을 버리지 못하는 상황에서 관계형 데이터베이스 시스템인 MySQL과 몽고DB를 함께 활용하는 방안을 소개하며, MySQL에서 몽고DB로 완전히 이전할 경우를 대비해 양쪽의 차이점과 주의 사항을 쉽게 설명하는 배려도 잊지 않고 있다. 마지막으로 몽고DB의 특성에 맞춰 보안과 성능 향상을 위해 기본으로 고려해야 하는 내용도 빠짐없이 다루고 있기에 상용 환경에서 고급 기능을 원하는 개발자라면 이를 출발선으로 삼아도 좋겠다.

백문이 불여일견이라고 이 책을 읽고 나서 LAMP(Linux-Apache-MongoDB-PHP) 스택에서 자신만의 개성 만점의 웹 애플리케이션을 직접 개발해보자. 여기서 한걸음 더 나가 몽고DB 위에 만들어진 뛰어난 오픈소스 소프트웨어를 분석해 몽고DB의 고급 기능을 적용하는 방법도 익혀보자. 그러고 나서 다시 한 번 직접 개발한 소프트웨어에 고가용성과 고성능을 달성하기 위한 특질을 추가해보면 몽고DB의 큰 그림이 머리 속에 그려질 것이다. 이제 몽고DB행 티켓을 손에 넣었으니, 애독자 여러분들 앞에 펼쳐질 즐거운 여행을 기원하겠다.

댓글 3개:

  1. 회사서 몽고디비 + php로 웹어플을 개발중인데 제가 투입되게 됬네요...

    이 책 사보려고 합니다

    답글삭제
  2. 익명님, major 버전이 2.4로 올라갔으므로 책을 읽으면서 http://www.mongodb.org/ 사이트에 가셔서 문서를 참조해서 변경된 사항이나 개선된 사항을 숙지하셔야 합니다.

    그리고 PHP로 시작하실 경우 http://php.net/mongo/에 나온 내용도 보시면 많은 도움이 될 것입니다.

    - 박재호 올림

    답글삭제