(NestJS-기초강의) 1. NestJS란 무엇인가?

NestJS는 Node.js를 기반으로 한 Framework로, back-end 앱을 구축하고 관리하는 데 도움이 되는 도구입니다.

1. 소개

NestJS란 무엇인가?

NestJS는 TypeScript를 사용하여 효율적이고 확장 가능한 서버 측 애플리케이션을 구축하기 위한 Framework입니다.

Node.js를 기반으로 한 NestJS는 Angular의 아키텍처와 유사한 구조를 가지고 있어 Angular 개발자들에게 친숙하고 쉽게 접근할 수 있습니다.

2. 역사

NestJS의 기원

NestJS는 2017년 Michel Weststrate에 의해 처음 만들어졌습니다.

초기에는 Angular의 아키텍처에 영감을 받아 개발되었으며, 그 후 많은 개발자들과 커뮤니티의 기여로 성장하게 되었습니다.

주요 발전 과정

시간이 흐름에 따라 NestJS는 모듈성과 확장성을 강조하는 구조로 성장하였고, 자체적인 의존성 주입 (DI) 컨테이너, HTTP 요청 처리, 미들웨어 등의 기능을 제공하게 되었습니다.

3. 특징

모듈성과 확장성

NestJS는 모듈 단위로 구조화되어 있어 각 기능을 모듈로 구성하고 쉽게 확장할 수 있습니다.

이는 애플리케이션의 유연성을 높이고 유지보수를 용이하게 만듭니다.

TypeScript 지원

TypeScript를 완벽하게 지원하여 타입 안정성을 제공하며, 개발자들이 코드 작성 시 에러를 미리 방지할 수 있습니다.

의존성 주입 (DI)

NestJS의 의존성 주입은 애플리케이션의 컴포넌트 간의 결합도를 낮추고 유연한 코드 작성을 가능하게 합니다.

HTTP 요청 처리

HTTP 요청을 처리하는 기능을 내장하고 있어 빠르고 안정적인 API를 만들 수 있습니다.

미들웨어 기능

미들웨어를 사용하여 요청과 응답을 조작하고 로깅, 인증 등의 작업을 수행할 수 있습니다.

4. 점 / 단점

장점

1. 모듈성과 확장성

NestJS는 모듈 단위로 구성되어 있어 각 모듈은 독립적으로 작동하고 쉽게 확장할 수 있습니다. 이는 애플리케이션의 유연성을 높여줍니다.

2. TypeScript 지원

TypeScript를 완벽하게 지원하여 타입 안정성을 제공합니다. 이는 개발자가 코드를 작성할 때 예기치 않은 에러를 미리 방지할 수 있게 도와줍니다.

3. 의존성 주입 (DI)

NestJS의 의존성 주입은 애플리케이션 컴포넌트 간의 결합도를 낮추고 코드의 재사용성을 높이며, 테스트와 유지보수를 용이하게 만듭니다.

4. 개발자 친화적인 구조

NestJS의 구조는 Angular와 비슷한 아키텍처를 가지고 있어 Angular 개발자들에게 친숙하며, 새로운 개발환경에 빠르게 적응할 수 있습니다.

5. 강력한 모듈 시스템

모듈 시스템은 애플리케이션의 컴포넌트들을 모듈화하여 재사용성을 높이고 유지보수를 용이하게 만들어줍니다.

단점

1. 러닝 커브

NestJS는 처음 접하는 사용자들에게는 학습 곡선이 가파를 수 있습니다.

특히, TypeScript와 Angular 스타일의 구조를 경험하지 않은 경우 초기에는 어려울 수 있습니다.

2. 생태계의 부족

다른 일부 Node.js 프레임워크에 비해 NestJS의 생태계는 아직 부족한 부분이 있을 수 있습니다.

더 많은 플러그인 및 패키지의 확장이 필요한 경우도 있을 수 있습니다.

3. 과도한 추상화

가끔씩 NestJS는 과도한 추상화로 인해 개발자들이 코드를 이해하기 어려울 수 있습니다.

너무 많은 Layer가 있을 경우 코드의 복잡성이 증가할 수 있습니다.

5. 참고

Leave a Comment