안녕하세요. 모리스입니다.😊
이번 포스트에서는 과거 모바일BFF를 만들면서 사용했던 프레임워크인 NestJS에 대해서 작성해 보려합니다.
그 당시 회사의 B/E에서는 특정 서비스 만을 위한 API는 없다!!! 라고 선을 딱 그어버려서... end point입장에선 하나의 데이터를 받아오기 위해 여러 API를 앱단에서 조합해서 써야했던 아픈 기억이 다시금 떠오르네요..ㅋㅋㅋㅋㅋㅋㅋㅋ
그래서 그 때 팀장님이 그냥 우리가 서버하나 만들자! 해서 공부 시작한게 NestJS였어요.
자 이제 옛날 얘기 그만하고 시작해 보겠습니다.🙂
📒 NestJS 소개
NestJS는 Node.js 기반의 웹 애플리케이션 프레임워크로, 내부적으로는 Express 혹은 Fastify를 래핑해 동작해요.
데이터베이스 연결, ORM, 설정, 유효성 검사 등 여러 기능들을 기본으로 제공하며, 필요한 경우에는 NPM, Yarn 등을 통해 쉽게 라이브러리를 추가해 확장할 수 있는 장점이 있어요.
또한 NestJS는 모듈/컴포넌트 기반으로 작성되기 때문에 코드 재사용성이 높고, 기본 언어로 TypeScript를 사용하여 타입 시스템의 장점을 그대로 누릴 수 있어요.
📒 NestJS 특징
- 안정성
NestJS는 TypeScript를 기반으로 하고 있어요. 물론 자바스크립트로도 작성이 가능하지만, 프레임워크 자체가 타입스크립트를 고려해 설계되었기 때문에 타입스크립트 사용을 적극 권장해요.
타입을 명시함으로써 개발자가 실수할 수 있는 부분을 컴파일 단계에서 잡아주기 때문에, 버그 발생 가능성을 줄이고 안정적인 개발이 가능해요.
또한 NestJS는 모듈화된 아키텍처 덕분에 테스트가 용이하며, 프레임워크 차원에서 테스트 환경도 잘 지원해요. - 확장성
NestJS는 모듈 기반 아키텍처를 채택하고 있어서, 다양한 외부 라이브러리와 쉽게 결합할 수 있는 유연한 구조를 가지고 있어요. - 캡슐화
NestJS는 OOP(객체지향 프로그래밍)의 특성 중 하나인 캡슐화를 잘 따르고 있어요. Controller, Service, Repository 등을 모듈 단위로 구성해 기능을 명확히 구분할 수 있고, 이를 @Module() 데코레이터로 하나의 단위로 묶어 관리할 수 있어요. - 효율성
타입스크립트의 정적 타입 시스템, DI(Dependency Injection)과 IoC(Inversion of Control), 그리고 명확한 구조화를 통해 생산성 높은 개발이 가능해요. NestJS는 유지보수성과 확장성이 뛰어난 애플리케이션을 작성하는 데 매우 적합해요.
📒 NestJS vs Express
NestJS를 공부하다 보면 가장 많이 비교되는 프레임워크가 바로 Express예요.
그렇다면 왜 NestJS와 Express를 비교하고, 왜 NestJS를 선택해야 할까요?
🧩 Express란?
Express는 웹 및 모바일 애플리케이션을 위한 다양한 기능을 제공하는 간결하고 유연한 Node.js 웹 프레임워크예요.
많은 개발자들이 Express를 사용하고 있고, Node.js 생태계에서는 표준 웹 서버 프레임워크라고 해도 과언이 아니에요.
Express의 특징은 다음과 같아요:
- Node.js 기반 웹 프레임워크 1위로 많은 개발자들이 사용하고 있어요.
- 코드 작성 방식에 제약이 적기 때문에 자유도가 높아요.
- 방대한 생태계 덕분에 자료나 예시 코드가 매우 많아요.
- 타입스크립트를 사용할 수는 있지만, 세팅이 복잡하고 번거로운 편이에요.
- 빠르게 웹 서버를 구성할 수 있고, 단기간 MVP 구축에 적합해요.
🧩 NestJS와 Express의 차이점
- 자유도 vs 아키텍처 통일성
Express는 개발 자유도가 높은 대신, 프로젝트 규모가 커지거나 여러 개발자가 함께 개발할 경우 각자 아키텍처가 달라 유지보수가 어려워질 수 있어요.
반면 NestJS는 프레임워크 차원에서 명확한 아키텍처를 제공하기 때문에 코드 구조가 통일되어 협업 및 유지보수가 훨씬 수월해요. - 타입스크립트 지원
NestJS는 타입스크립트를 기본으로 지원하고, 모든 기능이 타입스크립트를 중심으로 설계되어 있어요. 반면 Express는 타입스크립트를 사용하려면 별도의 설정이 필요하고, 복잡한 경우가 많아요. - 적합한 사용처
빠르고 가벼운 웹 서버가 필요하다면 Express가 유리할 수 있어요. 하지만 규모가 크거나 장기적인 유지보수를 고려해야 한다면 NestJS가 훨씬 적합해요. - 기본 제공 기능
NestJS는 다양한 기능이 프레임워크에 기본 내장되어 있어 개발 생산성이 높고, 라이브러리 통합도 쉬워요. 반면 Express는 필요한 기능을 일일이 찾아서 설정해야 하기 때문에 초기 설정에 시간이 더 들어갈 수 있어요.
📒 참조
1.1 NestJS 소개
NestJS는 Node.js에 기반을 둔 웹 API 프레임워크로써 Express 또는 Fastify 프레임워크를 래핑하여 동작합니다. 기본으로 설치하면 Express를 사용합니다…
wikidocs.net
'NestJS' 카테고리의 다른 글
[NestJS] Unit Test (6) | 2025.04.09 |
---|---|
[NestJS] HMR (0) | 2025.04.09 |
[NestJS] 시작하기 (0) | 2025.04.09 |