우리가 Nest를 사용해야 하는 이유

JeongYong·2023년 11월 11일
0
post-thumbnail

Nest 소개 (공식 문서)

Nest(NestJS)는 효율적이고 확장 가능한 Node.js 서버 측 애플리케이션을 구축하기 위한 프레임워크입니다 . 이는 프로그레시브 JavaScript를 사용하고 TypeScript 로 구축되어 완벽하게 지원하며(아직도 개발자가 순수 JavaScript로 코딩할 수 있음) OOP(객체 지향 프로그래밍), FP(기능 프로그래밍) 및 FRP(기능 반응 프로그래밍) 요소를 결합합니다.
내부적으로 Nest는 Express (기본값) 와 같은 강력한 HTTP 서버 프레임워크를 사용하며 선택적으로 Fastify 도 사용하도록 구성할 수 있습니다!
Nest는 이러한 일반적인 Node.js 프레임워크(Express/Fastify)보다 높은 수준의 추상화를 제공하지만 해당 API를 개발자에게 직접 공개합니다. 이를 통해 개발자는 기본 플랫폼에서 사용할 수 있는 수많은 타사 모듈을 자유롭게 사용할 수 있습니다.

Nest가 나오게된 배경

개발자 생산성을 향상하고 빠르고 테스트 가능하며 확장 가능한 프론트엔드 애플리케이션을 생성할 수 있는 Angular, React 및 Vue가 존재하지만 서버측 JavaScript를 위한 아키텍처의 주요 문제를 효과적으로 해결하는 프레임워크는 존재하지 않다는 것입니다. 그래서 Nest라는 프레임워크가 개발되었고, Nest는 개발자와 팀이 고도로 테스트 가능하고 확장 가능하며 느슨하게 결합되고 유지 관리가 쉬운 애플리케이션을 만들 수 있는 즉시 사용 가능한 애플리케이션 아키텍처를 제공합니다. (Angular에서 많은 영감을 받음)

Express와 비교로 알아보는 Nest의 장점

구조화와 모듈화

  • Express: Express는 구조화된 프로젝트 구조를 강제하지 않습니다. 개발자가 전체 애플리케이션 구조를 직접 설계해야 합니다.
  • Nest: Nest는 모듈 시스템을 기반으로 하며, 코드를 모듈화하고 구조화하는데 도움을 줍니다. 이것은 프로젝트의 확장성과 유지보수성을 향상시킵니다.

TypeScript 네이티브

  • Express: Express는 JavaScript에만 의존하며, TypeScript를 사용하려면 별도의 세팅이 필요합니다.
  • Nest: Nest는 TypeScript를 네이티브로 지원하므로 코드의 안정성 높이고, 타입 안정성을 활용할 수 있습니다.

데코레이터와 메타데이터

  • Express: Express는 라우팅 및 미들웨어를 설정하기 위해 명시적인 코드가 필요하고, 메타데이터를 사용하지 않습니다.
  • Nest: Nest는 데코레이터와 메타데이터를 사용하여 라우팅, 의존성 주입 및 다른 기능을 더 쉽게 구현할 수 있습니다.

의존성 주입

  • Express: Express는 의존성 주입을 명시적으로 처리하지 않습니다. 그래서 개발자가 수동으로 의존성을 관리해야 합니다.
  • Nest: Nest는 의존성 주입을 지원합니다. 그래서 의존성을 훨쒼 쉽게 관리할 수 있습니다.

테스트 용이성

  • Experss: Express 애플리케이션의 테스트 작성은 복잡할 수 있으며, 테스트용 모킹 및 스파이팅을 수동으로 수행해야 합니다.
  • Nest: Nest는 테스트 용이성을 향상시키는 테스킹 모듈 및 도구를 제공하며, 의존성 주입을 활용하여 테스트용 객체를 쉽게 제어할 수 있습니다.

강력한 커뮤니티와 생태계

성능

  • Express: Express는 미니멀한 구조로 인해 빠른 성능을 제공하지만, 구조적인 요구사항이 복잡해질수록 추가적인 작업이 필요합니다.
  • Nest: Nest는 구조화된 방식으로 개발을 진행하므로 복잡한 프로젝트에서도 성능을 유지하면서 구조적으로 관리할 수 있습니다.

요약하자면 Nest는 Express에 비해 구조화, 모듈화, TypeScript 네이티브 지원, 데코레이터 및 메타데이터, 의존성 주입, 테스트 용이성, 강력한 생태계 및 성능 측면으로 많은 장점을 가지고 있습니다. 작은 프로젝트나, 간단한 API에서는 Express가 유용할 수 있지만, 더 복잡하고 확장 가능한 애플리케이션을 개발은 Nest와 같은 구조화된 프레임워크가 매우 유용합니다.

이러한 이유로 우리는 복잡하고 확장 가능한 애플리케이션을 개발할 때 Nest를 선택하는 것은 매우 현명한 선택으로 보여집니다.!!

참고문서
https://docs.nestjs.com/

0개의 댓글