원래 쓰던 프로젝트를 결국 Nestjs로 마이그레이션했다.
이유는 아래와 같다.
원래도 express에서 각 계층 로직을 분리해서 사용했었으며 Nestjs를 배우다가 Nestjs의 철학과 모듈, 컨트롤러, 서비스를 분리하는 아키텍처가 원래도 본인이 개발하던 방식과 크게 다르지 않아 익숙했기 때문
TypeScript를 적극적으로 지원하여 버그와 에러를 미리 확인 가능하며 인수, return 값 등을 확인 가능해 개발자 편의를 제공
일관적인 라이프사이클
express에선 오류가 발생했을때 어디서 발생했는지 찾으려면 콜백을 하나하나 되짚어가야했지만 Nest에선 실행되는 순서와 로직의 역할을 확실하게 파악할 수 있으며 개발시간의 단축을 불러와줌
편리한 확장성과 유지보수
새로운 기능을 추가하려면 모듈을 새로 만들어 테스트 한 뒤 app 모듈에 추가하면 됨.
각 모듈 사이는 기본적으론 완벽하게 분리되어 있으며 필요할경우 exports로 public화 해 사용 가능하기 때문.
이러한 점은 멀리 생각해서 현재 사용하는 MongoDB를 RDB로 바꾸거나 통신 로직을 GraphQL로 바꿀 때 용이하다고 생각했다. 바꿀 수도 있다고 생각이 든 이유는 NoSQL을 경험해보고 싶어 MongoDB를 선택했었으며 이로 인해 다른 테이블을 참조할 때 로직이 복잡해졌기 때문이다. (그러나 단점보다 장점이 더 많이 느껴졌기 때문에 실제로 바꿀지는 미정)
주관적으론 배우다보니 Nestjs를 두고 굳이 Express를 사용할 이유를 못느꼈다.
반강제적으로 지켜야하는 아키텍처 덕분에 호출 순서도 직관적으로 느껴지며 코드의 재사용성도 더 신경쓰며 만들 수 있게 되었다.
인터셉터 등 Nestjs에서 새로 제공해주는 기능들이 다소 복잡하고 번거로울 수 있어도 너무 강력하고 에러를 편하게 잡아주는 덕분에 결국 개발 시간이 단축되었다. 매우 만족
안녕하세요! express에서 nestjs로 마이그레이션할때, 프로젝트 자체를 새로 시작하셨나요?