logo
logo
x
바코드검색
BOOKPRICE.co.kr
책, 도서 가격비교 사이트
바코드검색

인기 검색어

실시간 검색어

검색가능 서점

도서목록 제공

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

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

(타입스크립트 환경의 차세대 서버 프레임워크를 만나다)

한용재 (지은이)
제이펍
27,000원

일반도서

검색중
서점 할인가 할인률 배송비 혜택/추가 실질최저가 구매하기
24,300원 -10% 0원
1,350원
22,950원 >
24,300원 -10% 0원
카드할인 10%
2,430원
21,870원 >
yes24 로딩중
교보문고 로딩중
11st 로딩중
영풍문고 로딩중
쿠팡 로딩중
쿠팡로켓 로딩중
G마켓 로딩중
notice_icon 검색 결과 내에 다른 책이 포함되어 있을 수 있습니다.

중고도서

검색중
서점 유형 등록개수 최저가 구매하기
로딩중

eBook

검색중
서점 정가 할인가 마일리지 실질최저가 구매하기
aladin 18,900원 -10% 940원 16,070원 >

책 이미지

NestJS로 배우는 백엔드 프로그래밍
eBook 미리보기

책 정보

· 제목 : NestJS로 배우는 백엔드 프로그래밍 (타입스크립트 환경의 차세대 서버 프레임워크를 만나다)
· 분류 : 국내도서 > 컴퓨터/모바일 > 프로그래밍 개발/방법론 > 프로그래밍 기초/개발 방법론
· ISBN : 9791192469560
· 쪽수 : 312쪽
· 출판일 : 2022-12-20

책 소개

가장 진보한 프레임워크로 우아하게 백엔드 입문하기. 저자가 모두싸인에 몸담으며 익힌 노하우와 인사이트를 바탕으로 NestJS를 활용해 회원 가입, 이메일 인증, 로그인, 회원 정보 조회 기능을 갖춘 REST API 유저 서비스를 만들어본다.

목차

베타리더 후기 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

찾아보기 295

저자소개

한용재 (지은이)    정보 더보기
LG전자 MC사업부에서 휴대폰에 탑재되는 소프트웨어를 오랜 기간 만들었고, 토스인컴과 모두싸인에서 백엔드 엔지니어로 활동하다가 현재는 비긴트의 대표를 맡고 있다. 모토는 일신우일신(日新又日新)이고, 영화와 교양 과학 서적을 좋아한다. 《NestJS로 배우는 백엔드 프로그래밍》(2022, 제이펍)을 집필했고, 《처음 시작하는 FastAPI》(한빛미디어, 2024), 《이펙티브 소프트웨어 테스팅》(2023, 제이펍)을 번역했다.
펼치기

책속에서

서버에서 제공하는 기능을 API로 외부에 공개하기로 했다고 가정합시다. 현재 회사가 사용하고 있는 도메인은 example.com이고, API 요청은 api.example.com으로 받기로 했습니다. 즉, https://example.com, https://api.example.com로 들어온 요청을 서로 다르게 처리하고 싶다고 합시다. 또한 하위 도메인에서 처리하지 못하는 요청은 원래의 도메인에서 처리되도록 하고 싶다고 합시다. 이런 경우 하위 도메인 라우팅 기법을 쓸 수 있습니다.


앞서 인증authentication을 미들웨어로 구현하는 것이 좋은 사례라고 했습니다. 애플리케이션은 사용자의 권한을 확인하기 위해 인증과 인가를 수행해야 합니다. 인증은 요청자가 자신이 누구인지 증명하는 과정입니다. 최근에는 매 요청마다 헤더에 JWT 토큰을 실어 보내고 이 토큰을 통해 요청자가 라우터에 접근 가능한지 확인하는 방식을 많이 사용합니다. 쉽게 이야기해서 현재 요청자가 해당 서비스의 올바른 유저인지 검증합니다.


서비스에 기능이 늘어나고 사이즈가 커지게 되면 동작 과정을 남기고 추적하는 일이 중요하게 됩니다. 이슈가 발생했을 경우 이슈 증상만으로 원인을 파악하는 데에는 시간과 노력이 많이 들고 코드를 다시 역추적하면서 이해하는 데에 어려움이 따릅니다. 이슈가 발생한 지점과 콜 스택이 함께 제공된다면 빨리 해결이 가능할 것입니다. 또 어떤 기능이 많이 사용되는지와 같이 유저의 사용패턴을 분석하는 데에도 로그log를 활용할 수 있습니다.


이 포스팅은 쿠팡 파트너스 활동의 일환으로,
이에 따른 일정액의 수수료를 제공받습니다.
이 포스팅은 제휴마케팅이 포함된 광고로 커미션을 지급 받습니다.
도서 DB 제공 : 알라딘 서점(www.aladin.co.kr)
최근 본 책
9791192469898