간편결제, 신용카드 청구할인
네이버페이 1%
(네이버페이 결제 시 적립)
NH(올원페이)카드 12% (26,140원)
(3만원 이상 결제/최대 1만원 할인)
북피니언 롯데카드 30% (20,790원)
(최대할인 3만원 / 3만원 이상 결제)
하나SK 북&카드 30% (20,790원)
(최대할인 3만원 / 3만원 이상 결제)
EBS 롯데카드 20% (23,760원)
(최대할인 3만원 / 3만원 이상 결제)
인터파크 NEW 우리V카드 10% (26,730원)
(최대할인 3만원 / 3만원 이상 결제)
인터파크 현대카드 7% (27,630원)
(최대할인 3만원 / 3만원 이상 결제)
Close

Redis와 Node.js를 사용한 웹 애플리케이션 개발 : 클라우드 시대 웹 서비스의 확장성을 높이는

원제 : Building Scalable Apps with Redis and Node.js

2013년 9월 9일 이후 누적수치입니다.

판매지수 37
?
판매지수란?
사이트의 판매량에 기반하여 판매량 추이를 반영한 인터파크 도서에서의 독립적인 판매 지수입니다. 현재 가장 잘 팔리는 상품에 가중치를 두었기 때문에 실제 누적 판매량과는 다소 차이가 있을 수 있습니다. 판매량 외에도 다양한 가중치로 구성되어 최근의 이슈도서 확인시 유용할 수 있습니다. 해당 지수는 매일 갱신됩니다.
Close
공유하기
정가

33,000원

  • 29,700 (10%할인)

    1,650P (5%적립)

할인혜택
적립혜택자동적립
배송정보
주문수량
감소 증가
  • 이벤트/기획전

  • 연관도서(321)

  • 사은품(2)

책소개

이 책에서는 최근 많은 주목을 받고 있는 Node.js와 레디스(Redis)를 사용해 실제 웹 애플리케이션을 개발하기 위한 노하우를 전수하고 있다. 성공적인 웹 서비스를 개발하고 운영하기 위해 필수적인 운영 시스템의 확장성을 보장하기 위한 방법을 최신의 프레임워크인 Node.js를 사용해 웹 애플리케이션을 밑바닥에서부터 개발하는 실제 예를 통해 이슈와 해결 방법을 설명하고 있다. 또한 최근에 주목 받고 있는 메모리 기반 키-값 스토리지인 레디스에 대해서도 설명하고 있으며 이 외에도 웹 애플리케이션 개발에 필요한 여러 모듈과 툴을 소개하고 있다.

출판사 서평

[이 책에서 다루는 내용]
- 직접 익스프레스(Express) 모듈의 미들웨어 구축과 실행
- Socket.IO와 익스프레스 모듈을 통합하고 동일한 인증 방식 사용
- 비밀번호를 안전하게 로컬 스토어에 저장하는 방법
- 메시지 큐를 사용해 애플리케이션을 여러 부분으로 나눠 관리
- 레디스(Redis)로 서버들 간의 공유된 상태 만들기
- 백본(Backbone)과 Socket.IO, 리액트(React)로 빠르고 동적인 실시간의 프론트엔드 구축
- Grunt.js 태스크러너를 사용한 빌드 과정 자동화
- 클라우드 서버로 애플리케이션을 실행하는 배치 스크립트 작성

[이 책의 대상 독자]

'확장성(scalability)'이라는 단어가 낯설게 들린다면, 이 책을 꼭 읽어보기 바란다. 프레임워크에 대한 설명은 사전지식을 요구하지 않기 때문에 Node.js를 사용해 본 적이 많지 않아도 상관 없다. 확장성 있는 Node.js 애플리케이션을 곧 만들게 될 것이다! 자바스크립트는 알고 있어야 한다.

[이 책의 구성]


