NestJS의 본질은 뭘까?

김민재·2021년 12월 30일
0

Nest.JS & graphQl

목록 보기
6/7
post-thumbnail

1. NestJS 특징

1_1. 아키텍처 보완

🔒 Node의 프레임워크 아키텍처 문제?

  • 노드를 위한 라이브러리와 프레임워크가 아키텍처의 주요 문제를 해결하지 못함
  • 규모가 큰 프로젝트 일수록 다양한 미들웨어와 라이브러리 툴을 사용하는데 이는 자유로운(장점) Node가 가져다주는 코드의 비 통일성(단점) 이슈가 있다.

🔑 NestJS는 구조를 갖춰 아키텍처를 제공해준다.

  • 고도로 1>테스트 가능하고 2>확장가능하고 3>느슨하게 결합되고 유지관리가 쉬운 어플리케이션을 만들 수 있는 즉시 사용이 가능한 아키텍처를 제공해줍니다.
  • 컨트롤러, 모듈, 서비스 등 각 파일의 역할이 분명하여 통일성있고 구조화된 작업이 가능하다.

1_2. 안정성

🔒 Node의 아쉬움?

  • 노드는 타입이 없는 JavaScript 언어의 특성을 가지고 있기에 타입스크립트를 사용하지 않아도 잘 동작한다.

🔑 NestJS는 타입스립트를 적극 지원한다.

  • NestJS는 개발 당시 타입스크립트를 고려하여 제작되어 타입스크립트를 적극적으로 지원한다. 이는 타입스크립트의 장점을 갖췄다는 말과 일맥상통한다.
  • 또 nestJS 아키텍쳐 자체가 모듈 별로 감싸진 형태로 작성되어 nestJS에서 지원하는 테스트를 직접 실행하며 안정성있는 작업을 할 수 있다.

타입스립트를 쓰는 이유?

  • 타입을 지정하기에 디버깅, 컴파일 시 오류를 최소화하여 빠른 처리, 코드의 가독성을 갖춘다.
  • 서버 개발 시에도 적극 활용하면 발생 할 수 있는 이슈를 미연에 방지할 수 있다.

1_3. 확장성

🔑 NestJS module

  • NestJS는 module을 통해 코드적으로, 논리적으로 구분할 수 있다.
  • 모듈식 아키텍처비슷한 기능을 하는 컨트롤러, 서비스 등을 묶어서 module 파일 내에 관리하는 것인데 이 아키텍처 덕분에 다른 라이브러리를 사용할 수 있어 진정한 유연성을 제공한다.
  • OOP(객체 지향 프로그래밍)의 특징인 캡슐화로 간단하게 분기시켜 파일을 관리할 수 있다.

module?

  • NestJS는 module 클래스를 지원하는데 module비슷한 기능 및 개념들을 module 클래스에 한 곳에 담아 캡슐화합니다.
  • 또한 Module들은 서로 import가 가능하여 아키텍쳐를 조직적(Organize)으로 가져가게 하고 느슨한 결합(Loose Coupling)을 가능하게 만들어 확장성(Extensible)과 테스트 가능성(Testable)을 높여준다.

캡슐화?

  • 캡슐화는 중요한 데이터를 보존,보호하는 것을 의미한다.
  • 캡슐화(encapsulation)는 일반적으로 연관 있는 변수와 함수를 클래스로 묶는 작업을 말한다.
  • 단, 캡슐화에는 은닉성이는 속성을 가져 클래스에 담는 내용 중 중요한 데이터나 기능을 외부에서 접근하지 못하게 할 수 있다는 특징을 가진다

정리

  • NestJS의 장점을 표로 잘 정리한 이미지이다.
  • 즉, NestJS는 효율적이고, 확장성 있고, 테스팅 가능하며 유지 보수가 편리한 프레임워크다.

- 한 블로거에 허락을 받고 가져온 표이미지 출처

profile
자기 신뢰의 힘을 믿고 실천하는 개발자가 되고자합니다.

0개의 댓글