노드JS와 몽고DB로 웹 개발 시작하기 (노드JS와 몽고DB로 완전한 기능을 가진 웹 애플리케이션 개발 첫걸음)

노드JS와 몽고DB로 웹 개발 시작하기 (노드JS와 몽고DB로 완전한 기능을 가진 웹 애플리케이션 개발 첫걸음)

$30.41
Description
[노드JS와 몽고DB로 웹 개발 시작하기]는 노드JS와 몽고DB를 중심으로 빠르게 웹 개발을 할 수 있는 방법을 소개한다. 개발부터 테스트, 배포까지 실습하기에 가장 적합한 예제를 다루고 있어 빠른 프로토타입 개발을 원하는 독자들에게 가장 적합한 책이다. 다양한 예제를 통해 노드JS와 몽고DB 및 관련 기술을 익힐 수 있다.
저자

미툰사티시

저자미툰사티시(MithunSatheesh)는인도에거주하는오픈소스의열렬한지지자이자웹개발자다.5년이넘는웹개발경력이있고특히자바스크립트,PHP,루비를비롯한프론트엔드기술을전문으로한다.npm을통해오픈소스화된몇몇노드JS라이브러리의저자로,그중하나는node-rules인데이전근무처인bookmyshow.com에서트랙잭션위험을처리하기위해작성됐던전향추론(forwardchaining)룰엔진이다.node-rules는npm과깃허브에서많은사용자를확보하고있다.이외에깃허브의많은오픈소스프로젝트에도개인적으로공헌하고있다.
스택오버플로(StackOverflow)같은프로그래밍사이트에정기적으로방문하고오픈소스월드에공헌하는것을좋아한다.프로그래밍외에도다양한클라우드플랫폼기술을실험하는데관심이있다.그가작성한여러애플리케이션은레드햇(ReaHat)의오픈시프트(OpenShift)같은PaaS프로바이더의디벨로퍼스포트라이트코너에소개됐다.
그를트위터에서팔로우하려면@mithunsatheesh를참조하자.

목차

1장.풀스택자바스크립트세계에오신것을환영합니다!
__노드JS에대한간략한소개
____V8엔진이가져오는이점
____노드JS는싱글스레드!
____논블로킹비동기실행
__npm:노드패키지매니저
__자바스크립트재사용과공유
____단순히웹서버를구현하기위한것은아니다!
____socket.io를이용한실시간웹애플리케이션
____네트워킹과파일IO
____io.js의유래
__노드JS로구현한간단한서버
____언제노드JS를사용할것인가?
__NoSQL운동
__몽고DB에대해간략한설명
____몽고DB의기능
__노드와몽고DB의실제사용사례
__이책을통해얻을수있는것
__요약

2장.일어나달려가기
__노드JS설치
____맥OSX
____윈도우
____리눅스
____노드JS설치확인
____온라인문서들
__몽고DB설치
____맥OSX에설치하기
____윈도우7/8에설치하기
____리눅스에설치하기
____몽고DB설치확인하기
____온라인문서들즐겨찾기
__첫번째앱작성
____테스트애플리케이션작성
____의존성모듈가져오기
__애플리케이션코드추가하기
____코드이해하기
____예제애플리케이션구동
____데이터베이스확인
__요약

3장.노드와몽고DB의기초
__자바스크립트입문
____기초문법
____데이터타입
____변수의스코프이해하기
____연산자와흐름
____객체이해하기
____배열이해하기
____함수이해하기
____익명함수와콜백
____JSON
__노드JS의기초
____이벤트드리븐
____비동기실행
____모듈시스템
____노드JS핵심
__NPM으로모듈설치
__몽고DB의기초
____몽고셸
____데이터삽입
____쿼리
____데이터갱신
____데이터삭제
__추가자료
__요약

4장.익스프레스소개
__웹애플리케이션프레임워크
__익스프레스JS란?
__완전한웹애플리케이션개발
____웹애플리케이션디자인
____파일구조잡기
____애플리케이션의시작점만들기
____애플리케이션구동
__미들웨어의이해와사용
__configure모듈
____configure모듈활성화
__라우터와컨트롤러
____커스텀미들웨어
__핸들바뷰
__요약

5장.템플릿과핸들바
__템플릿엔진
__서버측템플릿과클라이언트측템플릿
____클라이언트측템플릿
____서버측템플릿
__뷰
__레이아웃
__파셜뷰
__핸들바의기초
____템플릿에객체바인딩
____프레젠테이션로직삽입
__핸들바헬퍼
____전역헬퍼
____뷰를위한헬퍼
__뷰그리기
__요약

6장.컨트롤러와뷰모델
__컨트롤러
__뷰모델
__홈컨트롤러수정
__이미지컨트롤러수정
____이미지출력
__이미지업로드
__코드재사용을위한헬퍼
____사이드바모듈
____통계모듈
____이미지모듈
____댓글모듈
____사이드바기능테스트
__UI작업이터레이션
__요약