1장, '익스프레스를 사용한 백엔드 개발'에서는 익스프레스를 사용해서 페이지를 보여 주는 것을 배운다. 익스프레스는 완전한 기능을 갖춘 웹 애플리케이션 프레임워크로 소량의 코드를 작성해도 여러 가지 기능을 쓸 수 있게 해준다. 또, 이를 확장해 만든 탄탄한 미들웨어 시스템도 갖추고 있다. 미들웨어는 템플릿과 세션뿐 아니라 폼 데이터도 작업할 수 있게 해준다. 1장에서 애플리케이션의 토대를 만들고, 2장부터는 활용할 것이다.

2장, 'Socket.IO를 사용한 확장'에서는 웹소켓을 사용해 실시간 애플리케이션을 만드는 방법을 보여준다. 웹소켓은 사용자가 실시간으로 교신할 수 있게 해주는 동적 웹페이지 발전의 다음 단계다. 2장은 익스프레스 모듈로 만든 세션에 Socket.IO 모듈을 적용하는 예제를 보여준다.

3장, '사용자 인증'에서는 제대로 동작하는 로그인 페이지를 만드는 법을 보여 준다. 여기서 패스포트 프레임워크를 사용해 인증 함수를 만든다. 패스포트는 여러 프로바이더들과 연결할 커넥터를 만드는 데 주로 쓰인다. 커넥터들은 OAuth나 OAuth 2.0을 구현한다. 여러 OAuth 프로바이더들을 대상으로 커넥터를 직접 구현할 필요 없이 각 라이브러리가 처리한다. 로컬 패스워드를 안전하게 저장하는 방법도 알게 된다.

4장, 'RabbitMQ로 메시지 큐잉하는 법'에서는 메시지 큐(Queue)를 다룬다. 메시지 큐는 확장성 있는 애플리케이션의 필수 사항으로, 애플리케이션을 분해해서 복잡성이나 스코프를 처리할 수 있게 해준다. 4장에서 이에 대한 예제를 다루게 된다. 또한 사용자 각자의 메시지 큐를 만들어서 함수에 연결하는 방법도 알려 준다.

5장, '애플리케이션 데이터 저장소로 레디스 사용하기'에서는 레디스에 정보를 저장하고 회수하는 방법을 배운다. 레디스 데이터 스토리지 엔진은 관계형 데이터베이스와 다르기 때문에 꼭 배워야 한다. 관계형 데이터베이스처럼 생각하면 문제가 발생할 수 있다. 애플리케이션을 만들 때 주로 쓰는 커맨드뿐만 아니라 레디스가 메시지 큐를 수행하는 방법에 대해 배운다.

6장, '바우어를 사용한 프론트엔트 의존성 관리'에서는 애플리케이션의 프론트엔드 개발을 시작하는 방법을 배운다. 프론트엔드가 없는 애플리케이션은 없다. 여기서 쓸 프레임워크에 대해 알아보고 왜 그 프레임워크를 사용했는지 알게 될 것이다.

7장, 'DOM 이벤트를 위한 백본과 리액트 사용'에서는 프론트엔드의 중추 역할을 하는 백본을 다룬다. 브라우저에서 자바스크립트를 수행할 때 중요한 것 두 가지는 DOM 조작과 이벤트 응답이다. 실시간 이벤트의 리스너를 만드는 방법과 페이지와 상호 작용하는 방법을 배운다. 백본과 리액트로 지속 가능한 코드를 만들어 이를 수행한다.

8장, '애플리케이션 개발을 위한 자바스크립트 사용 사례'에서는 더 나은 자바스크립트 코드를 작성하는 법을 배운다. 스크립트 언어인 자바스크립트는 실수를 많이 해도 실행이 되는데, 이는 장점이기도 하고 단점이기도 하다. 하지만 세미콜론을 빼먹거나 런타임 오류가 발생하는 것은 알아야 한다. 이는 반복되는 빌드 시스템을 만들어 해결한다. 여러 모듈들을 보고 어떤 모듈은 코드에 적용하지 않을지 배운다.

9장, '배치와 확장성'에서는 로컬호스트 주소를 삭제하는 방법을 배운다. 배치할 때 실수로 어떤 단계를 빠트리는 경우가 많기 때문에 배치 스크립트를 제대로 만드는 것이 중요하다. 한 개 이상의 서버에 배치하는 법과 배치할 수 있는 여러 환경을 만드는 법을 배운다. 서버가 여러 개 있으면 수평 확장이 가능하므로 서버를 추가하기 쉬운 장점이 있다.

