Smashing Node.js는 LearnBoost의 CTO이면서 Socket.IO를 만든 Guillermo Rauch가 Node.js에 대해서 쓴 책이다. Rauch를 좋아하는 편이라 작년에 책을 쓴다는 것을 알았을 때부터 기대하고 있다가 지난 8월에 출간이 되서 읽어보았다. 스터디에서 교재로 읽은 책외에는 원서를 그냥 읽은 것은 이 책이 처음인 것 같다. 원서의 부담이 전혀 없는 것은 아니지만 코드가 많고 영어가 쉬운 편이라서 크게 어렵지 않게 읽을 수 있었다.
Part I: Getting Started: Setup and Concepts
파트 1에서는 Node.js를 사용하기 위한 기본적인 내용을 다룬다. 설치를 포함해서 REPL과 코드의 실행방법을 포함해서 간단한 NPM의 사용법을 소개하고 Node.js를 사용하는데 필요한 JavaScript의 기초를 설명한다. 물론 하나의 장으로 자바스크립트를 설명하기에는 무리이므로 자바스크립트는 따로 공부해야하겠지만 복습하는 기분으로 핵심만 살펴보는 수준이라고 생각하면 된다. 그리고 Node.js의 핵심중 하나인 블락킹 I/O와 논블락킹 I/O에 대해서 설명하고 Node.js에서 자바스크립트를 사용할 때 알아두어야 할 점을 가르쳐 준다.
Part II: Essential Node APIs
파트 2부터 본격적으로 Node.js를 다루기 시작한다. 앞에서 얘기했듯이 이 책은 예제를 중심으로 한 책이므로 매 장마다 예제 프로그램을 하나씩 작성하면서 Node.js에 대해서 배워나간다. 처음에는 fs모듈을 사용해서 현재 디렉토리의 파일목록을 출력해 주는 CLI 프로그램을 작성해보면서 Node.js 프로그램을 작성할 때의 특징을 알려준다.
본격적이라고 느껴지는건 TCP 프로그램을 작성하면서 부터이다. Socket.IO를 작성하면서 네트워크에 대해서 많이 다뤄봐서인지 네트워크 프로그램은 상당히 잘 설명하고 있다. TCP가 가지는 특징들을 찬찬히 설명하면서 IRC 프로그램을 작성한다. 그리고 이어서 TCP에 기반한 HTTP를 설명한다. 이런 식으로 레이어를 하나씩 올라가면서 설명하는 것이 참 좋다고 생각하는데 앞에서 TCP에 기반해서 설명한 지식위에 HTTP가 가지는 특징을 설명하면서 트위터 클라이언트를 작성한다. Node.js를 설명하지만 그 외의 기반 지식도 찬찬히 설명해 주는 것이 이 책의 특징중 하나라고 생각된다.
Part III: Web Development
책의 초반에 다음과 같은 얘기가 나온다.
The Best way to understand a tool is to understand why the tool exists in the first place.어쩌면 이 책의 컨셉 중 하나라고 할 수 있는데(내가 좋아하는 방법이기도 하다.) 모듈이나 편리한 기능을 바로 설명하지 않고 기본적인 기능으로 먼저 설명하고 불편한 점을 다른 기능으로 개선하면서 조금씩 발전해 나아간다. 그래서 앞에서 HTTP로 웹 어플리케이션을 작성해보았으므로 여기서는 Connect가 어떤 문제들을 해결해주고 Express는 또 어떻게 편하게 해주는지를 설명한다. 그리고 HTML5의 WebSocket을 사용해서 예제를 작성해보고 WebSocket만으로는 지원하지 않는 기능이나 불편한 점을 Socket.IO를 통해서 개선한다.
Part IV: Databases & Part V: Testing
파트 4에서는 Mongoose를 사용한 MongoDB, node-mysql과 sequelize를 사용한 MySQL, 마지막으로 Redis를 살펴본다. 파트 5에서는 테스트를 다루는데 먼저 Node.js에서 작성한 코드를 브라우저에서도 공유하는 방법을 살펴보고 Assert로 테스트 코드를 작성한 뒤에 Expect.js와 Mocha로 테스트를 작성하는 방법을 알려주는데 사실 테스트에 대해서는 그리 깊게 알려주지는 않고 간단히 훑어보는 정도이므로 테스트에 대해서 궁금하다면 이 책만으로는 좀 부족하리라고 생각한다.
일단 내가 Node.js에 대한 지식이 어느정도 있기 때문인지는 모르지만 꽤 즐겁게 보았고 개념을 일일이 설명하기 보다는 예제에 설명을 잘 섞어놨다. 실제로 초심자가 보면 어떨지 잘 모르겠지만 내 생각에는 약간 Node.js를 공부해서 아주 기본적인 내용은 알았지만 어플리케이션 작성은 잘 감이 안올때 보면 딱 적당할 것 같다. 개인적으로는 Socket.IO 등 다수의 모듈을 개발한 경험을 살린 약간의 고급 Node.js 책을 써줄 것으로 기대했었는데 입문서를 쓴 것은 약간 아쉽지만 참 괜찮은 입문서라고 생각한다.
당장 사서 봐야 겠어요!! ㅎㅎㅎ
인사이트에서 번역중인걸로 알고 있습니다. 시기상은 슬슬 나올때가 다가오지 않았나 싶긴한데요. 원서가 혹시라도 부담스러우시면 번역서를 기다리셔도 좋을듯 합니다. ^^