본문 바로가기
웹 개발/Nestjs

Nestj로 서버만들기 (1) - 프로젝트 생성

by 주식 키우는 개발자 2021. 1. 9.
반응형

Nestjs 는 Node계의 Spring 이라고 설명할 수 있는데요. 기존에 자유분방했던 Node express 구조의 서버에서 자바의 Spring 처럼 구조가 명확하게 정해진 프레임워크입니다. 그래서 정해진 방법만 따르면 쉽게 서버를 만들 수 있는데요.

최근 새로운 프로젝트를 진행하고 있는데, 좋은 아키텍쳐를 갖춘 서버를 제작하면 유지보수에도 편할 것 같아 Nestjs를 도입해보려고 합니다. 도입하면서 공부하는 내용들을 정리해보겠습니다.

프로젝트 생성

nest g application {{프로젝트 명}}

위와 같이 생성했으면 프로젝트 경로로 이동해줍니다.

cd {{프로젝트명}}

패키지 설치

패키지 설치를 위해 아래 명령어를 입력해줍니다.

nestjs는 yarn 보다는 npm 을 사용하시는 것을 권장합니다.

npm i 

설치가 완료되면 개인 git 레포지토리와 연결해줍니다.

Nestjs 공식 홈페이지 에서 아래 명령어 부분을 복사해서 실행해줍니다.

image

Nestjs는 apollo 서버를 기반으로 동작하고 Nestjs가 만들어준 모듈을 사용하여 개발하기 때문에 앞으로 @nestjs/** 와 같은 모듈을 많이 사용하게 될 것입니다.

실행

위 패키지들을 전부 설치하였다면 아래 명령어를 통해 서버를 실행시킬 수 있습니다.

npm run start:dev

정상적으로 서버가 실행되었다면 아래와 같은 화면이 노출되는 것을 확인하실 수 있습니다.

 

image

프로젝트 셋팅

가장 기본적인 Nestjs 형태의 프로젝트를 생성하고 서버를 실행해보는 부분까지 진행했는데요. 이제는 필요없는 코드들을 제거하고 직접 프로젝트를 셋팅하는 부분을 진행해보려고 합니다.

프로젝트 디렉토리의 아래 파일 세개를 지워줍니다.

image

왜냐하면, 가장 기본적인 구조에서부터 프로젝트를 셋팅해보며 어떤 부분이 필요한지 알아가는 것이 중요하기 때문입니다.

app.module.ts

import { Module } from '@nestjs/common';

@Module({
  imports: [],
  controllers: [],
  providers: [],
})
export class AppModule {}

app.module.ts 파일도 위와 같이 초기화 해줍니다.

전체적인 구조를 말씀드리자면 main.ts 에서 App.module.ts 를 통해 서버를 만들고 서버를 실행시키는 동작을 하고 있는데요.

main.ts

import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';

async function bootstrap() {
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);
}
bootstrap();

저희는 여러개의 모듈을 만들어야 하는데요. 그 많은 모듈들을 main.ts 에서 사용하는 것이 아니라 App.module.ts 에서 하나의 모듈로 만들어 사용하는 것입니다.

적절한 예시가 맞는지 모르겠지만, React에서 index.js 와 같은 하나의 자바스크립트 파일로 번들링을 하는 구조라고 생각하고 있습니다.

그래서 앞으로는 새로운 모듈을 추가하면 App.module.ts 에 추가해주는 방식으로 진행할 것 입니다.

다음 글에서는 AppModule 을 설정하는 방법에 대해서 정리해보도록 하겠습니다.

댓글