10장, '디버깅과 문제 해결'에서는 함수 호출 상태를 알아보는 방법에 대해 설명한다. console.log() 함수를 여러 군데 사용해 디버깅하기는 어렵기 때문이다. 또한 프론트엔드와 백엔드에서 메모리 누수를 탐지하는 법을 배운다. 크롬에서 자바스크립트 디버깅을 해 봤다면 10장에서 도움을 많이 받을 것이다.

목차

1장 익스프레스를 사용한 백엔드 개발
Node.js와 노드 패키지 관리자
노드에서 익스프레스 사용하기
익스프레스에서 미들웨어 사용하기
미들웨어 작성
믹스에 템플릿 추가
레이아웃
익스프레스에서 세션 사용하기
익스프레스에서 쿠키 사용하기
세션 추가하기
레디스를 세션 스토어로 사용하기
폼 처리
CSRF
매우 간단한 인증
앱의 설정 파일 설정
라우트 매핑
설정을 사용하도록 앱 수정하기
애플리케이션을 확장하는 방법
요약

2장 Socket.IO를 사용한 확장

노드 패키지 버전
간단한 Socket.IO 앱 만들기
패키지 설치
클라이언트 만들기
파이썬을 사용해 사이트 서버 구축하기
핑퐁
상호 작용 만들기
브라우저 부분 추가
액크놀리지먼트
메시지 브로드캐스팅
디스컨넥트 이벤트 사용하기
네임스페이스 만들기
네임스페이스 클라이언트 만들기
룸 추가
네임스페이스 또는 룸 사용하기
네임스페이스
네임스페이스 찾기
룸은 언제 사용하는가
룸 찾기
네임스페이스와 룸을 함께 사용하기
Socket.IO와 익스프레스를 함께 사용하기
설정에 Socket.IO 추가하기
당신은 누구인가
Socket.IO의 인증
애플리케이션 이벤트 추가
Socket.IO의 저장소로 레디스 사용하기
Socket.IO 내부 동작
WebSocket
2장에서 중요한 아이디어
요약

3장 사용자 인증하기

노드 패키지 버전
인증시스템 만드는 방법
페이스북 애플리케이션 등록하는 방법
페이스북을 인증하기 위해 Passport 모듈을 쓰는 방법
구글로 인증하는 방법
애플리케이션에 구글 인증 추가하기
더 많은 OAuth 프로바이더 추가
안전한 로컬 인증 추가
등록 추가
데이터베이스 추가하기
패스워드 스토어 이론
OAuth 프로세스
요약

4장 RabbitMQ로 메시지 큐잉하는 법

노드 패키지 버전
RabbitMQ 설치
Mac OS X에 인스톨하는 방법
RabbitMQ 관리 플러그인
리눅스에 인스톨하는 방법
윈도우에 인스톨하는 방법
처음으로 만든 메시지 큐
매니지먼트 인터페이스
메시지 보내기
메시지를 큐에 저장하기
다른 워커 추가
응답 메시지 보내기
StartServer 만들기
워커 만들기
실시간으로 카드 요금 청구 청구하기
PacktChat에 메시지 큐 추가
토픽 익스체인지
워커 만들기
RabbitMQ에서 큐에 메시지 저장
요약

5장 애플리케이션 데이터 저장소로 레디스 사용하기

노드 패키지 버전
레디스 설치하는 방법
Mac OS X에 설치하는 방법
리눅스에 설치하는 방법
윈도우에 설치하는 방법
레디스에서 데이터 구조 사용하기
간단한 레디스 애플리케이션 만드는 방법
레디스 스키마
해시 사용하기
레디스에서의 키
레디스의 지속성
레디스 키 삭제하기
메시지 큐로 레디스 사용하기
레디스를 PacktChat에 추가하기
레디스 구조 정하기
레디스 함수 만들기
레디스는 애플리케이션 상태를 위한 용도로 쓰인다
요약

6장 바우어를 사용한 프론트엔트 의존성 관리

