티스토리 뷰

JavaScript/Node.js

[Node.js]NestJS

Vagabund.Gni 2023. 12. 4. 13:50
728x90
반응형

목차

     

    며칠 전에 동기들과 이야기를 하다, NestJS라는 것이 굉장히 편하다는 소식을 전해 들었다.

     

    기존의 Express.js에 비해 많은 기능을 제공한다는 것 외에는 정보가 없어서

     

    계속 궁금해만 하다 주말이 된 김에 정리하고 넘어가기로 했다.

     

    이 글에선 먼저 NestJS의 역사를 먼저 알아보고, 특징과 장단점을 알아본 뒤 글을 마치도록 하겠다.

     

    NestJS

     

    [Node.js]NestJS

    NestJS는 2017년 폴란드의 개발자 Kamil Myśliwiec에 의해 소개된 오픈소스 프레임워크이다.

     

    좀 더 구체적으로는 Node.js 런타임 위에서 동작하는 타입스크립트용 오픈소스 백엔드 프레임워크이며,

     

    지속적인 성장세를 보이며 현재는 Express.js 다음으로 널리 사용되고 있다고 한다.

     

    NestJS는 모듈을 기반으로 한 아키텍처를 사용해 코드를 일관되고 깔끔한 형식으로 작성할 수 있어

     

    여러 사람의 협업에 특히나 장점을 보인다고 한다. 계속해서 그 특징과 장단점에 대해서 알아보자.

     

    Features & Pros

     

    NestJS는 아래와 같은 특징 및 장점을 가져 강력하고 유연한 백엔드 프레임워크가 되며,

     

    다양한 유형의 애플리케이션 개발에 적합하다.

     

    TypeScript Support

     

    NestJS는 타입스크립트를 기반으로 만들어져 그 최신 기능을 사용할 수 있다.

     

    따라서 강력한 타입 안전성과 정적 분석을 통해 코드의 품질을 높이고 코드 오류를 초기에 파악할 수 있다.

     

    Modular Architecture

     

    NestJS는 코드를 재사용 가능하고 분리된 모듈로 구성할 수 있도록 모듈식 구조를 채택한다.

     

    이는 복잡한 애플리케이션의 유지 보수를 용이하게 하며 코드의 재사용성 및 확장성을 높인다.

     

    Dependency Injection (DI)

     

    NestJS는 의존성 주입을 지원하여, 의존성 관리를 단순화하고 테스트 용이성을 향상한다.

     

    이를 통해 모듈식 및 유지 관리 가능한 코드를 쉽게 작성할 수 있다.

     

    특히 스프링 프레임워크에 익숙한 내게는 반가운 소식인데, Express.js는 의존성 주입을 지원하지 않기 때문이다.

     

    Scalability

     

    NestJS는 이벤트 기반 아키텍처와 반응형 프로그래밍 모델을 활용하여 

     

    대규모 동시 요청을 효율적으로 처리할 수 있도록 확장성이 뛰어나게 설계되었다고 한다.

     

    따라서 Redis, RabbitMQ, WebSockets와 같은 도구와 잘 통합되어 실시간 애플리케이션 구축에 적합하다.

     

    Compatibility with Express.js

     

    Express.js 프레임워크 위에 구축되어 있어, Express의 강력한 기능을 활용하면서 동시에 추가적인 기능을 제공한다.

     

    이는 Express 미들웨어 생태계와의 호환성을 보장하고, 기존 Express 미들웨어 및 라이브러리와 쉽게 통합할 수 있게 한다.

     

    이런 특징 때문에 Express.js에서 NestJS로의 마이그레이션이 상대적으로 쉽다고 한다.

     

    Documentation and Community Support

     

    NestJS는 포괄적인 설명, 튜토리얼, 예제를 제공하는 우수한 공식 문서를 가지고 있다.

     

    또한 스웨거 등을 이용한 문서화를 쉽고 강력하게 지원한다고 하며 

     

    활발하고 성장하는 커뮤니티가 지원, 플러그인, 확장 기능을 제공하여 

     

    개발을 가속화하고 발생할 수 있는 문제를 해결하는 데 도움을 준다고 한다.

     

    Cons

     

    계속해서 단점에 대해 정리하자.

     

    Boilerplate Code

     

    NestJS는 견고한 기반과 아키텍처 지침을 제공하지만, 

     

    이는 Express.js와 같은 미니멀리스트 프레임워크에 비해 더 많은 코드 작성을 필요로 할 수 있다.

     

    모듈성과 관심사의 분리에 중점을 둔 NestJS의 접근 방식은 때때로 추가적인 보일러플레이트 코드를 생성하며,

     

    이는 개발 시간을 증가시킬 가능성이 있다.

     

    Performance Overhead

     

    NestJS는 대부분의 시나리오에서 효율적이고 잘 수행되지만, Express와 같은 미니멀리스트 프레임워크에 비해 

     

    추가적인 추상화와 계층을 도입함으로써 약간의 성능 오버헤드가 발생할 수 있다. 

     

    대부분의 애플리케이션에서 이러한 성능 영향은 무시할 만하지만, 생산성 혜택에 비해 단점으로 여겨질 수 있다.

     

    Limited Ecosystem

     

    NestJS는 Express 미들웨어와의 호환성으로 인해 많은 혜택을 누리지만, 

     

    Express나 Koa와 같은 다른 프레임워크에 비해 상대적으로 작은 생태계를 가지고 있다. 

     

    이는 NestJS에 맞춰진 특정 플러그인이나 라이브러리를 찾기가 더 제한적일 수 있으며, 

     

    비록 커뮤니티가 지속적으로 성장하고 있지만, 이는 여전히 고려해야 할 단점이 된다.

     

    Summary

     

    NestJS는 확장 가능하고 유지보수가 쉬운 프로덕션 레벨의 개발을 쉽게 할 수 있도록 도와주는 프레임워크이다.

     

    국내 기업 중에서는 리디, 토스, 당근 등에서 사용하며 점유율을 점차 높이고 있으며, 빠르게 성장 중이기 때문에

     

    배워두면 써먹을 곳이 분명 있을 것으로 보인다.

     

    특히 나처럼 스프링 프레임워크에 익숙한 개발자도 Node.js에 쉽게 적응할 수 있게 해 준다는 점이 매력적이었다.

     

    얼른 사용해서 기초적인 개발을 해보고 싶다!

    반응형
    댓글
    공지사항
    최근에 올라온 글
    최근에 달린 댓글
    Total
    Today
    Yesterday
    링크
    «   2024/06   »
    1
    2 3 4 5 6 7 8
    9 10 11 12 13 14 15
    16 17 18 19 20 21 22
    23 24 25 26 27 28 29
    30
    글 보관함