본문 바로가기
프로그래밍_

Nest.js 서버 프레임워크 기본적인 지식

by Mocca_ 2023. 3. 15.

Node.js로만 특정 애플리케이션 서버를 구현하기에는 막막합니다. 막상 짜야할 일정 단계 이상의 코드가 산더미이기 때문이죠. 이를 위해서 Nest.js가 있습니다. 오늘은 Nest.js를 왜 사용해야하는지 어떤 점이 좋은지 제가 느낀 관점에서 소개하겠습니다. 


[목차]

  1. Nest.js 무엇인가?
  2. Nest.js로 할 수 있는 것
  3. Nest.js 디렉토리 역할 및 설명

 

반응형

 

1. Nest.js 무엇인가?

 

Nest.js
Nest.js

Node.js 기반의 서버 프레임워크입니다. 서버에 필요한 기초적인 요소를 쉽게 구성해놓은 라이브러리라고도 할 수 있겠습니다. 서버를 더 쉽게 만들어주는 Express 같은 웹 프레임워크보다 더 체계적이고 방대합니다. 

 

자바에는 Spring Framework, python에는 Django 같은 서버 프레임워크가 있듯이 Node.js에서도 쓸만한 서버프레임워크를 고르자면 Nest.js입니다. 백엔드 서비스와 마이크로 서비스를 라이브러리를 통해서 뚝딱 만들 수 있으며 TypeScript를 기본으로 하기 때문에 기존 레거시언어를 쓰던 사람도 잘 다룰 수 있습니다. 

 

모듈화를 사용해 재사용성을 높이고 테스트하기 용이합니다. 특히 자주 사용하는 의존성을 주입하므로서 구조화된 코드를 가능하게 합니다. 서비스를 한번만 이용할 게 아니라면 유지보수는 아주 중요합니다. 유지보수용 코드를 작성하기에 유리한 구조를 가지고 있습니다. 

 

 

 

 

 

 

 

 

2. Nest.js로 할 수 있는 것

 

Nest.js는 일반적인 웹서버부터 채팅서버, 푸시서버 등 다양한 백엔드 서비스를 구성할 수 있습니다. 특히 이미 만들어진 코드로 사용법만 익히면 되어서 보일러 플레이트( 서비스를 만들 때 기본적으로 있어야 하는 코드) 과정이 필요없어지며 능률이 좋아집니다. 

 

Nest.js 주요 기능 

 

- 의존성 주입 (DI) : 구성 요소 간의 의존성 관리를 쉽게 해주어서 모듈과 컴포넌트 간의 분리를 쉽게 만들어줍니다. 

- 미들웨어 : Express 같은 웹 프레임워크에서 사용하는 미들웨어를 지원합니다. Http 요청과 응답, 검증, 오류처리를 처리하는 미들웨어를 쉽게 만들 수 있습니다. 

 

- 모듈화 : 디렉토리가 정형화되어 있어서 Repository, Service, Controller 등 일정한 패턴에 맞게 유지보수에 좋은 코드를 만들 수 있고 모듈화할 수 있습니다. 

 

- Pipe : 라우터와 핸들러 사이에서 데이터를 변환, 분석하는 역할을 수행합니다. 미들웨어와 비슷하지만 조금 다릅니다. 데이터 유효성 검사, 가공 등 백엔드 서비스에 필요한 고유한 기능을 가집니다. 

 

- GraphQL : 일반적인 Restful Api와 다르게 클라이언트에서 원하는 데이터만 요청받을 수 있는 쿼리입니다. 러닝커브는 좀 있을 수 있지만 원하는 데이터를 골라받기 때문에 효율적인 전송,처리가 가능합니다. 

 

- WebSocket : http 프로토콜과 다르게 양방향 통신을 하므로 실시간으로 이뤄지는 채팅이나 원격제어, 화상통화 등의 서비스를 구현하는데 사용됩니다. 

 

 

 

 

 

 

 

3. Nest.js 디렉토리 및 설명

 

Nest.js는 코드의 모듈화와 재사용성을 높이기 위해서 따로 제공하는 디렉토리 형식이 있습니다. 이 디렉토리를 활용하면 기존에 만들어놓았던 형식대로 유지보수가 용이한 코드를 작성하기 좋을 것입니다. 그러기 위해선 각 디렉토리에는 어떤 것들이 들어가야하고 무슨 의미인지 알아야합니다. 

 

main.ts : 애플리케이션의 진입점입니다. NestFactory를 이용해서 어플이 시작됩ㄴ디ㅏ. 

app.module.ts: 애플리케이션에 사용되는 루트모듈을 정의하는 곳입니다. 

/modules: 각 모듈들을 정의해 놓는 디렉토리입니다. 

/controllers: 애플리케이션에서 사용되는 컨트롤러를 넣습니다. api 요청을 받아 응답을 처리합니다. 

/services: 실질적인 비즈니스 로직을 처리하는 서비스 클래스를 놓습니다.

/providers: 의존성 주입을 위한 Providers를 정의합니다. 

/utils: 각 어플리케이션에서 사용되는 유틸을 넣습니다. 기본적인 날짜계산, 단위계산이 유틸에 포함됩니다.

/interfaces: 어플리케이션에서 사용되는 인터페이스들을 넣습니다. 재사용성을 위해 repository에 대한 인터페이스를 주로 정의합니다. 

/config: 구성 파일을 포함합니다.

/test: 테스트 코드 파일을 포함합니다.

 

대략적으로 알아보았습니다. 다음 포스팅에는 더 자세히 알아보도록 하겠습니다. 

 

반응형

 

 

 


[함께 읽으면 좋은 글]

2023.03.14 - [IT 제품, IT지식] - openai 사용가능한 인공지능 api

 

openai 사용가능한 인공지능 api

제일 유명한 ChatGPT 말고도 openai 회사에는 쓸모있는 api 서비스가 많습니다. 오늘은 많은 인공지능 api 중 무엇이 어떤 기능을 하는지 알아보고 소개해보는 시간을 가져보겠습니다. [목차] openai 인

commnetall.tistory.com

2023.02.27 - [프로그래밍_] - Node.js 데이터 파싱 1) cheerio 설치 및 파싱

 

Node.js 데이터 파싱 1) cheerio 설치 및 파싱

저는 nodejs를 데이터 모으는데 자주 사용하는 편입니다. npm에는 수많은 모듈이 있고 간단하게 npm을 이용하여 모듈을 다운받고 사용할 수 있습니다. 이번에는 데이터 파싱에 있어서 유명한 cheerio

commnetall.tistory.com

2023.02.24 - [프로그래밍_] - Azure 가상머신 Mysql 설치, workbench 사용하기

 

Azure 가상머신 Mysql 설치, workbench 사용하기

오늘 Azure에서 가상머신을 실행하여 mysql을 설치하고 쿼리하는 과정까지 해보았습니다. 이 과정에서 어려웠던 점이나 과정을 정리해보겠습니다. 가상머신은 Window Server 말고 Ubuntu로 설정하였습

commnetall.tistory.com

 


 

 

 

댓글