Top

[풀 스택 엔지니어로 이끌어주는]
MEAN 스택을 사용한 모던 웹 개발 입문

  • 원서명Write Modern Web Apps with the MEAN Stack (ISBN 9780133930153)
  • 지은이제프 디키(Jeff Dickey)
  • 옮긴이박재호
  • ISBN : 9788960776753
  • 28,000원
  • 2015년 02월 17일 펴냄 (절판)
  • 페이퍼백 | 288쪽 | 188*235mm
  • 시리즈 : 웹 프로페셔널

판매처

  • 현재 이 도서는 구매할 수 없습니다.

책 소개

요약

전통적으로 웹 애플리케이션은 백엔드가 모든 프론트엔드 코드를 만들어내게 아키텍처를 수립해왔다. 하지만 이런 아키텍처를 기반으로 하면 관리와 확장이 어려운 복잡한 프로젝트가 만들어지고 만다. 이 책은 프론트엔드를 마치 모바일 클라이언트처럼 다루는 방식으로 웹 애플리케이션을 작성하는 새로운 방식을 설명한다. 구체적으로 MEAN 자바스크립트 플랫폼을 활용해 관리와 확장이 손쉬운 현대적인 웹 애플리케이션 작성부터 배포와 테스트에 이르기까지 전 개발주기를 설명한다. 웹 개발의 변천사에 이어 MEAN 스택의 장점을 소개한 다음에 MEAN을 구성하는 개별 요소에 대해 설명하고 나서 완벽한 자바스크립트 기반의 애플리케이션 개발로 뛰어든다. 이 책을 읽으면서 MEAN을 사용한 개발 환경 설정, 빌드, 테스트, 배포에 대한 기본기를 탄탄하게 다져보자!

이 책에서 다루는 내용

■ 자세한 설명, 풍부한 그림, 명쾌한 예제

■ MEAN 개발자로부터 얻는 통찰력 있는 우수 관례

■ 확장 가능한 고속 애플리케이션을 빠르게 만드는 방법 강조

이 책의 대상 독자

이 책은 웹 애플리케이션 구현의 변천사를 배우고 싶은 웹 개발자를 위한 책이다. 이 책은 독자에게 기초적인 자바스크립트 지식이 있다고 가정한다. 노드나 AngularJS에 대한 지식 은 도움이 되지만 필수 조건은 아니다.

보충 자료

MEAN 스택을 사용한 IoT 개발 예제를 설명합니다.

■ MEAN 스택 기본 내용 소개

■ Node.js와 Express를 활용한 간단한 CRUD 서버 작성 방법(아주 단순하지만 (인증을 제외한 나머지) RESTful 서버의 기본 내용을 구현함)

■ MongoDB와 Mongoose ODM를 사용한 영속적인 자료 저장 방법

■ AngularJS를 사용한 아주 간단한 모니터링 도구 구현(하지만 의존성 주입, 양방향 자료 결합, 라우팅 활용 방법이 모두 들어 있음)

■ 보충자료의 모든 예제는 아래의 bitbucket(git 호스팅 서비스) 링크에 공개되어 있습니다.

저자/역자 소개

저자 서문

나는 2004년부터 웹 개발자로 일해왔으며, 주요 웹 플랫폼 대다수에서 전문적인 개발을 진행해왔다. 애플리케이션 제작을 더 편하게 만들기 위한 새로운 기술 탐험을 좋아한다. AngularJS와 같은 MVC 프레임워크로 만든 애플리케이션은 지금까지 웹 공동체에서 목격한 패러다임 변화 중에 가장 급진적이었다. 많은 프레임워크와 도구들이 나타났다 사라졌지만, 클라이언트 쪽의 MVC 애플리케이션은 근본적으로 다르다. AngularJS와 노드를 사용해 출시한 애플리케이션의 품질에 감명을 받아왔다. AngularJS와 노드는 단순하며 어떤 경우에는 다소 소박하기도 하다. 하지만 이런 단순성에는 코드 기반을 유지하고 기능을 반복적으로 개선하기 위한 환상적인 능력이 따라온다. MEAN 스택으로 만든 애플리케이션은 점점 인기가 높아지고 있지만, 많은 개발 팀은 여전히 서버에서 생성된 페이지와 관계형 데이터베이스에 편안함을 느낀다. MEAN 애플리케이션을 개발한 행운을 토대로 여러 개발자들과 MEAN을 사용한 구축 지식을 공유하고 싶다. 애플리케이션 구축의 새로운 방법을 탐험하는 과정을 즐기기 바란다. 이런 주제에 대한 논의를 좋아하기에, 트위터에서 대화를 계속 나눌 수 있으면 좋겠다.