7장.몽고DB로데이터저장
__노드JS에서몽고DB사용하기
____몽고DB연결
____도큐먼트삽입
____도큐먼트반환
__몽구스소개
____스키마
____모델
____내장검증기능
____정적메소드
____가상프로퍼티
____몽구스와의연결
__스키마와모델정의
____모델인덱스파일
__컨트롤러에CRUD추가
____홈컨트롤러
____이미지컨트롤러
______인덱스:이미지모델을반환
______생성:이미지모델을새로삽입
______지금까지의완성물테스트하기
______‘좋아요’버튼과이미지모델갱신
______댓글:댓글모델삽입
______Wrappingitup
____헬퍼
______비동기모듈소개
______댓글헬퍼
______사이드바헬퍼
______트러블슈팅
______통계헬퍼
______뜨는이미지헬퍼
__이미지삭제기능추가
____경로추가
____컨트롤러핸들러추가
____핸들바이미지페이지템플릿수정
____jQuery변경
__리팩토링과개선
__요약

8장.레스트풀API작성
__API란?
__레스트풀API란?
__포스트맨REST클라이언트소개
____설치방법
____포스트맨클라이언트
____JSONVIew크롬익스텐션
__기본API서버생성
____견본JSON응답생성
__GET요청에대한응답
__데이터수신:POST와PUT
__데이터삭제:DELETE
__노드JS에서의외부API소비
____request를사용한API엔드포인트소비
__요약

9장.코드테스트
__필요도구들
____모카프레임워크로테스트하기
____차이JS를사용해테스트하기
____차이알아보기
____시논JS를사용한스파이와스텁
____프록시콰이어를이용한모듈스터빙
__첫번째테스트작성과실행
____테스트헬퍼작성
__애플리케이션테스트
____경로테스트
____서버테스트
____모델테스트
____컨트롤러테스트
__모든것을스파이,스텁!
__요약

10장.클라우드기반서비스에서의배포
__전통적인방법과클라우드호스팅비교
____IaaS와PaaS비교
__깃소개
__애플리케이션배포
____Nodejistsu
____헤로쿠
____아마존웹서비스
______몽고랩계정과데이터베이스생성
______AWS환경구성과생성
____마이크로소프트애저
____디지털오션
__요약

11장.잘알려진프론트엔드프레임워크와싱글페이지애플리케이션
__싱글페이지애플리케이션이란?
__프론트엔드프레임워크를왜사용해야하는가?
____투두MVC프로젝트
____백본JS
____엠버JS
____앵귤러JS
__프론트엔드개발도구들
____자동화된빌드매니저
____의존성관리
____이식성
____HTML템플릿엔진
____CSS트랜스파일링
__테스트와테스트주도개발
____팬텀JS헤드리스브라우저
__요약

12장.유명한노드JS웹프레임워크
__Koa
__Meteor
__Sails
__Hapi
__Flatiron
__요약

출판사 서평

★이책에서다루는내용★

■노드JS와몽고DB를사용하기위한개발환경설정
■익스프레스JS기반의노드JS웹서버를설정및작성
■핸들바템플릿엔진을사용해동적인HTML페이지작성
■몽고DB와몽구스ODM을사용해데이터영속화
■모카프레임워크등과같은자동화된테스트도구를사용해코드테스트
■헤로쿠,AWS,마이크로소프트애저와같은클라우드환경에배포하기
■한층나은웹애플리케이션을개발할수있도록싱글페이지애플리케이션프레임워크들을둘러보기

★이책의대상독자★

노드JS와몽고DB를사용해완전한기능을가지는웹애플리케이션을개발하고구동하길원하는모든수준의자바스크립트개발자를위한책이다.

★이책의구성★

