본문 바로가기

도서 소개

NestJS로 배우는 백엔드 프로그래밍

가장 진보한 프레임워크로 우아하게 백엔드 입문하기

 

도서구매 사이트(가나다순)

  [교보문고]  [도서11번가]  [알라딘]  [예스이십사]  [인터파크]  [쿠팡

 

출판사 제이펍
저작권사 제이펍
원서명 (없음)
도서명 NestJS로 배우는 백엔드 프로그래밍
부제 타입스크립트 환경의 차세대 서버 프레임워크를 만나다
지은이 한용재
옮긴이 (없음)
감수자 (없음)
시리즈 (없음)
출판일 2022. 12. 20
페이지 312쪽
판 형 46배판변형(188*245*15.5)
제 본 무선(soft cover)
정 가 27,000원
ISBN 979-11-92469-56-0 93000
키워드 Nest, 백엔드, Node, Express, ORM, 타입스크립트, 인증, CQRS, 아키텍처, 테스트
분 야 자바스크립트 / 서버

 


관련 사이트
NestJS 공식 사이트

관련 포스트

2022.12.02 - [출간 전 책 소식] - NestJS, 그게 뭔가요? 우걱우걱

 

관련 시리즈

■ (없음)

 

관련 도서

■ (없음)

 

관련 파일 다운로드 

 https://github.com/dextto/book-nestjs-backend

 

교재 검토용 증정 안내
■ 학교 및 학원에서 교재 선정을 위해 책을 파일로 검토해보고자 하는 분들은 다음 페이지에서 신청 양식을 작성해주시기 바랍니다. 확인 후 연락을 드리겠습니다. https://goo.gl/vBtPo3

강의 보조 자료(교재로 채택하신 분들은 메일(textbook@jpub.kr)을 보내주시면 다음 자료를 보내드립니다.)
■ 본문의 그림과 표

 

미리보기(차례, 베타리더 후기, 머리말, 이 책에 대하여, 1장, 2장 일부)

 

정오표 페이지
https://jpub.tistory.com/1361

 

 

도서구매 사이트(가나다순)

  [교보문고]  [도서11번가]  [알라딘]  [예스이십사]  [인터파크]  [쿠팡

 

도서 소개

차세대 프레임워크와 함께 더 강력한 Node.js 서버 사이드 애플리케이션 구축하기

Express.js가 전부는 아니다. 백엔드 프레임워크도 진화하고 있다. 국내에서도 모두싸인과 당근마켓 등에서 사용하는 NestJS는 ‘효율적이고 신뢰할 수 있으며 확장 가능한 서버 사이드 애플리케이션 구축’을 내세운 차세대 프레임워크다. Fastify 또는 Express 위에 DB, ORM, 유효성 검사 등을 내장했고, 제어 반전, 의존성 주입, AOP 같은 객체 지향 개념을 도입했으며, 무엇보다 타입스크립트를 사용해 우아하게 모듈/컴포넌트 기반의 프로그래밍을 할 수 있다.

 

이 책은 NestJS 예제 프로젝트로 회원 가입, 이메일 인증, 로그인, 회원 정보 조회 기능을 갖춘 REST API 유저 서비스를 처음부터 끝까지 만들어본다. 이런 단순한 프로젝트라도 제대로 만들려면 환경 변수 설정, 요청 유효성 검사, 인증/인가, 로깅, 헬스 체크, CQRS, 클린 아키텍처, 단위 테스트 등 알아야 할 지식과 기술이 많다. 이에 프로젝트에 차근차근 살을 붙여나가며, 이러한 백엔드 개발에 필요한 지식과 기술을 코드로 익힐 수 있게 집필했다.

 

저자가 모두싸인에 몸담으며 익힌 노하우와 인사이트를 바탕으로, NestJS의 핵심 기능과 원리를 충실히 설명하는 동시에 가용성, 복원성, 확장성을 갖춘 시스템을 구축하기 위한 단단한 초석을 제공한다.

 

주요 내용

  • Node.js, 이벤트 루프, 타입스크립트 데커레이터 등 웹 개발 기초 지식
  • 프로젝트에 적용하며 배우는 인터페이스, 프로바이더, 파이프, 미들웨어/인터셉터, 모듈
  • 환경 변수 구성, 파이프와 유효성 검사, JWT 인증/인가, 영속화 등 백엔드 필수 기술
  • 안정적인 서비스 제공을 위한 로깅, 예외 필터, 태스크 스케줄링, 헬스 체크
  • CQRS, 클린 아키텍처, 테스트 자동화로 확장 가능한 모델 구축

 

 

지은이 소개

한용재

오랜 기간 휴대폰에 탑재되는 소프트웨어를 만들다 현재는 모두싸인에서 백엔드 엔지니어로 활동 중이다. 모토는 일신우일신(日新又日新)이고 영화와 교양 과학 서적을 좋아한다.

 

 

차례

베타리더 후기 x 머리말 xii 이 책에 대하여 xiii

 

CHAPTER 1 Hello NestJS 1

1.1 NestJS의 장점 1

1.2 Express가 좋을까, NestJS가 좋을까 2

1.3 NestJS 설치 6

__1.3.1 Node.js 설치 6 / 1.3.2 NestJS 프로젝트 생성 7

1.4 책에서 만들 애플리케이션: 유저 서비스 9

 

CHAPTER 2 웹 개발 기초 지식 13

2.1 웹 프레임워크 13

2.2 Node.js 16

2.3 이벤트 루프 18

2.4 패키지 의존성 관리 21

__2.4.1 package.json 21 / 2.4.2 package-lock.json 23 / 2.4.3 package.json 파일 분석 23

2.5 타입스크립트 25

__2.5.1 변수 선언 26 / 2.5.2 타입스크립트에서 지원하는 타입 27

__2.5.3 타입 정의하기 29 / 2.5.4 타입 구성하기 30

2.6 데커레이터 32

더보기

__2.6.1 데커레이터 합성 34 / 2.6.2 클래스 데커레이터 35 / 2.6.3 메서드 데커레이터 36

__2.6.4 접근자 데커레이터 38 / 2.6.5 속성 데커레이터 39 / 2.6.6 매개변수 데커레이터 40

__2.6.7 데커레이터 요약 42

쉬어 가는 페이지 백엔드 로드맵 43

 

CHAPTER 3 애플리케이션의 관문: 인터페이스 45

3.1 컨트롤러 45

__3.1.1 라우팅 47 / 3.1.2 와일드 카드 사용 48 / 3.1.3 요청 객체 48 / 3.1.4 응답 49

__3.1.5 헤더 52 / 3.1.6 리디렉션 54 / 3.1.7 라우트 매개변수 55

__3.1.8 하위 도메인 라우팅 56 / 3.1.9 페이로드 다루기 58

3.2 유저 서비스의 인터페이스 59

쉬어 가는 페이지 관점 지향 프로그래밍 64

 

CHAPTER 4 핵심 도메인 로직을 포함하는 프로바이더 65

4.1 프로바이더 65

4.2 프로바이더 등록과 사용 67

__4.2.1 프로바이더 등록 67 / 4.2.2 속성 기반 주입 67

4.3 유저 서비스에 회원 가입 로직 구현하기 70

__4.3.1 UsersService 프로바이더 생성 70 / 4.3.2 회원 가입 71

__4.3.3 회원 가입 이메일 발송 73 / 4.3.4 이메일 인증 77

__4.3.5 로그인 77 / 4.3.6 유저 정보 조회 78

쉬어 가는 페이지 스코프 79

심화 학습 1 커스텀 프로바이더 82

 

CHAPTER 5 SW 복잡도를 낮추기 위한 모듈 설계 91

5.1 모듈: 응집성 있는 설계 91

__5.1.1 모듈 다시 내보내기 92 / 5.1.2 전역 모듈 94

5.2 유저 서비스의 모듈 분리 95

__5.2.1 UsersModule 분리 95 / 5.2.2 EmailModule 분리 96

 

CHAPTER 6 동적 모듈을 활용한 환경 변수 구성 99

6.1 동적 모듈 99

6.2 dotenv를 이용한 Config 설정 99

6.3 Nest에서 제공하는 Config 패키지 102

6.4 유저 서비스에 환경 변수 구성하기 105

__6.4.1 커스텀 Config 파일 작성 105 / 6.4.2 동적 ConfigModule 등록 106

쉬어 가는 페이지 의존성 주입과 제어 반전 110

 

CHAPTER 7 파이프와 유효성 검사: 요청이 제대로 전달되었는가 113

7.1 파이프 113

7.2 파이프의 내부 구현 이해하기 116

7.3 유효성 검사 파이프 만들기 117

7.4 유저 서비스에 유효성 검사 적용하기 120

__7.4.1 유저 생성 본문의 유효성 검사 120 / 7.4.2 class-transformer 활용 121

__7.4.3 커스텀 유효성 검사기 작성 124

쉬어 가는 페이지 인증 vs 인가 127

 

CHAPTER 8 영속화: 데이터를 기록하고 다루기 131

8.1 MySQL 데이터베이스 설정 131

8.2 TypeORM으로 데이터베이스 연결 134

8.3 회원 가입을 요청한 유저의 정보 저장하기 138

8.4 트랜잭션 적용 141

__8.4.1 QueryRunner를 사용하는 방법 142

__8.4.2 transaction 함수를 직접 이용하는 방법 143

8.5 마이그레이션 144

쉬어 가는 페이지 저장소 패턴 151

 

CHAPTER 9 요청 처리 전에 부가 기능을 수행하기 위한 미들웨어 153

9.1 미들웨어 153

9.2 Logger 미들웨어 154

9.3 MiddlewareConsumer 155

9.4 전역으로 적용하기 157

 

CHAPTER 10 권한 확인을 위한 가드: JWT 인증/인가 159

10.1 가드 159

10.2 가드를 이용한 인가 160

__10.2.1 실행 콘텍스트 160 / 10.2.2 가드 적용 161

10.3 인증 162

__10.3.1 세션 기반 인증 163 / 10.3.2 토큰 기반 인증 164

10.4 JWT 165

__10.4.1 헤더 166 / 10.4.2 페이로드 166 / 10.4.3 시그너처 167

10.5 유저 서비스의 이메일 인증 처리와 JWT 발급 169

__10.5.1 회원 가입 이메일 인증 169 / 10.5.2 로그인 172

__10.5.3 JWT 인증: 회원 정보 조회 173 / 10.5.4 가드를 이용한 인가 처리 175

쉬어 가는 페이지 슬라이딩 세션과 리프레시 토큰 178

심화 학습 2 커스텀 매개변수 데커레이터 181

심화 학습 3 메타데이터(Reflection 클래스) 186

 

CHAPTER 11 로깅: 애플리케이션의 동작 기록 193

11.1 내장 로거 194

__11.1.1 로깅 비활성화 195 / 11.1.2 로그 레벨 지정 195

11.2 커스텀 로거 196

__11.2.1 커스텀 로거 주입해서 사용하기 197 / 11.2.2 커스텀 로거를 전역으로 사용하기 198

__11.2.3 외부 로거 사용하기 198

11.3 유저 서비스에 winston 로거 적용하기 199

__11.3.1 nest-winston 적용 199 / 11.3.2 내장 로거 대체하기 202

__11.3.3 부트스트래핑까지 포함하여 내장 로거 대체하기 204

__11.3.4 로그 전송을 다양하게 206

 

CHAPTER 12 모든 것은 항상 실패한다: 예외 필터 209

12.1 예외 처리 209

12.2 예외 필터 214

12.3 유저 서비스에 예외 필터 적용하기 217

 

CHAPTER 13 인터셉터로 요청과 응답을 입맛에 맞게 바꾸기 219

13.1 인터셉터 219

13.2 응답과 예외 매핑 222

13.3 유저 서비스에 인터셉터 적용하기 224

쉬어 가는 페이지 요청 생명주기 226

 

CHAPTER 14 태스크 스케줄링 229

14.1 @nestjs/schedule 패키지 229

14.2 태스크 스케줄링을 선언하는 3가지 방식 230

__14.2.1 크론 잡 선언 방식 230 / 14.2.2 인터벌 선언 방식 232 / 14.2.3 타임아웃 선언 방식 233

14.3 동적 태스크 스케줄링 233

 

CHAPTER 15 헬스 체크: 댁의 서버는 건강하신가요 237

15.1 Terminus 적용 238

15.2 헬스 체크 238

15.3 TypeOrm 헬스 체크 240

15.4 커스텀 상태 표시기 241

 

CHAPTER 16 CQRS를 이용한 관심사 분리 247

16.1 CQRS 패턴 247

16.2 유저 서비스에 CQRS 적용하기 249

__16.2.1 커맨드 249 / 16.2.2 이벤트 251 / 16.2.3 쿼리 254

 

CHAPTER 17 클린 아키텍처 257

17.1 클린 아키텍처 259

17.2 SOLID 객체 지향 설계 원칙 261

17.3 유저 서비스에 클린 아키텍처 적용하기 262

 

CHAPTER 18 테스트 자동화 273

18.1 소프트웨어 테스트 273

18.2 Nest의 기본 테스트 프레임워크: Jest와 SuperTest 276

18.3 Jest를 이용한 단위 테스트 예시 276

18.4 유저 서비스 테스트 279

18.5 테스트 커버리지 측정 287

 

APPENDIX ormconfig.json 동적 생성 291

 

찾아보기 2945

 

 

 

제이펍 소식 더 보기(제이펍의 소통 채널에서 더욱 다양한 소식을 확인하세요!)

  네이버 책  포스트  유튜브  인스타그램  트위터  페이스북