[NestJS] 알아보기

모리스·2022년 6월 27일
2

NestJS

목록 보기
1/4

📌 개요

이번에 회사에서 mobile BFF를 개발해야한다는 소식을 접했다. 물론 나는 앱 개발자지만 앱에서 모든 비즈니스 로직을 들고있는건 앱이 무거워지기 때문에 mobile BFF를 만들어 앱에서의 비즈니스 로직을 걷어내고 UI적인 동작만 수행한다면 앱이 보다 가벼워지고 유지보수도 용이할거라 생각했다.(물론 bff도 유지보수 해야해서 일이 늘어나긴했지만... )

어쨋든.. 어떤 프레임워크로 bff를 만들어야 괜찮을지 찾아보다가 다른 팀에서 nest.js 기반으로 bff를 만들어 사용하고있다고해서 우리도 nest.js로 mobile bff를 만들어보기로 했다.

이번 노트에서는 nestJS에대한 기본 소개에 대해 작성해 보려한다.


📒 NestJS 소개

NestJSNode.js에 기반을 둔 웹 API 프레임워크로써 Express 또는 Fastify 프레임워크를 래핑하여 동작한다.
NestJS는 데이터베이스, ORM, 설정, 유효성 검사 등 수많은 기능을 기본 제공한다. 또 필요한 라이브러리를 쉽게 설치 (npm, yarn 등)하여 기능을 확장할 수 있는 Node.js의 장점을 그대로 가지고 있다.
또, 모듈/컴포넌트 기반으로 프로그램을 작성해 코드 재사용성을 높일 수 있다.
프로그래밍 언어로는 타입스크립트를 기본으로 사용해 타입스크립트가 가진 타입시스템의 장점을 누릴 수 있다.


📒 NestJS 특징

  1. 안정성
    NestJS타입스트립트 언어를 채택하고있다. 물론 자바스크립트에서도 동작이 가능하지만 nestJS 개발 시 타입스크립트를 고려하여 만들었기때문에 타입스크립트 사용을 적극 권장한다.
    타입스크립트는 타입을 지정하여 개발자 또는 시스템이 코드를 읽고 디버깅 하는 데 자바스크립트의 실수 및 버그를 사전에 잡아줘 개발 시 발생할 수 있는 이슈를 미연에 방지할 수 있다.
    또한 nestJS 아키텍쳐 자체가 모듈 별로 감싸진 형태로 작성되어 있기 때문에 nestJS 에서 지원하는 테스트를 직접 실행하며 정말 안정성있게 작업할 수 있다.
  2. 확장성
    NestJS모듈식 아키텍쳐를 사용하는데, 다른 라이브러리와 함께 사용할 수 있어 정말 유연한 확장성을 제공하고 있다.
  3. 캡슐화
    객체지향프로그래밍의 특성중 하나가 캡슐화이다. NestJS는 비슷한 기능을 하는 컨트롤러,서비스등을 묶어 module파일 내에서 모두 관리한다.
  4. 효율성
    nestJS는 타입스크립트의 적극적인 도입, DI(Dependency Injection), Ioc(Inversion of Control), Module을 통한 구조화 등의 기술을 통해 생산적인 개발이 용이하다.

📒 NestJS vs Express

NestJS를 공부하면서 가장많이 비교가 되는 프레임워크는 바로 Express 이다. 그렇다면 왜 NestJSExpress를 가장 많이 비교하고 왜 NestJS를 사용해야하는지 알아보자.
그전에 간단히 Express에 대해 설명하자면.

Express는 웹 및 모바일 애플리케이션을 위한 일련의 강력한 기능을 제공하는 간결하고 유연한 Node.js 웹 애플리케이션 프레임워크이다.
Node.js의 표준 웹서버 프레임워크로 불려질 만큼 많은 곳에서 사용하고있다.
Express의 특징으로는 다음과 같다.

  • Express는 NodeJS 기반 프레임워크 1위로 수많은 개발자들에게 개발 규칙을 강제하여 코드 및 구조의 통일성을 향상시킬 수 있다.
  • 가장 보편적으로 사용되어 많은 생태계가 구축되어있다.
  • 타입스크립트의 사용이 가능하지만 각종 세팅 과정이 복잡하다.
  • 웹서버를 빠르게 구현하기 위해 적합하며 개발에대한 자유도가 높다.

NestJSExpress의 차이점은 다음과 같다.
1. 앞전에 Express개발에 대한 자유도가 높다고 했다. 이는 장점이자, 단점이 될 수 있다. 한 프로젝트를 여러명이 개발하는 경우에 각 개발자 개개인마다의 아키텍쳐가 달라 이후 유지보수에 어려움을 겪을 수 있다. 반면에 NestJS는 개발 자유도가 Express에 떨어지는 반면 아키텍처의 정의도 프레임워크에서 제공하기 때문에 각 개발자들의 아키텍처가 통일되어 서로 작성한 코드의 구조를 쉽게 파악할 수 있다.
2. 이는 명백한 차이점이라고 보긴 어렵지만 NestJS는 타입스크립트를 기본 지원하고 바닐라 자바스크립트로도 작성 가능하다. Express도 타입스크립트 개발이 가능하지만 각종 세팅에대한 복잡도가 높다.
3. 가볍고 빠른 웹 서버 구축을 위해선 Express가 대규모 프로젝트에서는 NestJS가 유리하다.
4. NestJS는 많은 기능들을 프레임워크자체에 포함하고 있고, 라이브러리 적용이 수월하다. 반면 Express는 자유도가 높은 대신 자신에게 맞는 라이브러리를 찾기위해 많은 노력이 요구된다.


  • 다음 노트에서는 NestJS를 설치하고 HelloWorld까지 띄워보도록 하겠다.

📒 참조

https://wikidocs.net/147787

profile
모바일 앱 개발 노트 :)

0개의 댓글