Nest.js란? (사용 이유)

김지우·2022년 11월 16일
0

3주차

목록 보기
3/8
post-thumbnail

Nest.JS

NestJS는 TypeScript(타입 스크립트)를 지원하는 효율적이고 확장 가능한 Node.js의 서버 애플리케이션 프레임워크이며, OOP, FP 및 FRP 요소**를 결합하는 특징**을 가지고 있습니다.

Architecture 구조

Architecture: "하나의 서비스가 어떻게 구성이 되며 어떻게 동작이 된다" 라고 표현할 수 있으며, 즉 서비스의 동작 원리를 나타내는 것입니다.

Node.js로 예를 들면 Backend를 만들때 규칙도, 제약도 없이 자유롭게 만들 수 있고 거대한 프로젝트를 만드는 것 또한 가능합니다.

하지만 문제는 너무 제약이 없고, 너무 자유롭다는 것입니다.

때로는 규칙이나 제약, 즉 구조와 프레임워크가 필요할 때가 있습니다.

예를 들어 파이썬에는 장고라는 프레임워크가 있고 Java는 Spring이 있습니다. 하지만 Node.js에는 규칙이 없고, 어떤 패턴을 따라야 할지도 모르며 사용자가 정의해서 사용해야 합니다.

Nest.JS는 Architecture 구조를 제공함으로써 Node.js의 이러한 문제점들을 해결했습니다.

효율성

NestJS는 개발자와 팀이 고도로 테스트 가능하고, 확장 가능하며, 느슨하게 결합되고 유지관리가 쉬운 애플리케이션을 만들 수 있는 즉시 사용 가능한 애플리케이션 아키텍처를 제공합니다.

  • TypeScript기반의 프레임워크
  • DI(의존성주입)
  • IoC(제어의 역전)
  • Module 을 통한 구조화

안정성

NestJS는 TypeScript를 적극적으로 도입하면서 서버 어플리케이션 개발 시 발생 가능한 오류들을 사전에 방지할 수 있도록 합니다. 또한 세부적인 Module로 나누어져 있기 때문에 독립적인 Unit Test를 쉽게 작성 가능하도록 구현되어 있습니다.

확장성

NestJS는 Module Class를 지원하며, 각 Module은 비슷한 기능과 개념들을 Class 한 곳에 담아 캡슐화하고 서로 Import가 가능하도록 구현되어 있습니다. 이러한 Module 구조는 Architecture를 조직적(Organize)으로 가져가게 하고 느슨한 결합(Loose Coupling)을 가능하게 만들어 확장성(Extensible)과 테스트 가능성(Testable)을 높입니다.

출처 : 우리가 NestJS를 사용해야하는 이유

캡슐화

객체 지향 프로그래밍의 특성중 하나입니다. NestJS는 비슷한 기능을 하는 컨트롤러,서비스등을 묶어 module파일 내에서 모두 관리할 수 있습니다.

실무에서의 협업

NestJS는 개발 자유도가 Express에 떨어지는 반면 아키텍처의 정의도 프레임워크에서 제공하기 때문에 각 개발자들의 아키텍처가 통일되어 서로 작성한 코드의 구조를 쉽게 파악할 수 있습니다. 즉, 실무와 협업에서 뛰어난 강점을 보이며, 현재 스타트업 기업에선 대부분 Nest.js를 사용하여 실무에 적용하고 있습니다.

오픈소스

2022년에 들어서는 현재 120만에 가까운 다운로드 수치를 보여주고 있습니다.
이는 2021년 대비 3배가량 상승한 수치입니다.
사용자가 증가할 수록 관련 커뮤니티들이 활성화되고 NestJS에 관한 자료들을 쉽게 찾을 수 있습니다. 또한 버그나 오류 발생 시 빠른 대처를 받을 수 있습니다.


출처 : 우리가 NestJS를 사용해야하는 이유

profile
백엔드 성장 기록

0개의 댓글