풀스택 개발자를 위한 MEAN 스택 입문 - 체계적으로 배우는 MongoDB, Express, AngularJS, Node.js
애덤 브레츠 & 콜린 J. 이릭 지음, 박재호 옮김 / 한빛미디어 / 2015년 9월
평점 :
절판


들어가면서

개발자는 고달픕니다. 

매년 매달마다 쏟아져 나오는 기술과 개발 방법론은 항상 부담으로 다가오게 마련입니다.

그 모든 것을 배우고 익히기에는 시간과 마음의 여유가 너무나 부족하기 때문이죠.

하지만 반대로 기술의 습득은 그 여유를 만들 수 있는 돌파구가 되기도 하는데, 이번에 접하게 된 MEAN 스택이 그러한 경우라고 볼 수 있습니다.

 

MEAN 스택이라는 단어는 이번에 책을 읽으면서 처음 알게된 단어인데, 내용에도 기술되어 있듯이 4가지 기술을 묶어 부르는 용어 입니다. (Mongo DB, Express, AngularJS, Node.js)

저는 사실 기술 각각에 대해서는 알음알음 들어보기는 했는데, 어떤 상황에 쓰면 좋은지, 다른 기술들과 어떻게 연계 되는지에 대해서는 모르고 지나친 상태였습니다.

 

이번에 읽게 된 "풀스택 개발자를 위한 MEAN 스택 입문" 에서는 위 4가지 기술에 대한 기본 개념을 소개하고, 예제를 통해서 각 요소를 어떻게 접목할 수 있는지에 대해 설명합니다.

구성은 크게 4개의 파트와 23개의 챕터로 이루어져 있습니다.

 

Part I. Node.js

가장 먼저 서버 쪽 프로그래밍의 토대가 되는 Node.js 에 대해서 다룹니다.

Node.js 는 이름에서 알 수 있듯이 자바스크립트를 사용합니다. 또한 그것이 가장 큰 특징입니다. 

자바스크립트는 웹 브라우저에서나 쓰는 건줄 알았는데, 이제는 이걸로 서버 프로그래밍이 가능해 졌습니다.

하지만 그렇다고 해서 단순히 생각할 문제는 아닙니다.

단일 스레드 환경에서 효과적으로 I/O 대기 문제 등을 처리해 내기 위해서 노드의 프로그래밍 모델을 익혀둘 필요가 있습니다.

 

Part I 에서는 이러한 노드의 프로그래밍의 대표적인 모델에 대해서 설명하고 노드의 설치, 모듈과 패키지 관리 등 기본적인 사용 방법을 다룹니다.

예제 중심으로 되어있어서 실제 작동되는 서버 로직을 구현해 보며 진행 됩니다. 예제수준이 어려운 수준은 아니지만, 자바스크립트의 기본은 다룰 줄 알아야 합니다.

책에서 자바스크립트에 대한 세세한 문법을 다루고 있지는 않으므로, 자바스크립트에 대해 전혀 모르고 있다면 약간의 시간을 투자해서 

https://opentutorials.org/course/743 (생활코딩 Javascript 강좌) 와 같은 강좌를 한번 보고 오시는 것을 추천합니다.

 

Part II. MongoDB

NoSQL 의 일종인 MongoDB 에 대하여 다루는 파트 입니다.

MongoDB 에서 다루어지는 데이터 형태는 JSON 이기 때문에 당연하게도 자바스크립트 기반의 개발환경에서 아주 찰떡 궁합입니다.

역시 이번 파트에서도 책에서는 MongoDB 에 대한 아주 자세한 사항을 다루지는 않지만, MongoDB 의 간략한 컨셉과 역사, 설치법 소개와 CRUD 방법에 대해 비교적 충실하게 소개합니다.

몽고랩과 같은 무료 호스팅 공급자도 소개하고 있으므로 가벼운 마음으로 시작해 볼 수 있을 듯 합니다.

저의 경우는 로컬에 설치해서 진행해 보았는데, CRUD 예제만 따라해보아도 컨셉이 쉽게 이해될 만큼 쉽게 구성이 되어있습니다.

파트 후반부에는 실제 노드에서 MongoDB를 사용하기 위한 모듈인 몽구스에 대해서 소개하고, 사용법을 다룹니다.

