Top

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

  • 원서명Web Development with MongoDB and NodeJS - Second Edition (ISBN 9781785287527)
  • 지은이미툰 사티시(Mithun Satheesh), 브루노 조셉 드멜로(Bruno Joseph D’mello), 제이슨 크롤(Jason Krol)
  • 옮긴이조승진
  • ISBN : 9788960779990
  • 30,000원
  • 2017년 03월 31일 펴냄
  • 페이퍼백 | 328쪽 | 188*235mm
  • 시리즈 : acorn+PACKT

책 소개

요약

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

이 책에서 다루는 내용

■ 노드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를 소개하고, 애플리케이션의 레스트풀 래퍼의 중요성에 대해서도 언급한다. 그리고 애플리케이션을 어떻게 REST API 기반의 애플리케이션으로 변경하는지 알려준다.
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의 잘 알려진 프레임워크들로 개발된 웹 애플리케이션이 완성될 것이다.

지은이 소개

미툰 사티시(Mithun Satheesh)

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

브루노 조셉 드멜로(Bruno Joseph D’mello)

현재 Built.io에서 근무하고 있는 웹 애플리케이션 엔지니어다. 자바스크립트의 열렬한 지지자로, 여러 가지 웹 관련 기술과 그것들에 구현돼 있는 프로그래밍 패러다임에 대해서도 많은 관심을 갖고 있다.

제이슨 크롤(Jason Krol)

열정적인 웹 개발자로, 최신의 서버와 클라이언트 기술을 사용해 15년간 고도로 상호작용하는 웹 애플리케이션을 개발해왔다. 최근 몇 년간 노드JS, 몽고DB, 백본JS의 풀스택 자바스크립트를 이용한 싱글 페이지 애플리케이션SPA를 개발하는 데 집중해왔다. 성공적인 웹 개발 에이전시를 몇 년간 공동 소유 및 운영한 후에, 필라델피아 교외 지역의 이메일 마케팅 프로바이더인 AWeber 커뮤니케이션즈에 정착했다. 제이슨이 사이드 프로젝트를 진행하지 않거나 코드를 작성하지 않을 때는 자신의 개발 경험과 의견에 대해 블로그에(KrolTech.com) 글을 쓴다. 자유시간에는 아내와 8살 된 아들과 보내는 것을 좋아한다.

옮긴이의 말

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

옮긴이 소개

조승진

한국, 미국, 일본을 두루 거쳐 근무하고 있는 소프트웨어 엔지니어다. 관심 분야는 프로그래밍 언어, 알고리즘, 웹 서비스, 데이터 베이스, 마이크로서비스, 애자일 등이다. 쉬는 날에는 책을 읽거나 PS4를 플레이하며 부인과 이곳저곳 여행을 자주 다닌다.

목차

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

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

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

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

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

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

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

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

[p.92 : 본문 9행]
erorhandler
->
errorhandler