nest로 토이 프로젝트를 진행하는데 진행 하면서는 스프링과 크게 차이가 없다는 생각을 했다.
둘의 차이점? 특징?이 궁금하여 nest의 개념 정리를 해보겠다.
nestjs란?
nest는 효율적이고 확장 가능한 node.js 서버 측 애플리케이션 구축을 위한 프레임워크이다.
최신 javaScript를 사용하고 TypeScript로 구축되어있다.
OOP, FP, FRP 요소를 결합한다.
내부적으로 Express를 사용하지만 Fastify와 같은 다양한 라이브러리와의 호환도 제공한다.
생각보다 잘 와닿지 않아서 좀 나눠서 정리를 해보겠다.
node.js 란?
node.js는 크롬 V8엔진을 기반으로하는 자바스크립트 런타임이다.
풀어서 설명하면 크롬에 내장되어있는 V8엔진을 크롬 브라우저 외부에서 꺼내 쓸 수 있도록 별도의 실행환경을 구축한것 이다.
(v8엔진: 자바스크립트를 바이트코드로 컴파일하고 실행하는 높은 성능의 오픈소스 엔진)
TypeScript란?
typescrip가 등장한 이유를 알기위해선 자바스크립트의 큰 단점을 알아야한다.
자바 스크립트는 typeSafe 하지 못하다는 특징을 가진다.
typeSafe란 연산이나 조직에 있어 논리적이 않은 것에 엄격히 체크를하여 runtime시 오류를 막는 것이다.
예를 들면 문자열에 정수 값인 1이 할당안되도록 하는것이 있다.
즉 typeSafe하지 않은 자바스크립트는 문법의 일관성이 떨어지는 큰 단점을 가진다.
이 단점을 해결하기위해 TypeScript가 등장했다.
TypeScript는 자바스크립트의 슈퍼셋 언어로 자바스크립트 + 타입으로
자바스크립트 언어에 타입을 부여함으로 컴파일시 에러를 잡을 수 있게해준다.
OOP, FP, FRP
- OOP 객체지향프로그래밍 : 객체 관점에서 프로그래밍 하는 익숙한 개념
- FP 함수형 프로그래밍 : side effect가 없는 순수함수를 구현함으로 프로그램 디자인, 여러개의 작은 함수로 큰 함수 구현
(java 람다식 글에서 정리함)
- FRP (Functional Reactive Programming): 함수형 프로그래밍 + 반응형 프로그래밍으로 시간에 따른 값으 변화를
모델링하고 이를 조작하는데 초점을 맞ㅈ추며, 비동기 데이터 흐름과 사용자 입력 이벤트를 효율적으로 처리한다.
node.js 특징
node.js의 특징은 그대로 nest의 특징이 되고 이 특징들이 spring과 동작의 차이를 주게된다.
- Single Tread기반
- Event Driven 아키텍처
- Non Blocking I/O 모델
각 특징에 대해 다음 글에 자세히 설명하겠다.
'Nest' 카테고리의 다른 글
| [Nest] nest guard (0) | 2024.02.29 |
|---|---|
| [Nest] 데코레이터, 메타데이터 (0) | 2024.02.26 |
| [Nest] NestJs 구조 (0) | 2024.01.29 |
| [Nest] NodeJs Event Loop (0) | 2024.01.26 |
| [Nest] Node.js 특징 (single Thread, Nonblocking) (0) | 2024.01.15 |