교재 목차
모듈·의존성 주입·데이터베이스·인증·REST API에서 마이크로서비스·테스트·배포까지 NestJS 서버 개발을 연결합니다.
API에 인증과 저장 기능이 더해지면, 함수 하나가 입력 검사와 업무 규칙, 저장을 한꺼번에 맡기 쉽습니다. NestJS는 이 일들을 모듈, 컨트롤러, 서비스로 나누고, 요청이 지나가는 길목에 가드와 파이프를 두어 바뀌는 부분을 찾아 고치기 쉽게 합니다. 모듈은 컨트롤러와 서비스를 등록해 객체를 조립하고, 요청이 들어오면 가드가 접근을 확인하고 파이프가 입력을 검증·변환한 뒤, 컨트롤러가 요청과 응답을 연결하고 서비스가 업무 규칙을 처리합니다. 이 교재를 읽을 때는 애플리케이션이 시작할 때 일어나는 모듈의 조립과, 요청마다 일어나는 실행을 구분해 보세요.
이 교재는 NestJS 12, TypeScript 6, Node.js 24 LTS를 기준으로 하며, 프로젝트는 CommonJS 형식과 Jest 30 테스트로 구성합니다. 데이터베이스는 TypeORM 1, Prisma 7, Mongoose 9를, 작업 큐는 BullMQ 6을 씁니다. 본문에 실은 실행 결과와 오류 메시지는 NestJS와 각 라이브러리의 공식 문서, 소스 코드에 적힌 동작을 따라 정리한 예상값이며, 실제로 실행해 옮긴 출력은 아닙니다. 예제를 볼 때는 먼저 결과를 예상한 뒤 본문과 비교하고, 직접 실행해 다르게 나오면 어느 단계에서 갈라졌는지 따라가 보세요.
먼저 시작하기
변수, 함수, 클래스, import를 읽을 수 있으면 첫 앱을 시작할 수 있습니다. 낯선 문법은 TypeScript 교재의 기본 타입, 함수, 클래스, ES 모듈, Promise와 async/await에서 필요한 부분을 복습하세요.
| 지금 할 일 | 읽을 경로와 확인할 결과 |
|---|---|
| 첫 서버 응답 만들기 | 개발 환경 설정에서 Node.js와 Nest CLI를 준비하고 첫 번째 NestJS 애플리케이션을 만듭니다. 생성한 앱을 바꾸지 않았다면 GET /의 응답은 Hello World!입니다. 응답이 다르면 main.ts의 포트와 실행한 폴더, 시작할 때 난 예외부터 확인합니다. |
| 요청과 서비스의 역할 나누기 | 모듈, 컨트롤러, 서비스의 기본 개념으로 넘어갑니다. 이 글의 main.ts는 api를 전역 접두사로 설정하므로 목록 경로는 /api/users입니다. 메모리 배열에 저장한 값과 응답을 비교하고, 인라인 body 타입은 런타임에 필드를 검증하지 않는다는 점을 확인합니다. |
| JSON 입력 검사하기 | RESTful API 설계 원칙과 구현과 DTO와 유효성 검사를 읽습니다. 서비스, 모듈, 전역 파이프를 본문대로 준비한 뒤 올바른 입력과 거부되는 입력의 응답을 비교합니다. 5장 첫 글은 /v1/users, 두 번째 글은 /users를 쓰므로, 두 글의 main.ts에서 접두사와 버전 설정을 확인합니다. |
CLI가 만든 첫 앱은 데이터베이스나 화면 없이 응답합니다. 저장을 연결할 때는 TypeORM으로, 로그인을 추가할 때는 Passport로, 외부 의존성을 떼어 놓고 확인할 때는 단위 테스트로 넘어가세요.
학습 경로
1단계 · 구조와 요청 흐름(1–2장)에서는 NestJS 프로젝트를 만들고 모듈, 컨트롤러, 서비스가 요청을 나눠 처리하는 방식을 익힙니다. 의존성 주입과 IoC 컨테이너, 미들웨어와 인터셉터, 파이프와 가드, 예외 필터, 사용자 정의 데코레이터로 요청이 지나가는 길을 하나씩 확인합니다.
2단계 · 데이터와 인증(3–5장)에서는 TypeORM, Mongoose, Prisma로 데이터베이스를 연결하고 트랜잭션으로 정합성을 지킵니다. Passport와 JWT로 인증을, 역할 기반 접근 제어와 OAuth 2.0·OIDC로 권한을 다룬 뒤, REST API의 설계와 DTO 검증, 버전 관리와 문서화로 API의 모양을 정합니다.
3단계 · 비동기 작업과 서비스 분리(6–7장)에서는 오래 걸리는 작업을 BullMQ 큐로 분리하고 재시도와 중복 방지, 예약 작업을 다룹니다. 이어서 마이크로서비스로 서비스를 나누고 TCP, gRPC, Kafka로 통신하며 API 게이트웨이로 요청을 모읍니다.
4단계 · 품질과 운영(8–11장)에서는 단위 테스트와 E2E 테스트로 동작을 확인하고, 캐싱과 쿼리 최적화, 수평 확장으로 성능을 다룹니다. CORS와 CSRF, 비밀 정보 관리, 로깅과 감사 추적으로 보안을 갖춘 뒤, Docker 컨테이너와 CI/CD, 클라우드 배포, 모니터링으로 운영 환경까지 이어집니다.
5단계 · 고급 주제와 실전 프로젝트(12–13장)에서는 서버리스, WebSocket, CQRS, DDD를 살펴보고, 마지막으로 인증과 프로젝트·파일 API, React 화면, 실시간 Gateway를 갖춘 온라인 코드 에디터를 만들며 테스트와 배포, 운영 전략까지 세웁니다.
13장의 코드 에디터는 새 서버 프로젝트와 별도의 Vite 프런트엔드 프로젝트를 만듭니다. 프로젝트 요구사항 분석과 설계부터 모듈 연결과 실행까지 서버를 만든 뒤, 프론트엔드 통합과 코드 에디터와 파일 목록에서 기본 REST 저장과 재조회를 먼저 확인하세요. 화면을 만들기 전에 React 교재에서 state와 effect를 복습하면 좋습니다. 기본 저장을 확인한 뒤에는 WebSocket과 실시간 애플리케이션을 읽고 선택 실습인 같은 파일의 두 세션 연결하기로 넘어갈 수 있습니다. 다른 계정 초대와 동시 편집의 병합은 이 예제가 다루지 않습니다.
각 장을 읽은 뒤에는 요청 한 건이 입력 검사, 업무 규칙, 저장을 거치며 어느 객체를 지나가는지 말로 설명해 보세요.