Node.js 디자인 패턴 (모듈형의 확장 가능한 서버 측 어플리케이션 제작을 위한 | Node.js 최고의 지침서)

Node.js 디자인 패턴 (모듈형의 확장 가능한 서버 측 어플리케이션 제작을 위한 | Node.js 최고의 지침서)

$30.28
Description
한 차원 높은 웹 설계를 위한 Node.js 디자인 패턴 가이드
Node.js는 JavaScript를 사용하여 쉽게 확장 가능한 서버 측 어플리케이션을 만들 수 있는 매우 유용한 소프트웨어 플랫폼으로, 효율적인 코드 작성을 통해 설계 및 코드 분할을 가능하게 합니다.
이 책은 Node.js의 비동기 단일 스레드 아키텍처와 주요 디자인 패턴을 설명하고, 비동기식 제어 흐름 패턴과 스트림 구성 요소를 마스터하는 방법을 보여주며, 가장 일반적인 디자인 패턴의 Node.js 구현 목록과 Node.js 전용 특정 디자인 패턴으로 마무리됩니다. 또한 범용 JavaScript, 확장성과 같은 보다 진보된 개념들을 통해 Node.js를 사용하여 엔터프라이즈급 어플리케이션을 구축하기 위한 모든 필요한 개념들을 제공하고 있습니다. 이 책 전반에 걸쳐 LevelDb, Redis, RabbitMQ, ZMQ, Express와 같은 실제 라이브러리들과 기술들을 통해 다양한 패턴과 기법을 보여주며, 이를 통해 Node.js 생태계와 그 솔루션들에 대한 훌륭한 예시를 제공할 것입니다.
저자

MarioCasciaro

MarioCasciaro
MarioCasciaro는기술,과학그리고오픈소스에정통한소프트웨어엔지니어이자기업가입니다.Mario는소프트웨어엔지니어링석사학위를받고IBM에서전문경력을쌓기시작하여TivoliEndpointManager,CognosInsight및SalesConnect와같은다양한기업용제품에관련하여수년간근무했습니다.그리고성장중인SaaS회사인D4HTechnologies로이동하여비상운영을실시간으로관리하기위한새로운최첨단제품개발을이끌었습니다.현재는기업의후원을통해온라인프로젝트가자금을조달할수있도록돕는플랫폼인Sponsorama.com의공동창립자이자CEO입니다.

목차

1장.Node.js플랫폼에오신것을환영합니다

1.1Node.js철학
경량코어
경량모듈
작은외부인터페이스
간결함과실용주의

1.2Node.js6와ES2015에대한소개
let과const키워드
화살표함수
클래스구문
향상된객체리터럴
Map과SetCollection
WeakMap및WeakSetCollection
Template표기법
ES2015의기타기능들

1.3Reactor패턴
I/O는속도가느리다.
블로킹I/O
논블로킹I/O
이벤트디멀티플렉싱
Reactor패턴소개
Node.js의논블로킹엔진libuv
Node.js를위한구조

2장.Node.js필수패턴

2.1콜백패턴
연속전달방식
동기냐?비동기냐?
Node.js콜백규칙

2.2모듈시스템과그패턴
노출식모듈패턴
Node.js모듈설명
모듈정의패턴

2.3관찰자패턴
EventEmitter클래스
EventEmitter생성및사용
오류전파
관찰가능한객체만들기
동기및비동기이벤트
EventEmittervs콜백
콜백과EventEmitter의결합

3장.콜백을사용한비동기제어흐름패턴

3.1비동기프로그래밍의어려움
간단한웹스파이더만들기
콜백헬

3.2일반JavaScript의사용
콜백규칙
콜백규칙적용
순차실행
병렬실행
제한된병렬실행

3.3비동기라이브러리
순차실행
병렬실행
제한된병렬실행

4장.ES2015이후비동기식프로그램의제어흐름패턴

4.1프라미스(Promise)
프라미스란무엇인가?
Promises/A+구현
Node.js스타일함수프라미스화하기
순차실행
병렬실행
제한된병렬실행
공개API로콜백과프라미스노출하기

4.2제너레이터(Generator)
제너레이터의기본
제너레이터를사용한비동기제어흐름
순차실행
병렬실행
제한된병렬실행

4.3Babel을사용한비동기await
Babel의설치및실행

4.4비교

5장.스트림코딩

5.1스트림의중요성
버퍼링대스트리밍
공간효율성
시간효율성
결합성