1장,‘풀스택자바스크립트세계에오신것을환영합니다’에서는백엔드개발을자바스크립트로할때의장점과노드JS에대해소개한다.덧붙여,이책에서개발할애플리케이션의전체적인아키텍처를설명한다.
2장,‘일어나달려가기’에서는노드JS와몽고DB를위한개발환경을설정하는방법을설명한다.또한예제앱을구동해모든게제대로설정됐는지검증한다.
3장,‘노드와몽고DB의기초’에서는자바스크립트,노드JS,몽고DB의기초개념을알아본다.노드JS와그것을둘러싼다양한개념들을소개하고몽고DB와CRUD를위한기본셸에대해알아본다.
4장,‘익스프레스소개’에서는익스프레스와다양한컴포넌트를알아보고,프레임워크를사용해기본적인애플리케이션을개발할때어떻게체계를잡는지살펴본다.
5장,‘템플릿과핸들바’에서는템플릿엔진과핸들바의개념을소개한다.또한애플리케이션에서템플릿엔진으로어떻게핸들바를사용하는지보여준다.
6장,‘컨트롤러와뷰모델’에서는익스프레스의컨트롤러와뷰를붙여넣은예제애플리케이션의코드를어떻게구조화하는지보여준다.또한코드를여러가지모듈로나누고익스프레스프레임워크를도입해간접적으로MVC개념에대해알려준다.
7장,‘몽고DB로데이터저장’에서는개발중인노드JS애플리케이션에서어떻게몽고DB에접속하는지보여준다.또한몽구스(Mongoose)로가장잘알려진ODM의개념에대해서도소개한다.
8장,‘레스트풀API작성’에서는레스트풀(RESTful)API를소개하고,애플리케이션의레스트풀래퍼의중요성에대해서도언급한다.그리고애플리케이션을어떻게RESTAPI기반의애플리케이션으로변경하는지알려준다.
9장,‘코드테스트’에서는애플리케이션에서테스트를수행해야하는이유와코드를작성
할때테스트를용이하게하기위한유의사항을알려준다.
10장,‘클라우드기반서비스에서의배포’에서는개발한노드JS와몽고DB애플리케이션을배포하기위한여러가지옵션들을알아본다.또한시장에서선택가능한다양한PaaS솔루션들을비교해본다.
11장,‘잘알려진프론트엔드프레임워크와싱글페이지애플리케이션’에서는싱글페이지애플리케이션에대해논의하고,사용가능하고잘알려진프론트엔드프레임워크를분석해본다.사용가능한자동화도구나트랜스파일러같은측면에서프론트엔드개발을바라보게될것이다.
12장,‘유명한노드JS웹프레임워크’에서는애플리케이션을개발할때사용했던익스프레스JS외에,노드JS에서사용가능한다양한웹프레임워크를다룬다.Meteor,Sails,Koa,Hapi,Flatiron같은다양한웹프레임워크를분석한다.

★지은이의말★

노드JS와몽고DB는웹개발을위한개발스택으로매우빠르게성장하고있다.구글의V8엔진을사용하는노드JS는쉽게확장가능한네트워크애플리케이션을개발하도록돕고,몽고DB는확장가능한고성능의오픈소스NoSQL데이터베이스솔루션으로적합하다.이두가지기술을함께사용하면웹애플리케이션을빠르고쉽게클라우드에배포할수있다.
이책은개발환경을설정하는데필요한기초작업으로시작한다.여기서메인애플리케이션서버를구동하는데필요한절차를빠르게훑어본다.어떻게노드JS를몽고DB데이터베이스와연결해데이터조작을수행하는지알아본다.
웹앱에서사용하기위한서드파티툴을통합해본다음,개발시간을줄여줄재사용코드를생성하기위한뷰모델과컨트롤러사용법에대해알아본다.끝으로코드를적절히실행하기위한테스트와웹애플리케이션개발을위해잘알려진프레임워크에대해살펴볼것이다.
책의끝에다다를때쯤몽고DB와노드JS의잘알려진프레임워크들로개발된웹애플리케이션이완성될것이다.

★옮긴이의말★

소프트웨어개발은그자체로도발전속도가매우빠르지만,웹개발내부에서사용되는기술의변화는더욱빠르게일어난다.하지만개발자로살아가기로정한이상,두가지측면의지식모두익혀둬야만한다.웹이나소프트웨어엔지니어링에관한지식이기초체력이라고한다면,이책에서다루고있는노드JS나몽고DB같은기술은최신의응용기술로서분명히배워둘가치가있다.
노드JS의인기가있는이유는분명히자바스크립트가가지는비동기성때문이다.자바스크립트는싱글스레드로동작한다는것은잘알려진사실이다.그런상황에서동기로사용자입력을처리한다면AJAX응답이반환되기전까지스레드는블록돼있을것이다.자바스크립트덕분에우리는한층쾌적한웹브라우징경험을할수있다.
노드JS는기존서버프로그래밍언어를완전히대체하진못하지만특정문제를처리하는데특화돼있다.예를들어동시에대량클라이언트가접속해오는상황을C10K문제라고하는데,이런상황에서는노드JS는훌륭한해결책이될수있다.
노드JS가영역을넓혀가는사이에RDBMS의대안으로서NoSQL이떠오르고있었다.몽고DB는NoSQL에서도키-값스토어에속하는데,OOP와RDBMS사이의간격을지우거나,쓰기연산비중이높거나,저장하는데이터사이즈가클때처럼기존RDBMS로처리하기힘들거나DBA가없으면하기힘든일을애플리케이션개발자가약간의트레이드오프로수행할수있도록해준다.
이책을더의미있게읽는방법은'어떻게'보다'왜'에초점을맞추는것이다.최신버전을최대한따라잡으려고하고있지만워낙활발한커뮤니티고번역을거쳐서조금더늦게독자들에게전달되기때문에소개한예제들이구버전이돼있을수도있기때문이다.최신버전에너무연연하지않고안정버전을통해즐거운개발생활을즐길수있기를바란다.