[NestJS] - 1. NestJS 소개
이번 겨울에 Nest.js를 공부하게 되면서 학습 내용을 기록해보려고 한다.
처음 시작부터, REST API, GraphQL API 만들기, 인증과 인가, DB ORM 사용, 파일 처리 등의 내용들을 포스팅하며 중고마켓 API를 만드는 것을 목표로 한다. 프론트엔드는 현재는 구현 계획이 없으나 나중에 한번 다룰 기회가 있다면 포스팅해보겠다.
NestJS란?
Node.js 기반의 웹 프레임워크, 기존에 많이 사용하던 프레임워크였던 Express를 기반으로 하여 업그레이드한 프레임워크이다.
NestJS를 사용하는 이유
Node.js 기반의 프레임워크로 가장 널리 사용하고 있는 Express는 쉽고 빠르게 개발이 가능하지만, 너무나 자유로운 나머지 소프트웨어 품질이 일정하지 않다. 개발자들 사이에서 일관된 틀과 모듈 구조 안에서 사용되고 있는 Spring이나 .NET 등의 프레임워크와 비교해보았을 때, Express는 명확한 아키텍처 구조와 코딩 스타일이 정해지지 않아 개발자들이 제각기 다른 스타일의 프로젝트를 생산해 낼 수 밖에 없다. 즉 규칙이 없는 것이 장점이자 단점이었다.
이런 측면에서 Express는 프레임워크지만 프레임워크의 역할인 프로젝트 뼈대를 잡는 역할이 약하다고 생각하며, 나와 같은 생각을 한 개발자들이나 회사에서는 Nest.js의 사용하는 곳이 늘고 있다.
NestJS를 사용하면 보일러 플레이트(정해진 프로젝트 구조) 안에서 프로그래머들이 코딩을 하게 되며, 이는 협업 측면에서 유리하다. 또한 새로운 프레임워크가 아닌 Express를 기반으로 한 프레임워크이기 때문에 기본적인 사용방법이 유사하다. 이는 기존 Express 개발자들에게는 빠르게 적응할 수 있는 측면에서 또 하나의 장점으로 다가올 수 있다.
NestJS의 특징 소개
NestJS의 특징은 내가 사용해본 프레임워크 중 Spring, Angular와 닮아 있다.
1. 타입스크립트 기반
NestJS는 기본적으로 타입스크립트를 채택하였다., 타입스크립트는 엄격한 자료형을 적용하여, 실수나 에러를 사전에 잡는 것에 용이하다.타입스크립트의 사용은 자바스크립트의 모든걸 되게 하지만, 어떠한 것이라도 이상하게 만들 수 있는 측면을 방지한다.
2. 객체지향 프로그래밍
NestJS는 객체지향 언어의 특성을 가진다. 컨트롤러, 서비스 등을 모듈에 묶어 캡슐화하여 관리한다.
3. 모듈/컴포넌트 기반의 아케틱처 구조 제공
아키텍처 구조와 디자인 패턴을 제공하여, 협업 측면에서 생산성이 증가하며, 확장성 있는 개발을 할 수 있다.
또한 DI(Dependency Injection, 의존성 주입)과 IoC(Inversion of Control, 제어의 역전)을 통해 생명주기를 관리하여 효율적이다.
다음 포스팅에서 첫 NestJS 프로젝트를 만드는 것을 다뤄보겠다.
해당 강의를 들으면서 학습한 내용을 바탕으로 저만의 프로젝트를 만드는 과정을 기록하여 남기는 것을 목표로 하고 있습니다.
주관적인 생각이 들어가 있을 수 있으므로 혹시 틀린 내용이 있다면 피드백 부탁드립니다.
https://www.inflearn.com/course/%EB%B6%80%ED%8A%B8%EC%BA%A0%ED%94%84-%EB%B0%B1%EC%97%94%EB%93%9C-%EA%B3%A0%EB%86%8D%EC%B6%95-%EC%BD%94%EC%8A%A4/dashboard
'Backend > Node.js (NestJS)' 카테고리의 다른 글
[NestJS] - 3. 모듈 구조 - Module/Service/Controller (0) | 2023.02.09 |
---|---|
[NestJS] - 2. NestJS 프로젝트 생성 (0) | 2023.02.08 |
[GraphQL] Apollo Server로 GraphQL API 서버 만들기 (2) (0) | 2023.01.21 |
[GraphQL] Apollo Server로 GraphQL API 서버 만들기 (1) (0) | 2023.01.21 |
[Express] Swagger API 문서 직접 작성해보기 (0) | 2023.01.18 |