몽구스를 다루는 부분도 CRU(D) 를 방법을 설명하고 있는데, D(Delete) 는 직접 설명하지 않고 독자가 스스로 작성해볼 것을 유도하고 있습니다.

어느정도 DB연동 개발경험을 가진 유저라면 이 파트를 읽었을 즈음에 MongoDB를 이용한 개발 방향을 잡을 수 있을 것이라 생각이 듭니다.

 

Part III. Express

본격적으로 익스프레스를 이용한 웹 서버를 만들어 봅니다. 

익스프레스는 경량 웹 프레임워크로서, 노드 모듈로 제공됩니다. 설치도 간편하고 사용법도 간단합니다. 너무나 간단해서 놀라울 정도.. 랄까요.

익스프레스 생성기(express-generator) 를 사용하면, 기본 골격도 거의 자동으로 만들어 지므로 더욱 쉽게 시작할 수 있습니다.

Part III 에서는 이렇게 생성한 기본 앱을 기준으로 익스프레스의 구성요소와 아키텍처를 설명합니다.

Node.js 의 모듈로 제공되는 웹 프레임워크는 익스프레스 외에도 여러가지가 있는데 Part III 후반부에 하피(Hapi) 라는 웹 프레임 워크에 대해서도 짤막하게 소개 합니다.

조금 아쉬운 점이 있다면, 익스프레스의 템플릿 엔진에 대해서 언급된 것이 그다지 없습니다. Jade 템플릿 엔진에 대해서 소개되어있지만 아주 작은 섹션으로 언급하는 정도입니다.

다른 템플릿 엔진과의 비교나 장단점, 짧은 사용 예제 정도만이라도 소개가 되었으면 좋았지 않았나 생각이 듭니다.

 

이전 파트에서 부터 쭉 만들어온 HR 앱 예제가 있는데, 이를 따라해보는것도 괜찮겠지만 Part III 까지 어느정도 이해가 가능했다면, 

실제 자신이 구상한 웹 서버 로직을 익스프레스나 하피를 이용하여 구현해 나가보는 것도 좋은 방법일 듯 합니다. 

 

Part IV. AngularJS

단일 페이지 앱(SPA) 를 구성하기 위한 AugluarJS 를 소개하는 파트 입니다.

개인적으로는 프런트 앤드를 구성해본적이 없어서인지 몰라도, 굉장히 생소하지만 흥미있게 보았던 부분입니다.

복잡한 것들을 덕지덕지 붙히지 않아도 동적으로 데이터를 바인딩 해서 페이지를 구성할 수 있다는 점이 매우 신기하더군요.

책에서는 AngularJS 의 아키텍처와 그 안의 요소 들을 간단하면서도 이해하기 쉬운 예제로 설명합니다.

저 같이 Ajax 가 뭔지도 모르는 분이라면, 예제들을 넘기지 마시고 꼭 한번씩 수행해 보시길 권장합니다.

다른 파트에 비해서 비교적 글의 양이 많다고 느껴지지만, 예제를 따라서 해보다 보면, 데이터의 바인딩, 지시자, 컨트롤러등의 개념을 쉽게 이해할 수 있습니다.

 

Part V. 개발 환경

마지막 파트에서는 MEAN 스택에 포함되는 사항은 아니지만, 알아두면 매우 유용한 몇가지를(작업 실행기, 디버깅, 테스트) 소개하고 있습니다.


먼저 걸프(Gulp)라는 작업 실행기를 다루게 되는데, 이를 이용하면 우리가 작성한 앱과 관련한 코드나 리소스들을 편리한 방법으로 관리하거나 배포가 가능해 집니다.

사실 처음 접하면 바로 와닫지 않을 수 있는데, 쉽게 말하면 우리가 원하는 어떤 일련의 작업을 수행해주는 실행기입니다. 

예를 들면 걸프를 이용하면 js파일들을 합치고, JSHint 를 통한 코드 검사, 코드 최소화 작업 등을 순차적으로 쉽게 구성 하고 실행할 수 있습니다.

역시 노드 모듈로 제공되며, 책에서는 이를 사용하는 방법을 CSS, JS 파일에대한 작업을 예로 들어 차근차근 설명하고 있습니다.

소개된 수준만 활용하더라도 기존에 아주 귀찮던 빌드, 배포 작업을 간소화 할 수 있을 것으로 보여 집니다.

 

두번째로는 디버깅을 위한 툴과 사용 방법을 소개합니다.