5.2스트림시작하기
스트림의구조
Readable스트림
Writable스트림
양방향(Duplex)스트림
Transform스트림
Transform스트림구현

5.3스트림을사용한비동기제어흐름
순차실행
비순차병렬실행
제한된비순차병렬실행

5.4파이프패턴
스트림결합하기
스트림포크(Fork)하기
스트림병합(merge)하기
멀티플렉싱과디멀티플렉싱

6장.디자인패턴

6.1팩토리(Factory)
객체를생성하기위한제너릭인터페이스
캡슐화를강제하기위한메커니즘
간단한코드프로파일러작성하기
합성가능한팩토리함수
실전에서는어떻게사용되는가

6.2공개생성자(Revealingconstructor)
읽기전용이벤트이미터
실전에서는어떻게사용되는가

6.3프록시(Proxy)
프록시구현기술
다른기술의비교
Writable스트림로그작성
생태계에서의프록시-함수후크및AOP
ES2015Proxy
실전에서는어떻게사용되는가

6.4데코레이터(Decorator)
데코레이터구현기법
LevelUP데이터베이스장식하기

6.5어댑터(Adapter)
파일시스템API를통한LevelUP사용
실전에서는어떻게사용되는가

6.6전략(Strategy)
다중형식의환경설정객체
실전에서는어떻게사용되는가

6.7상태(State)
기본적인fail-safe-socket구현하기

6.8템플릿(Template)
환경설정관리자템플릿
실전에서는어떻게사용되는가

6.9미들웨어(Middleware)
미들웨어로서의Express
패턴으로서의미들웨어
ØMQ용미들웨어프레임워크만들기
Koa에서제너레이터를사용한미들웨어

6.10커맨드(Command)
유연한패턴
보다복잡한명령

7장.모듈연결

7.1모듈과의존성
Node.js의가장일반적인종속성
응집력과결합력
상태저장모듈

7.2모듈연결패턴
하드코드된종속성
의존성주입
서비스로케이터
의존성주입컨테이너

7.3연결(Wiring)을위한플러그인
패키지로서의플러그인
확장포인트
플러그인제어와어플리케이션제어확장
로그아웃플러그인구현하기

8장.웹어플리케이션을위한범용JavaScript

8.1브라우저와코드공유하기
모듈공유
ES2015모듈

8.2Webpack소개
Webpack의마력탐구
Webpack사용의이점
Webpack과함께ES2015사용하기

8.3크로스플랫폼개발의기본
런타임코드분기
빌드타임코드분기
모듈교환
크로스플랫폼개발을위한디자인패턴

8.4리액트(React)소개
첫번째React컴포넌트
JSX가뭐지?!
JSX변환을위한Webpack설정
브라우저에서렌더링하기
ReactRouter라이브러리

8.5범용JavaScript앱만들기
재사용가능한컴포넌트만들기
서버측렌더링
범용렌더링및라우팅
범용데이터조회

9장.고급비동기레시피

9.1비동기적으로초기화되는require수행모듈
전통적인솔루션
미리초기화된큐
실전에서는어떻게사용되는가

9.2비동기배치(일괄처리)및캐싱
캐싱또는일괄처리가없는서버구현
비동기요청일괄처리
비동기요청캐싱
프라미스를사용한일괄처리와캐싱

9.3CPU바운딩작업실행
부분집합의합문제해결
setImmediate를사용한인터리빙
멀티프로세스사용

10장.확장성과구조적패턴

10.1어플리케이션확장에대한소개
Node.js응용프로그램확장
확장성의세가지차원

10.2복제및로드밸런싱
클러스터모듈
상태저장통신다루기
역방향프록시를사용하여확장
서비스레지스트리사용
피어-투-피어로드밸런싱

10.3복잡한어플리케이션분해
단일(Monolitic)아키텍처
마이크로서비스아키텍처
마이크로서비스아키텍처의통합패턴

11장.메시징과통합패턴

11.1메시징시스템의기본사항
단방향및요청/응답턴
메시지유형
비동기메시징및큐
피어투피어또는브로커기반메시징

11.2게시/구독패턴
간단한실시간채팅어플리케이션만들기
메시지브로커로Redis사용하기
ØMQ를사용한피어투피어게시/구독
영구구독자

11.3파이프라인및작업배포패턴
ØMQ팬아웃/팬인패턴
AMQP의파이프라인과경쟁소비자

11.4요청(request)/응답(reply)패턴
상관관계식별자
반송주소