저자 소개

제프 디키(Jeff Dickey)

샌 프란시스코와 로스앤젤레스에서 여러 해에 걸쳐 스타트업 경력을 쌓았으며 전체를 다룰 줄 아는 풀 스택(full-stack) 웹 개발자다. 제프는 프로젝트를 성공리에 완수하고, 대규모 시스템을 유지 보수하며, 개발 팀을 이끌어왔다. 주요 웹 플랫폼 대다수에서 10년 이상 쌓은 경험을 토대로, 애플리케이션 제작에 필요한 최신 기술을 끊임없이 탐구하고 있다. 현재는 허로쿠(Heroku)에서 첫 CLI 개발자로 일하고 있다. 또한 제너럴 어셈블리(General Assembly)에서 백엔드 웹 개발 코스도 가르친다.

옮긴이의 말

자바스크립트 하면 웹브라우저부터 떠올리기 마련이다. 하지만 점점 영역을 넓혀서 요즘 자바스크립트는 임베디드 장비부터 애플리케이션 서버와 데이터베이스에 이르기까지 다양한 분야에서 맹활약 중이다. 일례로 TESSEL(http://www.tessel.io)은 자바스크립트를 구동하는 마이크로컨트롤러이며 노드 호환이 가능한 개발 환경을 갖춰 npm 패키지 형태로 다양한 디바이스 프로그래밍을 가능하게 만든다.

bonescript(http://beagleboard.org/support/bonescript)는 비글본(Beaglebone) 보드에 최적화된 Node.js 라이브러리로 아두이노(Arduino) 함수 호출 방식으로 임베디드 프로그램을 작성하게 도와준다. 풀 스택(full stack)을 기치로 내걸어 웹부터 데이터베이스까지 모든 프로그래밍을 자바스크립트로 가능하게 만들었으며, 이제 임베디드 단말까지 자바스크립트로 프로그래밍이 가능한 세상이 도래했다. 이런 변화는 개발자에게 상당히 큰 의미를 부여한다. 과거에는 임베디드 프로그램은 C, 웹 서비스/애플리케이션 개발은 PHP나 루비 등의 인터프리터 또는 기업용 환경에 적합한 자바, 웹 브라우저 프로그래밍은 자바스크립트(그리고 HTML5와 CSS), 데이터베이스 질의는 SQL 등으로 명확하게 나뉘어졌지만 이제는 모두 자바스크립트로 가능하기 때문이다. C와 비교할 수 없는 범용성을 자랑하는 자바스크립트라는 언어가 등장했으므로 프로그래밍 언어 학습에 따른 부담이 줄어들었다.

자, 그렇다면 서비스 개발자 입장에서 편재적인 자바스크립트를 사용해 웹브라우저부터 애플리케이션 서버를 거쳐 데이터베이스에 이르기까지 빠른 시간 내에 애플리케이션을 개발하려면 어떻게 해야 할까? 대답은 바로 MEAN이다. MEAN은 몽고DB(MongoDB), 익스프레스(Express), AngularJS, 노드(Node.js)의 첫 글자를 따서 만들었으며, 과거 웹 개발에 유명했던 LAMP(리눅스Linux, 아파치Apache, MySQL, PHP(또는 펄Perl))에 비견할만한 지위를 갖추고 있다. MEAN과 LAMP의 공통점은 구성 요소가 모두 오픈소스라는 점이고 차이점은 여러 가지 언어가 복잡하게 얽힌 LAMP와 달리 MEAN에서는 처음부터 끝까지 자바스크립트만 사용해서 프로그램이 가능하다는 점이다.

이 책은 (자바스크립트에 대한 기초 지식은 어느 정도 알고 있지만) MEAN 스택을 처음 접하는 사람에게 적합한 구성을 택하고 있다. 트위터 피드와 유사한 소셜 앱을 구축하려는 큰 목표를 중심으로 단계별로 글 쓰기, 글 읽기, 데이터베이스 설정, 인증과 로그인, 웹소켓으로 상호 대화성 높이기, NPM(서버 단)과 바우어(클라이언트 단) 패키지 관리 시스템을 사용한 의존성 관리, 빌드 자동화, 통합 테스트, 서버와 클라이언트 단위 테스트 방법을 설명한다. 그리고 마지막에는 PaaS와 IaaS에 배포하는 방법으로 마무리한다. 웹 브라우저 단에서 데이터베이스 단까지 전체를 다룰 뿐만 아니라, 구현부터 배포에 이르기까지 반드시 필요한 다양한 도구와 기법을 설명하고 있으므로 빠른 시간 내에 자바스크립트를 사용한 서버와 클라이언트 구현이 필요한 개발자에게 많은 도움이 될 것으로 확신한다.

이 책을 읽고 나서 MEAN에 대한 감을 잡으면 각각의 기술에 대해 세부적으로 파고들 필요가 있다. 비동기식 프로그래밍, 사건 구동 방식, MVVM(Model -View-ViewModel), 의존성 주입, 의존성 관리와 같은 복잡한 개념으로 인해 학습 곡선이 상당히 가파르기 때문이다. 다행스럽게도 최근에는 노드뿐만 아니라 AngularJS에 대한 저서와 번역서들도 많이 출간되고 있기 때문에 필요한 정보를 얻기에 어려움이 없을 것이다. 아무쪼록 MEAN 스택을 사용해 생산성을 높이고 성능과 확장성도 덤으로 얻는 좋은 성과를 얻기 바란다. 새로운 개발 세상에 온 독자 여러분을 환영한다!

옮긴이 소개

박재호

포항공과대학교 컴퓨터공학과 학부와 컴퓨터공학과 대학원을 졸업했다. 블로그 ‘컴퓨터 vs 책(http://jhrogue.blogspot.com)’을 운영하고 있다. 옮긴 책으로 에이콘출판사에서 펴낸 『조엘 온 소프트웨어』, 『초난감 기업의 조건』, 『리눅스 시스템 관리 완벽 가이드』, 『코드로 읽는 리눅스 디바이스 드라이버』, 『악성코드와 멀웨어 포렌식』, 『아파치 Solr 4 구축과 관리』 등이 있다.

목차

목차
  • 1장. 새로운 모던 웹 아키텍처의 변화
    • 정적인 앱의 등장
      • Ajax로 강화된 자바스크립트
      • 점진적인 향상
      • 스파게티 자바스크립트
      • 모바일 API
    • 무거운 클라이언트 세상으로
      • 모던 웹 아키텍처의 동작 방식
      • 모던 웹 아키텍처의 장점

  • 2장. 자바스크립트가 모던 앱을 위한 좋은 선택인 이유
    • AngularJS란 무엇인가
      • AngularJS는 제이쿼리와 어떻게 다른가
    • 노드란 무엇인가
      • 스타트업 VS 기업
      • 기업 환경에서 노드
      • 노드의 성능
      • 이벤트 아키텍처
      • 콜백 동작 방식
      • 모듈과 NPM
      • 노드 설치
      • 평범한 HTTP 서버 만들기
    • 익스프레스란 무엇인가
      • 익스프레스 설치
      • 노드를 위한 데이터베이스
    • 몽고DB란 무엇인가
      • 문서 중심
      • BSON
      • 자동 샤딩을 사용한 수평 확장
      • 스키마 부재
      • 몽고DB 설치
      • 몽고DB 사용
      • 다큐먼트 삽입
      • 다큐먼트 질의

  • 3장. 소셜 네트워크 프로젝트 소개
    • 최신 글을 보여주기 위한 정적 모형 페이지 생성
    • 페이지를 AngularJS화 하기
    • 새로운 글 추가
    • 정리

  • 4장. 노드 API 구축
    • 기본적인 종단점
    • API로 글 올리기
    • 몽구스로 몽고DB 모델 생성
    • POST 종단점에서 몽구스 모델 사용
    • 정리

  • 5장. 노드와 AngularJS 통합
    • $http
      • 프라미스란
    • $http를 사용해 API로 글 읽기
    • 노드를 사용한 posts.html 제공
    • $http를 사용해 API로 글 저장하기
    • 글 순서 고치기
    • server.js 정리
      • /api/posts 분리하기
      • 이름공간으로 라우터 경로 지정
      • sendfile 종단점 분리
    • AngularJS 정리
      • 정적 자산 제공
      • AngularJS를 서비스로 분리하기
    • 정리

  • 6장. 걸프를 사용한 빌드 자동화
    • 그룬트와 걸프 소개
    • Gulp Hello World
    • 걸프를 사용한 자바스크립트 빌드
      • Uglifier
      • 파일 변경에 따른 재빌드
      • 소스 지도
    • 걸프를 사용한 CSS 빌드
    • 걸프 dev 작업
      • Gulp-Nodemon
    • 그 밖의 걸프 플러그인
    • 정리

  • 7장. 노드로 인증 구현
    • 토큰 인증 소개
    • JWT(JSON Web Token)
      • 익스프레스와 함께하는 JWT
      • 비밀번호 인증
    • BCrypt 사용
    • 몽고DB로 인증
    • 정리

  • 8장. 라우팅과 클라이언트 인증 추가
    • 라우팅
    • 로그인 폼 생성
    • 익스프레스 인증
    • AngularJS 이벤트
    • 소셜 글 인증
    • HTML5 pushstate
    • 등록
    • 로그아웃
    • 기억하기
    • user 외래 키
    • 정리

  • 9장. 웹소켓을 사용한 푸시 통지
    • 웹소켓 소개
    • 웹소켓 동작 방식
    • 웹소켓을 어디에 사용해야 하는가
    • 소셜 앱에서 웹소켓 구현
      • ws 웹소켓에 연결
      • 새로운 글 통지
    • AngularJS에서 웹소켓 구현
    • 웹소켓 아키텍처
      • 재접속
      • 보안
      • 다중 프로세스/다중 서버 설계
      • 클라이언트에서 온 이벤트 전달
    • 동적 웹소켓 호스트 이름
    • 정리

  • 10장. 종단간 테스트 수행
    • 프로트랙터 설정
    • 자바스크립트 테스트 프레임워크
    • 기본적인 프로트랙터 테스트 작성
      • 프로트랙터 구성과 동작
      • 프로트랙터 내부에서 노드 시작
      • 프로트랙터 위치 탐지기
      • navbar의 로그인 링크 누르기
      • 프로트랙터로 실제 글을 올리기
      • 프로트랙터 실행 후에 데이터베이스 삭제하기
    • 프로트랙터 결과 비교
    • chai-as-promised
    • 종단간 테스트를 사용해야 할 시점
    • 정리

  • 11장. 노드 서버 테스트
    • 완전하지 않은 단위 테스트
    • 노드를 위한 모카
    • post 컨트롤러
    • SuperTest
    • 기본 라우터
    • SuperTest로 기반 라우터 사용
    • 컨트롤러 테스트에서 모델 점검
    • 컨트롤러에서 인증 테스트
    • 코드 커버리지
    • npm test 명령
    • JSHint
    • 정리

  • 12장. AngularJS 테스트
    • 카르마 사용
    • 바우어 사용
    • 카르마 설정
    • 기본적인 카르마 서비스 테스트
    • 카르마를 사용한 HTTP 테스트
    • 카르마 컨트롤러 테스트
    • 스파이 테스트
    • 정리

  • 13장. 허로쿠에 배포
    • 서비스로서 플랫폼
    • 허로쿠 동작 방식
    • 앱을 위한 12가지 요소 방법론
    • 애플리케이션을 허로쿠에 배포
    • 허로쿠에서 몽고DB 사용
    • 허로쿠에서 레디스
    • 자산 컴파일
    • 노드 클러스터
    • 정리

  • 14장. 디지털 오션에 배포
    • 디지털 오션이란?
    • 단일 서버 대 다중 서버 아키텍처
    • 페도라 20
    • 서버 생성
    • 노드 설치
    • 몽고DB 설치
    • 레디스 설치
    • 소셜 앱 서비스하기
    • systemd 아래에서 소셜 앱 서비스하기
    • 무중단 배포
    • 다중 서버 이주
      • 부하 분산
      • 중앙집중화된 데이터베이스
      • 사설 네트워크
    • 정리
    • 결론

도서 오류 신고

도서 오류 신고

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

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

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