Architecture Entry

NestJS 구조화 장점

Express 위에 타입과 DI, 모듈 경계를 더해 컨트롤러와 서비스 책임을 분명하게 나누는 것이 첫 장의 핵심입니다.

선택 이유

Opinionated Framework

폴더와 데코레이터 규칙이 있어 팀원이 같은 방식으로 라우트, 서비스, 모듈을 해석할 수 있습니다.

모듈

@Module()

관련 컨트롤러와 프로바이더를 하나의 기능 단위로 묶고 import/export로 의존 방향을 드러냅니다.

컨트롤러

@Controller()

HTTP 경로와 메서드를 받아 DTO로 입력을 제한하고 서비스 호출 결과를 응답으로 돌려줍니다.

프로바이더

@Injectable()

비즈니스 로직, 저장소 접근, 외부 API 호출처럼 교체와 테스트가 필요한 책임을 담당합니다.