읽은 글 : Server side architecture with Node and Typescript using Nest

·2020년 9월 11일
2

아침 글읽기

목록 보기
5/7
post-thumbnail

Nest.js Documentation

Server side architecture with Node and Typescript using Nest

Take your Node backend to the next level with NestJS

stackshare : NestJS


오랜만에 새로운 서버를 만들게 되었다. 여행도 가기 전 계획 세울 때가 제일 재미있듯, 개발도 본격적으로 구현하기 전 이번엔 어떻게 만들어 볼 수 있을지 고민할 때가 가장 즐거운 것 같다. 레파지토리도 없는 지금이 딱 🥰 그런 단계이다.

 

이번에도 nest.js

이번 프로젝트에서도 최근 자주 사용한 nest.js 로 서비스를 구축할 계획이다. 몇 가지 현실적인 이유들이 있었는데 가장 큰 이유는 아무래도 MVP 로 진행되는 프로젝트라 새로운 스택을 탐험할 😂 시간적 여유가 없다는 것이었다. 손에 익은 스택으로 좌충우돌 없이 빠르게 완성시켜야 하기 때문에 크게 고민할 것 없이 nest.js 를 선택했다.

그런데 한편으로는 내가 nest.js 를 가장 편하게 생각하는만큼 실제로 nest.js 를 잘 알고 있는지 의문이 들었다. 어떻게 쓰는지의 문제라기보다, 누군가 내게 nest.js 의 특징과 장점을 물어본다면 딱히 잘 설명할 자신이 없었다. (그냥... 예쁘고 편해요...)

그래서 이번에는 다시 한 번 nest.js 의 철학을 좀 곱씹어보며! 개발을 할 수 있으면 더 재미있겠다는 생각에 관련 글들을 많이 찾아보게 되었다.

목적은 프로젝트를 진행하며 실감해볼 키워드들을 찾아내기!

Philosophy
In recent years, thanks to Node.js, JavaScript has become the “lingua franca” of the web for both front and backend ~ ... However, while plenty of superb libraries, helpers, and tools exist for Node (and server-side JavaScript), none of them effectively solve the main problem of - Architecture.

Nest provides an out-of-the-box application architecture which allows developers and teams to create highly testable, scalable, loosely coupled, and easily maintainable applications. The architecture is heavily inspired by Angular.

express, koa, flask 와 같은 경량 프레임워크와 비교했을 때 nest.js 는 확실히 강제하는 아키텍처가 있다. 아직은 막연하게 수납이 잘 되어서 예쁘다는 정도의 감상이지만, 이 아키텍처가 확장이 용이한 형태 - 라고 하는데 이 부분을 좀 더 이해할 수 있게 되면 좋겠다.

It uses TypeScript and combines elements of OOP, Functional programming and Reactive Programming.

OOP 는 납득이 되었다. 모든 모듈과 그 모듈을 구성하는 controller, provider 들이 class 니까. functional programming 과 reactive programming 은 개념도 잘 모르겠고 nest.js 에서 어떻게 쓰이고 있다는 건지는 더더욱 모르겠다. 😛

Nest uses decorators to define recognise components inside our code. This kind of approach is also called meta-programming

메타 프로그래밍 저번 타입스크립트 때도 그렇고 계속 등장하는데 프로그램이...코드를...수정하게 하는 것...이 데코레이터를 사용하는 것과 어떻게 연결이 될 수 있을까! 데코레이터를 달아두면서 사실상 해당 함수를 랩핑하고 있어서일까? (그렇다면 리액트의 HoC 도 메타 프로그래밍일까?)

1개의 댓글