본문 바로가기
개발공부/NestJS

NestJs 밋업 Shall We NestJS? 정리

by bzerome240 2023. 8. 3.

 

NestJS 책을 읽고 나서 강의를 봐볼까?해서 유투브 검색중에 밋업 영상을 발견했습니다.

핵심만 요약돼있는 영상이라 좋네요.

 

00:00 오프닝
07:29 남병관: NestJS 시작하기
58:18 이상훈: Angular 프론트엔드 개발자가 본 NestJS
1:21:20 이동현: NestJS에서 Hexagonal Architecture 구현하기
2:02:29 김수현: NestJS와 함께한 3년간 고군분투기
2:46:28 마무리

 

 

핵심키워드: controllers / providers / modules / pipes

 

 

서버 아키텍처를 쉽게 만들 수 있도록 기본 아키텍쳐를 제공한다.

CRUD에 필요한 요소들을 가볍게 세팅해준다.

 

Controller

  • 우리가 아는 controller
  • @Get, @Post, @Put, @Delete
  • @Param, @Body, @Session @Query, @Headers, @Ip
  • Dto로 입출력 정의

 

Provider

  • 제일 어려운 개념 "의존성 주입의 대상"
  • Controller에서 Service 코드의 함수를 잘 모르지만 사용한다 == 의존한다
  • 실제 구현 대상을 '주입' 해준다면 어떤 클래스를 넣어줄지 결정만 하면된다. 추상과 구현이 분리되므로 코드가 유연하고 테스트가 편하다.
  • @Injectable = provider 라고 알려주는 것
  • Module > providers 에 추가

 

Module

  • 모듈은 쉽게말해 큼직큼직하게 묶은것이다.
  • imports: 갖다 쓸 모듈, controllers: 외부 노출할거, providers: 의존성 주입할거, exports: 다른 애들이 쓸거

 

Pipe

  • input을 원하는 형태로 바꾸거나, 타당성을 검증
  • ValidationPipe, ParseIntPipe, ParseArrayPipe 등...

 


 

NestJs 도입한 이유, 장점

의존성 역전 도구 제공, 타입언어, node 생태계

의존성 주입, 모듈화, 유효성 검사, 비동기, 로깅, 인터셉터

 


 

클린아키텍처: 고소준에 의존을 하도록 하는것

헥사고날 아키텍처: port(인터페이스)와 adapter(커뮤니케이션) 패턴

=> 두 패턴 다 외부에 의존하지 않는 도메인 로직을 가져야한다.

 

헥사고날 아키텍처 장점

1. 기술 스택 변경이 용이하다 ex) mysql -> postgresql

2. 새로운 API 뚫기

3. 테스트 쉬움

5. 외부 요인으로 인해 도메인 모델을 수정하지 않아도된다.

 

In port : 도메인이 들어오는 요청 ex) API

Out port :  도메인이 외부로 요청 ex) DB, Messaging

In Adapter : 실제 인터페이스의 구현이 도메인 내부에 있는 것, 외부 어댑터는 단순히 그 구현을 사용한다.

Out Adapter : 영속성 계층으로 요청을 보낸다.어댑터에서 실제 인터페이스 구현이 발생한다. 도메인 계층에서는 단순히 그것을 사용한다.

 

 

728x90
반응형

댓글