Node.js로만 특정 애플리케이션 서버를 구현하기에는 막막합니다. 막상 짜야할 일정 단계 이상의 코드가 산더미이기 때문이죠. 이를 위해서 Nest.js가 있습니다. 오늘은 Nest.js를 왜 사용해야하는지 어떤 점이 좋은지 제가 느낀 관점에서 소개하겠습니다.
[목차]
- Nest.js 무엇인가?
- Nest.js로 할 수 있는 것
- Nest.js 디렉토리 역할 및 설명
1. 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
2023.02.27 - [프로그래밍_] - Node.js 데이터 파싱 1) cheerio 설치 및 파싱
2023.02.24 - [프로그래밍_] - Azure 가상머신 Mysql 설치, workbench 사용하기
'프로그래밍_' 카테고리의 다른 글
네이버 블로그 SEO 프로젝트 - Next.js Api Route 사용 (0) | 2023.03.26 |
---|---|
네이버 블로그 SEO 프로젝트 - 개발계획, 기술 (0) | 2023.03.21 |
Node.js 데이터 파싱 1) cheerio 설치 및 파싱 (1) | 2023.02.27 |
React.js 엑셀 스타일 적용하기, xlsx-js-style (1) | 2023.02.26 |
Azure 가상머신 Mysql 설치, workbench 사용하기 (0) | 2023.02.24 |
댓글