노드 패키지 버전
바우어 설치와 사용
리액트 소개
백본 소개
백본 모델 사용
백본 컬렉션 사용
요약

7장 DOM 이벤트를 위한 백본과 리액트 사용

바우어 패키지 버전들
Socket.IO 마무리
리액트 컴포넌트 만들기
리액트 요약
백본 모델
모델과 Socket.IO 동기화
모델 생성
컬렉션 생성
백본 라우터
컬렉션과 뷰 합치기
CSS와 레이아웃 수정
새 워커 등록
애플리케이션 사용 시도
요약

8장 애플리케이션 개발을 위한 자바스크립트 사용 사례

노드 패키지 버전
테스트 환경 설정
코드 커버리지에 이스탄불 응용
다양한 환경 설정
투웰브 팩터 앱
config 파일 수정하기
환경 파일 생성
추가 환경 설정
그런트 소개
기본 그런트 파일 빌드
테스트 자동화
파일 전처리
그런트를 사용한 폴더 비우기
소스파일 JSHinting
코드 통합
코드 축소
그런트 요약
정적 파일과 CDN
S3 버킷 생성
파이썬과 가상환경 설치
새로운 툴 스크립트 생성
요약

9장 배치와 확장성

EC2 서버 생성
AWS EC2 요약
앤서블은 무엇인가
앤서블 설치
앤서블 롤 사용
RabbitMQ 설치
애플리케이션 설치
코드 배포
다중 애플리케이션 서버 로드 밸런싱
롤 자동화
앤서블 요약
새로운 환경 생성
확장성
확장성의 여러 가지 타입
수평 확장
수직 확장
요약

10장 디버깅과 문제 해결

노드 패키지
크롬 개발자 도구 사용
요소
네트워크
소스
타임라인
프로파일
리소스
감사
콘솔
요청 분석
디버깅
프론트엔드 디버깅
백엔드 디버깅
디버깅 요약
애플리케이션 CPU 프로파일링
힙 스냅샷 생성
프론트엔드 메모리 누수
메모리 누수 요약
요약

본문중에서

