어디가서 Node.js '개발자'라고 말 하지는 못 하지만 그래도 간단한 프로젝트에서는 언제나 Node.js를 사용해왔다. Node.js 사용자 정도 될 것 같은데, 사용자 입장에서 불편했던 점과 Nestjs + Typescript를 공부하면서 느꼈던 좋은 점을 적어보려 한다.
Node.js + js를 활용하면서 불편했던 점
- 요약: 대부분 높은 자유도에서 오는 피로감.
1. 좋은 프로젝트 구조를 생각해야 한다.
이건 높은 자유도에 따라오는 동전 뒷면같은 부분인데, 프로젝트를 시작시에 어떤 구조로 이 프로젝트 구조를 잡을지 생각해야하고 (시간도 없고 귀찮아지면) 결국 원래 썼던 구조를 따라가게..되는 단점아닌 단점이 있다. 팀원들과 함께 개발을 진행하게 되면 이 구조를 결정한 이유, 어떻게 잡힌 구조인지 설명해야 한다.
사실 아래처럼 이미 어느정도 자리잡은(?) 좋은 구조가 존재하긴 한다.
2. 많은 에러에 대비해야 한다.
간단한 API를 만든다고 생각하면 유저가 보내는 Body나 쿼리에서 최악의 케이스를 생각하고 null값, '', 기대와 다른 타입의 값들을 대비하고 막아주는 처리를 해줘야 하고, 런타임시에 특정 타입에서만 작동하는 메소드를 사용하는 경우 ( ex. .length 등) 에러가 나는 경우도 대비해야 하고.. 많은 것들이 습관화 되면 빠른 개발을 할 수 있지만 더 높은 자유도 때문에 더 신경이 곤두서는 느낌도 든다.
Typescript + Nestjs를 배워보면서 좋다고 느낀 점.
- 정해진 틀에서 오는 안정감, 규칙을 지키면 알아서 해주는 많은 기능.
1. 좋은 프로젝트 구조를 알아서 제공해 준다.
도메인 혹은 비즈니스 로직별로 묶어주는 모듈, 모듈내에 있는 API제공 Controller, 로직을 담은 Service, 이렇게 Nestjs에서 제공하는 아키텍처를 따라 개발하면 모듈별로 직관적으로 정리할 수 있다. 서로 다른 모듈끼리 결합시켜서 하나의 큰 로직을 만들 수 있다. E2E나 Unit 테스트를 같이 구성하도록 구조를 함께 잡아주는 것은 덤. 물론 이 구조는 특별한 것이 아니라 견고한 Node.js 프로젝트를 만들기 위한 구조일 수 있지만, 그래도 여러 구조중에 이렇게 써라! 정해주는 느낌이라 더 편하다고 할까..
2. 많은 에러를 대비해준다.
유효성 검증에 대한 것들을 DTO와 Validation Pipe등의 기능을 활용하면 정해진 Type에 대한 검증, 빈 값에 대한 검증, 자동 타입 변경등의 많은 역할을 대신해준다. Node.js에서도 여러 패키지를 활용하면 가능할 것 같지만 Nestjs는 이걸 굉장히 자연스럽고 또 쉽게 제공해준다는 느낌을 받았다.
기타) Status 나 응답 구조를 잡아주는 것도 Node.js의 사용자로서 편하다고 느꼈다.
* 입문시 좋은 강의
https://nomadcoders.co/nestjs-fundamentals/lectures/1940
* 읽으면 좋을 참조 글
'Developer > Web' 카테고리의 다른 글
GraphQL은 REST API와 무엇이 다를까? (Node.js + Apollo 예시) (0) | 2021.02.07 |
---|---|
What is Kafka?? (0) | 2021.02.01 |
CI? CD? Cloud Native? DevOps? 헷갈리는 용어 정리하기 (0) | 2021.01.27 |
Node.js는 Apache, 톰캣과 같은 개념과 무엇이 다른가? (0) | 2020.11.04 |