Nest.js

전은평·2023년 4월 16일
0

Nest.js란?

Express를 기반 으로 돌아가는 Node.js의 서버 프레임워크이다.

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

🤔 그렇다면 node.js와 express 등을 이용해 서버를 충분히 만들 수 있는데,
왜 굳이 어려운 Nest.js를 배워야 할까?

NestJS는 Architecture 구조를 제공함으로써 Node.js의 주요 문제를 해결하게 해주기 때문에 사용한다!

공식 문서에 따르면, 최근 몇 년간 Node.js 덕분에 Javascript는 프론트, 백엔드 모두를 위한 웹의 "링구아 프랑카( 상호 소통이 불가능한 서로 다른 언어의 화자끼리 의사소통을 위해 정한 언어 )" 가 되었고 이로 인해 Vue, React, Angular와 같은 프로젝트가 생겨 개발자의 생산성이 향상되고 빠르고, 테스트가 가능하며 확장성이 가능한 frontend application을 만들 수 있게 되었다.

그러나 Node와 Server 측 Javascript를 위한 훌륭한 모듈, 라이브러리들이 존재해도

Architecture의 주요 문제를 해결해주진 못했다.

Node.js로 Backend를 만드는 것은 마치 레고와 같아, 규칙도, 제약도 없이 자유롭게 하나의 파일에서 시작해서 거대한 것을 완성할 수 있다.

문제는 너무 제약이 없고, 너무 자유롭다는 점인데, 때로는 규칙이나 제약, 즉 구조와 프레임워크가 필요할 때가 있다.
(다른 언어를 예로 들면 파이썬 - 장고 / Java - Spring)

Node.js에는 이런 자유로움은 좋은 점도 많지만, 프로젝트로 협업을 진행하는 경우에는 오히려 독이 될 수가 있다. 프로젝트의 규모가 커질수록, 개발자마다 다양한 Architecture 패턴을 가지고 있을수록 구조와 스타일의 다름으로 인해 협업 과정에 드는 소통 비용이 증가하게 되고 이는 곧 생산성 저하와 유지 보수의 어려움으로 직결된다.


Nestjs의 장점

효율성

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

: 그 외에도 TypeScript기반의 Framework이며 Dependency Injection(의존성주입)Inversion of Control(제어의 역전)Module을 통한 구조화 등 생산성에 용이

안정성

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

확장성

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

참고 : 코드캠프 학습자료

profile
`아는 만큼 보인다` 라는 명언을 좋아합니다. 많이 배워서 많은 걸 볼 수 있는 개발자가 되고 싶습니다.

0개의 댓글