예: @nestjs/axios, @nestjs/config 등을 통해, 외부 API나 설정 관리도 효율적으로 할 수 있습니다.
대규모 REST API 혹은 GraphQL API를 운영하는 기업
예: 전자상거래, 핀테크, 소셜, 사내 업무 시스템 등 API 서버가 핵심인 도메인
NestJS는 Swagger 연동(@nestjs/swagger)부터 GraphQL 지원(@nestjs/graphql)까지 공식 모듈이 잘 갖춰져 있어, 엔드포인트 문서화와 API 설계, 스키마 관리가 편리합니다.
장점
API 문서화(Swagger) 쉬움
데코레이터를 이용해 엔드포인트와 DTO(데이터 전송 객체)를 정의하면, 자동으로 Swagger 문서가 생성됩니다.
GraphQL 서버 쉽게 구축
스키마, 리졸버를 NestJS 스타일로 작성할 수 있어, REST ↔ GraphQL 병행 운영도 간편합니다.
“Node.js + Spring Boot 유사 경험”을 원하는 기업
Java/Spring에 익숙한 조직이지만, Node.js도 같이 쓰고 싶은 경우에,NestJS는 스프링 부트와 유사한 구조(모듈, DI, 데코레이터, 계층화)로 개발할 수 있어 선호됩니다.
기존 스프링 개발자도 NestJS를 접하면, 비교적 빠르게 적응할 수 있다는 장점이 있습니다.
장점
학습 곡선 단축
스프링에 익숙한 개발자가 Node.js 세상으로 넘어올 때 이질감을 덜 느낄 수 있습니다.
엔터프라이즈 문화와 잘 맞음
아키텍처를 “큰 틀”에서 강제하는 부분이 엔터프라이즈 개발 문화(규모가 크고 규칙이 필요한 환경)와 잘 어울립니다.
인기는 어떠한가 ?
결론
정리하자면 NestJS를 사용하는 기업 유형은 아래와 같을 것입니다.
중·대규모 팀에서 Node.js로 프로젝트를 운영하는 회사,
마이크로서비스 도입 또는 서버리스 환경을 원하는 회사,
TypeScript 기반으로 안정적인 백엔드 아키텍처를 갖추려는 회사,
API(REST, GraphQL) 위주로 빠르게 문서화와 스키마 관리를 해야 하는 회사,
스프링 부트처럼 일관된 구조로 Node.js를 활용하고 싶은 회사.
2024년 인기 그래프를 통해 예상 할 수 있듯 NestJS의 구조화, DI, 모듈성, TS 지원 등을 통해 개발·운영 효율과 코드 품질을 높일 수 있기 때문에, Express보단 NestJS를 선택하는 경우가 늘어나고 있다고 보여집니다.
클라우드를 활용한 마이크로서비스나 서버리스를 구성할 때 함수 호출(서버리스)마다 이미지(코드)가 로드되는 “콜드 스타트” 문제가 가장 중요합니다. NestJS는 초기 부팅 시 DI 컨테이너를 구성하는 등의 오버헤드가 있지만, 최신 AWS Lambda 등에서는 한 번 부팅된 환경을 재사용하는 방식(웜 스타트)도 많고, Fastify 어댑터를 사용하면 초기 부팅 성능이 더 좋아지는 등 최적화 할 방법이 있어서 nodejs 를 사용하는 기업 내 엔터프라즈 급 레벨 프로젝트 에서는 거의 필수로 여겨집니다. 앞서 무겁다는 표현을 썼지만 NestJS도 내부적으로 Express나 Fastify를 사용하고, Express보다 훨씬 가벼운 Fastify로 NestJS를 구동할 수도 있습니다. 이 경우, HTTP 요청 처리는 Fastify가 맡고, NestJS는 모듈/DI/컨트롤러 데코레이터 같은 “아키텍처” 부분을 담당하게 하고 실제로 초당 트래픽이 아주 높은 서비스도 NestJS + Fastify 조합으로 잘 운영하고 있다는 사례가 많고 실제로 제가 현업에서 잠깐 썼을때도 무겁고 느리단 느낌을 받진 못했기에 설계에 따른 운영에 많은 차이가 있을 것 입니다. 그래서 “가볍게 가자”라는 이유만으로 NestJS를 포기하기보다는, 어느 정도 체계가 필요한지, 얼마나 많은 서비스/개발자가 협업하는 지를 종합적으로 보고 결정하는 편이 좋을 것 같습니다.