미티어 인 액션 [데이터 기반 웹 애플리케이션 핵심 개발 도구]
- 원서명Meteor in Action (ISBN 9781617292477)
- 지은이스테판 호츠하우스(Stephan Hochhaus), 마누엘 쇼벨 (Manuel Schoebel)
- 옮긴이고석범
- ISBN : 9788960779167
- 40,000원
- 2016년 11월 30일 펴냄 (절판)
- 페이퍼백 | 548쪽 | 188*235mm
- 시리즈 : 웹 프로페셔널
판매처
- 현재 이 도서는 구매할 수 없습니다.
책 소개
소스 파일은 아래 깃허브 페이지에서 내려 받으실 수 있습니다.
(https://github.com/AcornPublishing/meteor-in-action)
요약
미티어는 노드제이에스를 배경에 두면서 프런트에서 백엔드까지 모든 것을 자바스크립트 하나로 코딩할 수 있는 환경을 제공한다. 또한 반응성 프로그래밍(reactive programming)이라는 개념을 사용하기 때문에 데이터가 바뀌면 바로 자동으로 그 값이 반영되도록 설계돼 있어 기술적 프로그래밍(declarative programming)이 가능하여 적은 코드로도 많은 기능을 구현할 수 있다. 이 책은 미티어 스택의 핵심 부분, 즉 클라우드에서 각 액티브 유저로 새로운 정보를 발행하는 데이터 동기화 기술, 반응성 템플릿을 사용하여 데이터의 변화에 따라 스크린이 다시 디스플레이되게 하기, 이벤트와 폼, 미티어의 아이소모픽 유저 계정, 라우팅, 패키지, 보안 등을 모두 다루고 있다.
이 책에서 다루는 내용
■ 실시간 애플리케이션 개발
■ MongoDB와 기타 반응성 데이터 소스 사용
■ 아이언 라우터(Iron Router)를 가진 애플리케이션 개발
■ 애플리케이션 배치 및 스케일링
이 책의 대상 독자
이 책은 독자들이 적어도 기초적인 HTML, CSS, 자바스크립트에 대한 지식을 가지고 있다고 가정한다. 객체를 다루는 방법과 이전에 콜백을 사용한 경험을 가지고 있어야 하며 (반드시 필요한 것은 아니지만) 데이터베이스가 작동하는 기초 지식을 갖추고 있는 것이 좋다. 하지만 서버 사이드 자바스크립트나 Node.js에 대한 경험은 필요하지 않다.
이 책의 구성
이 책은 세 가지 부분으로 구성되어 있다.
1부에서는 플랫폼에 대한 고차원적인 개요를 제공한다. 여기서는 미티어 스택의 구성 요소와 주요 개념을 소개한다. 1장에서 Node.js, MongoDB, 아소모피즘, 반응성을 소개한 후, 2장에서 첫 미티어 애플리케이션을 만들어볼 것이다.
2부에서는 반응성 애플리케이션을 위한 기초 요소를 알려준다. 각 장은 애플리케이션을 만들 때 접하는 여러 가지 요소를 개별적으로 설명한다. 3장은 템플릿으로 시작하고, 4장은 데이터를 다루는 방법과 CRUD 연산에 대해 다루며, 5장은 이 둘을 결합해 반응성 인터페이스를 구성할 때 고려해야 할 점을 설명한다. 6장에서는 사용자와 관련된 기능을 설명하면서 보안이 적용된 애플리케이션을 만드는 방법을 소개한다. 7장에서는 미티어가 디폴트로 사용하는 자동화된 데이터 발행 기전을 설명한다. 이 장에서는 미티어 발행/구도 개념과 또다른 보안 레이어를 구축하기 위해 메서드를 사용하는 방법도 소개한다. 8장에서는 인기 있는 Iron Router 라이브러리를 사용해 클라이언트와 서버에서 모두 사용되는 라우팅 기능을 설명한다. 9장에서는 아이소팩, npm 패키지, 사용자 작성 패키지 등을 사용하여 미티어의 핵심 기능을 확장하는 방법을 설명한다. 10장은 비동기식 연산을 위한 서버 쪽 메서드와 외부 API에 접근하는 방법, 파일을 업로딩하는 방법을 살펴보면서 두 번째 파트를 마무리한다.
3부에서는 한 단계 더 나아가 애플리케이션을 정확하게 빌드하고 배치하는 방법을 다룬다. 11장에서는 미티어의 빌드 시스템, 코드 디버깅, 웹과 모바일 애플리케이션으로 전환시키는 방법을 설명한다. 마지막 12장에서는 미티어 애플리케이션을 출시하기 위한 여러 가지 측면들을 살펴본다.
이 책의 마지막에는 3개의 부록이 있다. 부록 A에서는 지원되는 모든 플랫폼에 미티어를 설치하는 방법을 설명하고, 부록 B에서는 MongoDB의 구성과 고가용성을 획득하기 위한 요소를 설명한다. 이 밖에 확장을 위하여 미티어가 사용하는 방법의 중요한 기술 중 하나인 오피로그 테일링(oplog tailing)을 설정하는 방법도 설명한다. 부록 C에서는 여러 미티어 서버들의 부하를 분산하는 방법, 정적인 콘텐츠를 서빙하는 방법, SSL을 가능할 수 있도록 하는 기능 등을 구현하기 위한 엔진엑스(nginx)의 역프록시(reverse proxy) 설정 방법을 설명한다.
목차
목차
- 1부. 와, 별똥별이다!
- 1장. 웹 앱을 만드는 더 나은 방법
- 1.1 미티어 소개
- 1.1.1 미티어의 비하인드 스토리
- 1.1.2 미티어 스택
- 1.1.3 아이소모픽 프레임워크: 풀-스택 자바스크립트
- 1.1.4 브라우저에서의 프로세싱: 분산된 플랫폼에서의 실행
- 1.1.5 반응성 프로그래밍
- 1.2 미티어는 어떻게 작동하는가?
- 1.2.1 코어 프로젝트
- 1.2.2 아이소빌드와 커맨드라인 툴
- 1.2.3 클라이언트 코드 대 서버 코드
- 1.3 장점과 단점
- 1.3.1 미티어가 빛을 발하는 경우
- 1.3.2 미티어의 과제
- 1.4 애플리케이션 만들기
- 1.4.1 새로운 프로젝트 설정하기
- 1.4.2 애플리케이션 시작하기
- 1.5 디폴트 프로젝트 분해하기
- 1.5.1 helloWorld.css
- 1.5.2 helloWorld.html
- 1.5.3 helloWorld.js
- 1.6 정리
- 1.1 미티어 소개
- 2장. 냉장고: 반응성 게임
- 2.1 애플리케이션 개요
- 2.2 초기 설정
- 2.2.1 새 프로젝트 설정
- 2.3 레이아웃 작성하기
- 2.3.1 스타일 설정하기
- 2.3.2 템플릿 추가하기
- 2.4 실시간으로 데이터베이스에 내용 추가하기
- 2.4.1 데이터베이스에 아이템 저장하기
- 2.4.2 데이터를 템플릿에 연결하기
- 2.4.3 초기 제품군 추가하기
- 2.5 냉장고 안에 아이템 넣기
- 2.5.1 제이쿼리-UI를 프로젝트에 추가하기
- 2.5.2 아이템의 드롭 타깃 정하기
- 2.5.3 아이템들을 드래그할 수 있도록 하기
- 2.6 meteor.com에 배치한 후 냉장고 앱 사용하기
- 2.7 정리
- 2부. 3, 2, 1 ― 충돌!
- 3장. 템플릿 다루기
- 3.1 템플릿에 대한 소개
- 3.2 템플릿 다루기
- 3.2.1 블레이즈(Blaze) 엔진
- 3.2.2 템플릿 파일 구성하기
- 3.3 동적인 HTML 템플릿 만들기
- 3.3.1 이중, 삼중 중괄호 태그(표현식)
- 3.3.2 인클루전 태그(파셜)
- 3.3.3 블록 태그
- 3.3.4 헬퍼
- 3.4 이벤트 핸들링
- 3.4.1 템플릿 이벤트 맵
- 3.4.2 이벤트 전파
- 3.4.3 브라우저 디폴트 행동 차단하기
- 3.5 템플릿 생애 주기
- 3.6 정리
- 4장. 데이터 다루기
- 4.1 미티어의 디폴트 데이터 소스
- 4.1.1 무엇이 데이터 소스를 반응성으로 만드는가?
- 4.1.2 반응성 데이터는 어떻게 함수와 연결되는가?
- 4.2 가사돌봄이 앱 만들기
- 4.2.1 템플릿 설정하기
- 4.2.2 데이터베이스 연결과 컬렉션 정의
- 4.3 Session 객체 다루기
- 4.3.1 Session 객체
- 4.3.2 선택된 드롭다운 값을 저장하기 위해 Session 사용하기
- 4.3.3 Tracker.autorun을 사용하여 반응성 맥락 만들기
- 4.4 MongoDB 컬렉션 다루기
- 4.4.1 MongoDB에서 도큐먼트 조회하기
- 4.4.2 미티어 컬렉션 다루기
- 4.4.3 컬렉션 초기화하기
- 4.4.4 컬렉션 조회하기
- 4.4.5 템플릿에 컬렉션 데이터 표시하기
- 4.4.6 컬렉션 데이터 업데이트
- 4.4.7 컬렉션에 새로운 데이터 삽입
- 4.4.8 컬렉션에서 데이터 삭제
- 4.5 정리
- 4.1 미티어의 디폴트 데이터 소스
- 5장. 완전한 반응성 편집
- 5.1 반응성 편집 작업 과정
- 5.2 반응성 프론트-엔드 대 DOM 조작
- 5.3 로컬 컬렉션에 변화를 스테이징하기
- 5.4 폼에 컬렉션 데이터 표시하기
- 5.4.1 #each 루프에 배열 인덱스 정보 추가하기
- 5.5 로컬 켈렉션을 사용한 반응성 업데이트
- 5.5.1 houseForm 템플릿을 위한 이벤트 맵
- 5.5.2 plantFieldset 템플릿을 위한 이벤트 맵
- 5.6 간단한 알림 시스템 구현하기
- 5.6.1 알림을 위한 템플릿 추가하기
- 5.6.2 status 프로퍼티 추가하기
- 5.6.3 Session 변수를 사용하여 알림을 트리거하기
- 5.7 정리
- 6장. 사용자 관리, 인증과 권한
- 6.1 사용자를 애플리케이션에 추가하기
- 6.1.1 패스워드 인증 기능 추가하기
- 6.1.2 등록과 패스워드 리셋
- 6.1.3 이메일 설정
- 6.2 OAuth를 사용한 사용자 인증
- 6.2.1 OAuth에 대한 소개
- 6.2.2 페이스북 인증을 통합하기
- 6.2.3 다른 OAutho 서비스 제공자 통합하기
- 6.3 사용자 허가 사항, 역할, 그룹 등의 관리
- 6.3.1 allow/deny를 사용하여 권한 관리하기
- 6.4 정리
- 6.1 사용자를 애플리케이션에 추가하기
- 7장. 데이터 교환
- 7.1 발행과 구독
- 7.1.1 publish()와 subscribe()
- 7.1.2 글로벌 구독
- 7.1.3 템플릿-레벨 구독
- 7.1.4 구독에 파라미터 전달하기
- 7.1.5 집계 데이터(aggregated data)를 클라이언트에만 존재하는 컬렉션으로 발행
- 7.1.6 집계된 발행을 반응성 데이터 소스로 만들기
- 7.1.7 사용자 아이디에 따라서 보이는 데이터 한정하기
- 7.2 미티어 메서드
- 7.1.2 insecure 패키지 삭제하기
- 7.2.2 메서드를 사용하여 컬렉션에 데이터 쓰기
- 7.3 정리
- 7.1 발행과 구독
- 8장. Iron.Router를 사용한 라우팅
- 8.1 웹 애플리케이션에서의 라우팅
- 8.2 클라이언트-사이드 라우팅
- 8.2.1 Iron.Router 추가하기
- 8.2.2 첫 번째 라우트 만들기
- 8.2.3 라우트에 의존하는 레이아웃 정의하기
- 8.2.4 라우트에 의존하는 데이터 맥락 설정
- 8.2.5 Iron.Router를 사용하여 데이터 구독
- 8.3 고급 라우팅 메서드
- 8.3.1 이름 붙여진 라우터와 링크 헬퍼 사용
- 8.3.2 더 나은 내비게이션 링크를 위해 액티브 라우트 다루기
- 8.3.3 외부 라이브러리 로딩 대기
- 8.3.4 라우터를 컨트롤러로 체계화하기
- 8.3.5 훅을 사용하여 라우트 프로세싱 기능 확장.
- 8.3.6 Iron.Router 플러그인 만들기
- 8.4 REST API를 가진 서버 사이드 라우팅
- 8.5 정리
- 9장. 패키지 시스템
- 9.1 모든 애플리케이션의 기초
- 9.2 아이소팩 사용하기
- 9.2.1 버전 솔버와 시맨틱 버전
- 9.2.2 패키지 찾기
- 9.2.3 아이소팩 추가와 삭제
- 9.2.4 패키지 업데이트하기
- 9.3 npm 패키지 사용
- 9.4 아이소팩 만들기
- 9.4.1 패키지 만들기
- 9.4.2 패키지 메타데이터 선언하기
- 9.4.3 패키지 기능 추가하기
- 9.4.4 tinytest를 사용하여 아이소팩 테스팅하기
- 9.4.5 공개하기
- 9.5 정리
- 10장. 고급 서버 메서드
- 10.1 Node.js 다시 보기
- 10.1.1 동기식 코드
- 10.1.2 비동기식 코드
- 10.2 파이버를 사용한 비동기식 함수
- 10.2.1 이벤트 루프에 멀티태스킹 기능 부여하기
- 10.2.2 wrapAsync를 사용하여 파이버에 콜백 바인딩
- 10.2.3 하나의 클라이언트에서 메서드 언블록킹하기
- 10.2.4 bindEnvironment를 사용하여 파이버 생성하기
- 10.3 외부 API통합하기
- 10.3.1 http 패키지를 사용하여 RESTful 호출 실행하기
- 10.3.2 API 쿼리를 위해 동기식 메서드 사용하기
- 10.3.3 API 쿼리를 위해 비동기식 메서드 사용하기
- 10.4 컬렉션으로 파일 업로딩하기
- 10.4.1 데이터베이스에 파일 업로딩하기
- 10.5 정리
- 10.1 Node.js 다시 보기
- 3부. 크레이터 남기기!
- 11장. 빌딩과 디버깅
- 11.1 미티어 빌드 프로세스
- 11.1.1 빌드 단계
- 11.1.2 --production 옵션을 사용하여 실행
- 11.1.3 로드 순서
- 11.1.4 패키지를 통해 빌드 단계 추가
- 11.1.5 커스텀 빌드 단계 추가
- 11.2 실행되는 애플리케이션에 접근하기
- 11.2.1 인터랙티브 서버 셸 사용
- 11.2.2 node-inspector를 사용하여 디버깅
- 11.3 브라우저 애플리케이션 만들기
- 11.3.1 1meteor.settings를 사용하여 애플리케이션 설정
- 11.3.2 미티어 프로젝트 빌드
- 11.4 모바일 애플리케이션 만들기
- 11.4.1 코르도바를 사용한 하이브리드 앱
- 11.4.2 모바일 플랫폼 추가
- 11.4.3 모바일 플랫폼 설정
- 11.4.4 모바일 기능 추가
- 11.5 정리
- 11.1 미티어 빌드 프로세스
- 12장. 출시
- 12.1 출시 준비
- 12.1.1 버전 관리자 사용
- 12.1.2 벨로시티(Velocity) 프레임워크를 가지고 테스팅하기
- 12.1.3 로드를 예측하고 테스팅하기
- 12.1.4 서버 관리
- 12.1.5 체크리스트
- 12.2 설정과 배치
- 12.2.1 metero.com을 이용한 간단한 배치
- 12.2.2 모든 것이 준비된 호스팅: 클라우드 서비스
- 12.2.3 완전한 유연성: 매뉴얼 설정
- 12.3 조각들을 연결하기
- 12.3.1 환경 변수
- 12.3.2 미티어를 MonogoDB에 연결하기
- 12.4 스케일링 전략
- 12.4.1 여유가 있는 능동-수동 고가용성
- 12.4.2 단일 요소로 구성된 배치
- 12.4.3 여유분과 부하 분산
- 12.4.4 방탄복과 같은 가용성
- 12.5 정리
- 12.1 출시 준비
- 부록 A. 미티어 설치
- A.1 요구사항
- A.2 리눅스와 맥 OS X에 미티어 설치하기
- A.3 윈도우에 미티어 설치하기
- A.4 Vagrant를 사용하여 미티어 실행하기
- 부록 B. MonogoDB의 구조
- B.1 MongoDB의 구성 요소들
- B.1.1 mongod: 데이터베이스와 샤드
- B.1.2 mongos: 쿼리 라우팅
- B.1.3 mongoc: 서버들에 대한 설정
- B.1.4 레플리카 셋
- B.2 MongoDB 설정
- B.1 MongoDB의 구성 요소들
- 부록 C. nginx 설정
- C.1 엔진 엑스를 사용한 부하 분산(load balancing)
- C.1.1 우분투에 nginx 설치하기
- C.1.2 데비안 7(Wheezy)에 설치하기
- C.2 부하 분산기 설정하기
- C.2.1 하나의 사이트 설정 파일 만들기
- C.2.2 미티어 서버 정의하기
- C.2.3 요청을 백엔드 서버들로 포워딩하기
- C.2.4 nginx 사이트 활성화하기
- C.3 엔진 엑스를 사용하여 정적인 콘텐츠 서빙하기
- C.3.1 CSS와 자바스크립트 파일 서빙
- C.3.2 미티어 파일들과 이미지들을 서빙하기
- C.3.3 gzip 압축 기능 추가하기
- C.4 엔진 엑스에 SSL 설치하기
- C.1 엔진 엑스를 사용한 부하 분산(load balancing)