<NestJS로 배우는 백엔드 프로그래밍> 서평

2023. 2. 22. 00:15책 서평

728x90

 

1회차 완독후 나의 느낌

Node.js를 공부하다 Express.js의 자유분방함에 JavaScript, TypeScript에는 Spring boot와 같은 프레임워크가 없을까? 라고 찾아보던중 Nest.js를 알게되었다.

폴더 구조며 app.js의 이름이나 기타 사소한 선택지로부터 엄청난 자유도를 보여주었던 Node.js와는 달리

폴더 구조도 초기 세팅에서 정해주고, 명령어 nest g를 통한 아래의 것들을 전부 뚝딱! 생성할수있는 Nest.js의 매력에 흠뻑 빠져버렸다.

┌───────────────┬─────────────┬──────────────────────────────────────────────┐
  │ name          │ alias       │ description                                  │
  │ application   │ application │ Generate a new application workspace         │
  │ class         │ cl          │ Generate a new class                         │
  │ configuration │ config      │ Generate a CLI configuration file            │
  │ controller    │ co          │ Generate a controller declaration            │
  │ decorator     │ d           │ Generate a custom decorator                  │
  │ filter        │ f           │ Generate a filter declaration                │
  │ gateway       │ ga          │ Generate a gateway declaration               │
  │ guard         │ gu          │ Generate a guard declaration                 │
  │ interceptor   │ in          │ Generate an interceptor declaration          │
  │ interface     │ interface   │ Generate an interface                        │
  │ middleware    │ mi          │ Generate a middleware declaration            │
  │ module        │ mo          │ Generate a module declaration                │
  │ pipe          │ pi          │ Generate a pipe declaration                  │
  │ provider      │ pr          │ Generate a provider declaration              │
  │ resolver      │ r           │ Generate a GraphQL resolver declaration      │
  │ service       │ s           │ Generate a service declaration               │
  │ library       │ lib         │ Generate a new library within a monorepo     │
  │ sub-app       │ app         │ Generate a new application within a monorepo │
  │ resource      │ res         │ Generate a new CRUD resource                 │
  └───────────────┴─────────────┴──────────────────────────────────────────────┘

Spring을 제대로 공부해본 적은 아직 없지만, 하면서 이거 정말 Spring과 비슷하다 라는 생각이 들었다.

이는 Nest.js도 Spring, Django와 같이 완전 관리형 웹 프레임워크(Opinionated Framework)에 속하기 때문이고, 미니멀리즘 웹 프레임워크인 Express.js와는 상반되는 개념이기에 입문을 Express.js로 했던 나로써는 "이렇게 다 떠먹여주는 웹 프레임워크는 처음이야.." 라는 생각이 들었다.

책의 첫 내용에는 Nest.js의 장점과 점유율은 Express.js에 비해 낮지만 차세대 웹 프레임워크라고 가히 불릴만 한지에 대해 나오며 이 책 한권에서 전반적으로 다룰 기능들에 비해 서술이 되어있다.

그 후 각 역할마다 챕터를 나누어 구현하는 식으로 진행되었다.

환경변수 설정, 요청 유효성 검사, 인증, 로깅, 헬스 체크, CQRS 등... 유용한 기능 구현을 꾹꾹 눌러담은 압축판이라는 느낌이 강했다.

(어차피 ORM을 통한 CRUD는 그렇게 어렵지 않다고 생각해서 여기서 빠진것 같다.)

책 페이지 수도 약 300페이지밖에 되지 않아 여타 두꺼운 책들에서 오는 중압감[?] 에서도 해방될수 있는 좋은 기회라 생각하게되어 약 1주일정도의 시간을 가지고 현재 부트캠프를 듣고있는 동기 형과 함께 페어프로그래밍 식으로 공부를 진행하여 어제부로 1회차 완독을 끝냈다.

 

 

이런점이 좋았어요

헬스 체크, 테스트 코드 작성후 커버리지 보기, CQRS, 클린 아키텍처 적용 등

주니어 개발자의 입장으로써 CRUD 외 궁금했던 사항에 대해 콕콕 짚어주는 느낌이 들어서 좋았습니다.

 

유저 서비스에 적용하려는 방법 외에도 맨 처음 챕터마다 이 기능은 이런 방법으로도 적용할 수 있다는것을 보여주어

좋았습니다.

 

실습 외에도 후반에 CQRS 패턴, 클린 아키텍처, SOLID 객체지항 설계 원칙등 다시한번 이론을 다질수 있는 시간이 있어 좋았습니다.

 

쉬어가는 페이지에 대상 독자가 궁금해 할만한 사항에 대해 정리되어있어 좋았습니다.

이런점이 아쉬웠어요

매 챕터마다 코드블럭 위에 파일 이름이 있을때도 없을때도 있어서 파일 이름이나 네이밍을 github에 들어가서 보거나 다음장을 넘겨 보는게 조금 불편했습니다.

 

매 챕터가 끝나고 나면 책만으로도 공부할 수 있게 폴더 구조를 한번 보여준다면 좋을것 같습니다.

 

몇몇 책에있는 예제 코드가 github 저장소에 저장되어 있는 코드와 조금 차이가 있는데 이건 수정이 필요할것 같습니다.