Node.js는 확장성 있는 앱을 만들 때 시작하기 매우 좋은 도구다.
비동기 I/O 방식이기 때문에 서버(예를 들면, 아파치)를 블록킹하는 것보다 더 많은 요청들을 동시에 수행할 수 있고, 이는 비동기 이벤트로 처리할 수 있다. 함수 호출은 블록을 발생시키지만, Node.js는 콜백으로 응답한다. Node.js를 토대로 확장성 있는 애플리케이션을 만들도록 해 주는 라이브러리들을 사용할 수 있다.
레디스(Redis)는 확장성 있는 애플리케이션을 만드는 데 필요한 주요 빌딩블록이다. 레디스가 Node.js에만 특화된 것은 아니지만 Node.js를 매우 잘 지원한다. 레디스는 앱을 실행하는 웹 서버들 간의 공유 메모리 역할을 한다. 레디스는 각 프레임워크에 대한 바인딩이 있는데, 이는 본문에서 다룰 것이다. 바인딩은 각 프레임워크의 데이터 저장소를 만들 때마다 환경 및 시스템 관리 측면에서 오버헤드가 발생하는 문제를 해결해준다.
이 책에서는 레디스와 Node.js를 하나로 통합해서 이해하기 쉽고 직관적인 프로젝트 가이드를 제시해준다. 그리고 아이디어에서부터 배포하는 과정까지 애플리케이션을 처음부터 만드는 방법을 알려 준다. 1장부터 7장까지는 개발 도중에 생기는 구체적인 문제 사례나 이슈를 다룬다. 8장에선 개발을 최적화하는 방법을 배운다. 9장과 10장에서는 구축한 사이트를 아마존 웹 서비스에 배포하는 과정을 다룬다. 또한 애플리케이션에서 발생하는 문제를 해결하고 디버깅하는 방법도 다룬다. 본문에선 한 가지 프로젝트만 다루지만, 각 장은 특정 기능이나 특정 주제별로 분리돼 있으므로 원하는 장만 읽어도 상관 없다. 그렇지만 1장부터 읽는 것을 추천한다. 처음부터 하나의 사이트를 만들기 때문에, 각 장 간에 연결성이 있기 때문이다. 코드 샘플 대부분은 다른 상황에서도 활용 가능하다.
개인적으로 자바스크립트로 백엔드를 개발하는 것은 새롭게 느껴진다. 처음 Node.js에 대해 듣고, 백엔드에 자바스크립트를 쓴다고 했을 때 처음 내 반응은 "뭣 때문에 그렇게 해야 되지?"였다.
나는 서버쪽 언어의 대부분(PHP와 루비, 파이썬, C# 닷넷)을 썼다. 웹 서버도 여러 가지(아파치, IIS, 내장 서버, Unicorn, Gunicorn 등)를 써봤다. 모든 최신 웹 애플리케이션이 자바스크립트를 사용한다는 이유 때문에 문법이 다른 언어에 대한 경계심을 갖게 된다(예를 들어 루비와 자바스크립트를 비교해보라). Node.js는 자바스크립트 모드에서 벗어나지 않고, 기존과 같은 설계 패턴과 같은 툴을 쓰게 해준다. 설정할 것이 많지 않다는 사실에 기쁠 것이다. Node.js 앱을 만들고 실행하면 된다. 이런 특징들로 인해 Node.js가 최고의 웹 애플리케이션 및 프레임워크 서버이고 내가 좋아하는 이유이기도 하다.
(/ '지은이의 말' 중에서)

성공적인 웹 서비스의 개발을 위해서는 서비스의 확장성이 매우 중요합니다. 서비스를 찾는 사람이 많아질수록 서버의 부담이 증가하게 되고 결국 웹 서버나 데이터베이스의 부담이 증가해 서비스 제공에 차질이 생기는 경우를 매우 많이 봐왔습니다. 최근 Node.js와 레디스에 대한 관심이 매우 커지고 있는 현재 상황은 이 기술들이 이와 같은 확장성 문제를 매우 훌륭하게 해결한 솔루션이라는 사실을 방증합니다. Node.js는 비동기적 이벤트 처리 방식을 사용해 웹 서버의 확장성을 획기적으로 개선했으며 개발자에게 친숙한 자바스크립트를 언어로 사용해 그 인기는 굳이 설명하지 않아도 될 것입니다. 또한 레디스 역시 데이터베이스 솔루션의 인지도를 반영해 순위를 발표하는 DB-Engines.com의 전체 데이터베이스 순위에서 10위(2015년 5월 기준)를 차지하고 있는 것을 보면 현재 레디스가 얼마나 주목을 받는 솔루션인지 알 수 있습니다. 따라서 이런 시점에서 이 책의 출판은 매우 반가운 일이 아닐 수 없습니다.
이 책은 웹 애플리케이션을 밑바닥에서부터 하나 하나 개발해 가는 과정을 통해 독자가 자연스럽게 확장성 있는 웹 애플리케이션의 개발을 위해 필요한 기술을 습득할 수 있도록 인도합니다. 많은 예제와 풍부한 설명을 통해 누구나 쉽게 내용을 이해하며 따라갈 수 있으며 웹 개발에 필요한 다양한 Node.js의 모듈과 관련 툴에 대해서도 배울 수 있습니다. 웹 애플리케이션 개발에 관심이 있는 사람이라면 이 책을 읽으며 개발 과정에 부딪힐 수 있는 여러 가지 이슈들과 이를 해결해나가는 여러 방법들을 접할 수 있는 소중한 경험이 될 것입니다.
(/ '옮긴이의 말' 중에서)

저자소개

조슈아 조하난(Joshua Johanan) [저] 신작알림 SMS신청 작가DB보기
생년월일 -
출생지 -
출간도서 0종
판매수 0권

현재 인디아나 주 사우스벤드에 거주 중인 웹 개발자이다. 5년의 웹 개발 경력이 있으며, PHP, 파이썬, 자바스크립트, C# 등으로 여러 사이트를 개발했고, 가장 선호하는 언어는 파이썬과 자바스크립트다. 이 언어들을 쓰면서, 젠드(Zend) 프레임워크, 장고(Django), 닷넷 MVC 등의 MVC 프레임워크를 사용하게 됐다.
이 책에서도 알 수 있듯이, 조슈아는 자바스크립트를 활용해, 백엔드에는 Node.js를 사용하고, 프론트엔드에는 백본(Backbone), 리액트(React), 제이쿼리(jQuery), 순수 자바스크립트 등 여러 가지 라이브러리를 사용했다. 현재 건강 보험 기관에서 C#으로

펼쳐보기
생년월일 -
출생지 -
출간도서 0종
판매수 0권

서울대학교 응용화학부를 졸업하고, 서울대학교 컴퓨터공학부 대학원에서 박사학위를 받았다. 2007년부터 2009년까지 티맥스소프트에서 근무하며, 티베로 관계형 데이터베이스 개발에 참여했다. 박사 과정 동안에는 대용량 그래프 데이터를 처리하는 기법을 연구했으며, 현재는 비트나인의 연구소장을 맡고 있으며 새로운 그래프 데이터베이스 엔진 개발에 몰두하고 있다. 에이콘출판사에서 출간한 [HBase 클러스터 구축과 관리]와 [정보 스토리지와 관리]를 번역했다.
에이콘출판사에서 출간한 [HBase 클러스터 구축과 관리](2012)와 [정보 스토리지와 관리 Information S

펼쳐보기

이 상품의 시리즈

acorn+PACKT 시리즈(총 351권 / 현재구매 가능도서 322권)

펼쳐보기

이 책과 내용이 비슷한 책 ? 내용 유사도란? 이 도서가 가진 내용을 분석하여 기준 도서와 얼마나 많이 유사한 콘텐츠를 많이 가지고 있는가에 대한 비율입니다.

    리뷰

    8.0 (총 0건)

    기대평

    작성시 유의사항

    평점
    0/200자
    등록하기

    기대평

    10.0

    교환/환불

    교환/환불 방법

    ‘마이페이지 > 취소/반품/교환/환불’ 에서 신청함, 1:1 문의 게시판 또는 고객센터(1577-2555) 이용 가능

    교환/환불 가능 기간

    고객변심은 출고완료 다음날부터 14일 까지만 교환/환불이 가능함

    교환/환불 비용

    고객변심 또는 구매착오의 경우에만 2,500원 택배비를 고객님이 부담함

    교환/환불 불가사유

    반품접수 없이 반송하거나, 우편으로 보낼 경우 상품 확인이 어려워 환불이 불가할 수 있음
    배송된 상품의 분실, 상품포장이 훼손된 경우, 비닐랩핑된 상품의 비닐 개봉시 교환/반품이 불가능함

    소비자 피해보상

    소비자 피해보상의 분쟁처리 등에 관한 사항은 소비자분쟁해결기준(공정거래위원회 고시)에 따라 비해 보상 받을 수 있음
    교환/반품/보증조건 및 품질보증 기준은 소비자기본법에 따른 소비자 분쟁 해결 기준에 따라 피해를 보상 받을 수 있음

    기타

    도매상 및 제작사 사정에 따라 품절/절판 등의 사유로 주문이 취소될 수 있음(이 경우 인터파크도서에서 고객님께 별도로 연락하여 고지함)

    배송안내

    • 인터파크 도서 상품은 택배로 배송되며, 출고완료 1~2일내 상품을 받아 보실 수 있습니다

    • 출고가능 시간이 서로 다른 상품을 함께 주문할 경우 출고가능 시간이 가장 긴 상품을 기준으로 배송됩니다.

    • 군부대, 교도소 등 특정기관은 우체국 택배만 배송가능하여, 인터파크 외 타업체 배송상품인 경우 발송되지 않을 수 있습니다.

    • 배송비

    도서(중고도서 포함) 구매

    2,000원 (1만원이상 구매 시 무료배송)

    음반/DVD/잡지/만화 구매

    2,000원 (2만원이상 구매 시 무료배송)

    도서와 음반/DVD/잡지/만화/
    중고직배송상품을 함께 구매

    2,000원 (1만원이상 구매 시 무료배송)

    업체직접배송상품 구매

    업체별 상이한 배송비 적용