먼저 크롬의 개발자 도구에 포함된 디버거를 이용한 디버깅 방법을 설명하는데, 다른 설정 없이도 간편하게 브라우저에서 요소 검사를 통해 디버깅 할수 있는 방법을 보여 줍니다.

그 후에 대화식 디버깅 방법을 제공하는 노드 내장 디버거를 소개 합니다. 다만 노드 내장 디버거는 인터페이스가 워낙 불편하다보니 사용성은 좀 떨어지는 느낌 입니다.

마지막으로 노드 내장 디버거를 크롬의 개발자 도구에 붙여 사용할 수 있는 node-inspector 에 대해 소개합니다.

3가지 디버깅 방법 모두 예제를 제공하고 있고, 쉽게 따라 해볼 수 있는 수준으로 설명되어 있습니다.

 

마지막으로 개발의 마지막단계인 테스트를 진행할 수 있는 방법에 대해서 다루고 있습니다.

요새는 TDD니 뭐니 해서 개발 진행 단계부터 테스트를 고려하여 로직을 작성하는 일이 꽤 많아졌습니다. 큰 프로젝트일 수록 더 중요하지만 번거롭고 어렵게 다가오는 것이 사실입니다.

책에서는 노드 앱 테스트 프레임 워크인 모카(Mocha) 를 이용하여 이러한 테스트를 정의하고, 주로 쓰이는 비동기 패턴에 대한 테스트 작성에 대해 설명하고 있습니다.

또한 모카와 함께 사용할 수 있는 차이(Chai) 모듈을 이용하여 특정 기대 조건을 충족 여부를 판단하는 방식의 테스트 방법도 소개합니다.

마지막에서는 테스트 실행기인 카르마(Karma), UI 가 없는 브라우저인 팬텀(Phantom), 앞서 다룬 Mocha와 Chai를 활용하여 AngularJS 를 테스트 하는 방법을 알아봅니다. 

 

마치며

새로운 것을 해볼 때면 항상 드는 생각이 "번거롭다" 라는 것입니다. 이곳 저곳 찾아다니며 여러가지 기술을 습득하고 통합하는 과정이 참 고달프죠.

 

저는 사실 서버 개발자도 아니고, 그렇다고 웹 개발자도 아닙니다.

하지만 필연적으로 크고 작은 웹 서비스를 만들어야 하는 경우가 더러 생기게 됩니다.

예를 들면 사내에서 쓰이는 모니터링 시스템(웹 UI 를 포함한) 을 구축하거나, 관리용 도구들이 대표적인데,

일단 마음을 굳게 먹고 시작해보려 한다고 해도, 많은 귀차니즘에 부딪히게 됩니다.

일단 서버 쪽 프로그래밍을 어떤 언어로 구현할 지 부터 선정해야하고, 또 공부하고 구현해야 하는데 그 방법이 참 다양합니다.. Java, PHP, Python 등등 

더 큰 문제는 클라이언트 부분입니다. 제가 아는 거라고는 단지 HTML 태그 몇 줄 뿐인데, 

적절하게 서버에 요청도 해야하고, 요청을 받아와서 멋지게 뿌려주는 방법도 모르고 있으니.. 참 답답할 노릇이죠.

 

이렇게 우리가 방향을 잡지못하고 있을 때, 얻을 수 있는 해답이 MEAN 스택입니다.

그리고  "풀스택 개발자를 위한 MEAN 스택 입문" 은 이를 더 명쾌하게 풀어내어 소개하고 있습니다.

4가지 기술을 다루고 있는 책 치고는 상당히 얇습니다.

이 책의 기술을 소개하고 방향성을 제시하는 목적 이라고 생각한다면 책이 너무 두꺼워 읽다가 지치는 것보다는 훨씬 좋아 보입니다.

그렇다고해서 내용이 소홀하지는 않습니다.

MEAN 스택을 구성하는 각 기술 요소의 아키텍쳐나 기본 사용법은 충분히 설명이 되어있고,

나머지 더 세부적인 사항은 주석으로 링크가 소개되어있어 여기저기 돌아다니면서 일일히 찾아보는 수고를 하지 않아도 됩니다.

또 번역서임에도 불구하고 번역이 매끄러워서 편한한 느낌으로 술술 읽어 낼 수 있었습니다.


http://takeiteazy.tistory.com/310


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo