Nest JS 란
Nest.js 는 효율적으고 확장 가능한 Node.js 서버 측 애플리케이션을 구축하기 위한 프레임워크이다.
JacaScript를 사용하고, TypeScript로 구축되어 있어 서버 애플리케이션 개발 시 발생할 수 있는 오류들을 사전에 방지할 수 있기에 안정적인 코드를 작성할 수 있다는 특징이 있다.
Node.js
Chrome V8 JacaScript 엔진으로 빌드 된 JavaScript 런타입이다.
즉, 노드를 사용해 다양한 JavaScript 애플리케이션을 실행할 수 있으며 서버를 실행하는 데 제일 많이 사용된다.
- Node.js는 JavaScript를 서버에서도 사용할 수 있도록 만든 프로그램이다.
- Node.js는 V8이라는 JavaScript 엔진 위에서 동작하는 자바스크립트 런타임 (환경) 이다.
- Node.js는 서버사이드 스크립트 언어가 아니며, 프로그램 (환경) 이다
- Node.js는 웹서버와 같이 확장성 있는 네트워크 프로그램을 제작하기 위해 만들어졌다.
Node.js 를 사용하는 이유
- Node.js를 사용하려면 먼저 JavaScript를 배워야한다.
- Node.js는 JavaScript를 사용하기 위해 만들어진 것이기 때문이다.
- JavaScript는 C/C++, Java 와 같은 프로그래밍 언어이다.
- 하지만 이름에서 알 수 있듯 JavaScript는 독립적인 언어가 아닌 스크립트 언어이다.
- 스크립트 언어는 특정한 프로그램 안에서 동작하는 프로그램이기 때문에 웹 브라우저 프로그램 안에서만 동작을 한다.
- 즉, 웹 브라우저(크롬, 사파리, 익스플로러, 파이어폭스 등)가 없으면 사용할 수 없는 프로그램이다.
- 여기서 Node.js가 나오는 이유가 된다.
- 즉, JavaScript 를 웹 브라우저에서 독립시킨 것으로 Node.js를 설치하게 되면 터미널프로그램(윈도우의 cmd, 맥의 terminal 등)에서 Node.js를 입력하여 브라우저 없이 바로 실행할 수 있다.
- 하지만 JavaScript에서 분리된 언어이기 때문에 문법은 같다.
- 이렇게 Node.js를 이용하여 웹 브라우저와 무관한 프로그램을 만들 수 있게 되었다.
- 중요한 것은 Node.js를 이용하여 서버를 만들 수 있다는 것이다.
- 중요한 이유는 이전까지 Server-Client 웹사이트를 만들 때 웹에서 표시되는 부분은 JavaScript 를 사용하여 만들어야만 했으며, 서버는 Reby, Java 등 다른 언어를 써서 만들었어야 했는데 마침내 한 가지 언어로 전체 웹 페이지를 만들 수 있게 된 것이다.
출처: https://hanamon.kr/nodejs-%EA%B0%9C%EB%85%90-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0/
또한, Nest.js는 마이크로서비스 아키텍쳐 개발 스타일을 제공하기 때문에 모듈을 통해 확장 가능하도록 설계되어 있다. **
따라서 모듈 별로 테스트 코드를 쉽게 작성할 수 있으며 이를 통해 Jest 테스트 환경이 자동으로 제공된다.
이를 통해 애플리케이션의 규모가 커질수록 유지보수와 확장성을 높일 수 있다.
Jest 테스트
페이스북에서 개발한 JavaScript 코드의 확장성을 테스트할 수 있도록 테스트 코드의 작성을 도와주는 자바스크립트 테스트 프레임워크
참고: https://velog.io/@cabbage/Jest-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%BD%94%EB%93%9C%EC%99%80-Jest%EB%9E%80
Express 프레임워크를 토대로 만들어졌으며, Fastify 프레임워크나 다른 프레임워크를 선택해서 사용할 수 있다.
즉 Nest.js는 라우팅, 보안, 데이터베이스 연동 등의 다양항 기능을 내장하고 있어 고성능을 기대할 수 있는 프레임워크라는 것을 알 수 있다.
Nest.js는 Service, Controller 등의 개념을 사용한 애플리케이션을 구성하고 있어 Spring 프레임워크와 유사한 구조를 가지고 있다.
Express 란
Express는 Node.js를 위한 가장 기본적이고 널리 사용되는 웹 프레임워크이다.
이는 간결하고 유연한 라우팅 시스템을 제공하여 개발자가 빠르게 웹 애플리케이션을 구축할 수 있게 해주기 때문이다.
Express는 미들웨어 아키텍처를 사용하여 요청과 응답 사이에 다양한 기능을 쉽게 추가할 수 있다.
이는 애플리케이션의 기능 확장성을 높여준다는 말이 된다.
또한, Express 는 Node.js의 핵심 모듈과 완벽하게 호환되며 다양한 서드 파티 라이브러리와의 통합이 용이하다.
이처럼 Express의 단순함과 유연성은 작은 규모의 프로젝트나 프로토타입 개발에 적합하다.
하지만 Express 는 프레임워크 자체가 제공하는 기능이 제한적이기 때문에 대규모 애플리케이션 개발에는 다소 불편할 수 있다.
Express와 Nest.js 선택의 기준
개발자가 Nest.js와 Express 중에서 선택할 때 가장 고려해야할 요소는 프로젝트의 규모, TypeScript의 숙련도, 프로젝트의 특성이다.
대규모 애플리케이션 개발이나 TypeScript 를 선호하는 개발 환경에서는 Nest.js가 더 적합할 수 있다.
Nest.js는 타입 안정성과 모듈화를 강조하기 때문에 대규모 애플리케이션의 유지보수와 확장성은 고려한 설계 때문이다.
반면, 작은 규모의 프로젝트 혹은 빠른 개발 속도를 요구하는 경우엔 Express 가 더 적합할 수 있다.
Express 는 설정이 간단하고 빠른 개발이 가능하기에 Node.js 의 기본적인 성능을 충분히 활용할 수 있기 때문이다.
더불어 프로젝트의 특성에 따라 필요한 라이브러리와의 호환성도 고려해야 한다.
Express 는 널리 사용되기 때문에 다양한 라이브러리와의 호환성이 높지만, Nest.js는 최신 기술과의 통합에 더 초점을 맞추고 있다.
결국 Nest.js와 Express 의 선택은 개발자의 선호도, 프로젝트의 요구사항 그리고 개발 환경에 따라 달라질 수 있기 때문에
각 프로젝트 환경과 본인의 기술 스택에 맞게 적절한 프레임워크를 선택하는 데에 집중하면 된다.
정리
Nest.js는 Node.js 기반의 프레임워크로 JacaScript 혹은 TypeScript 를 통해 서버 애플리케이션을 개발할 수 있는 백엔드 웹 프레임워크이다.
마치며
Java Spring 을 공부하다가 처음으로 Node.js, Nest.js 를 접하게 되었다. . 근데 아직은 아무것도 모르는
그래서 공부하는 프레임워크의 의미를 명시하고자 다시 정리하는 글임니다.. 모두들 개인 공부도 화이팅 !
'Study' 카테고리의 다른 글
[AWS] EC2에 (리눅스 기반) 우분투 서버 실행하기 (0) | 2023.08.31 |
---|---|
[Cloud] 운영 환경 구성 (0) | 2023.08.28 |
[Spring MVC] JDBC 기반 데이터 엑세스 계층 (0) | 2023.07.13 |
[Spring MVC] 예외 처리 (1) | 2023.07.03 |
[Spring MVC] 서비스 계층 (0) | 2023.06.24 |