oris9

[Node.js] Node.js 란? 본문

Node.js

[Node.js] Node.js 란?

oris9 2024. 3. 1. 11:35

 

Node.js란

Chrome V8 JavaScript 엔진에 기반한 JavaScript 런타임 환경으로,

 

말 그대로

 

1) V8 자바스크립트 엔진으로 구동되며, 

** `V8 JavaScript 엔진`

웹 브라우저를 만드는 데 기반을 제공하는 오픈 소스 자바스크립트 엔진이다. 구글 크롬 브라우저와 안드로이드 브라우저에 탑재되어 있다.

V8은 자바스크립트를 바이트코드(bytecode)로 컴파일하고 실행하는 방식을 사용한다.

(자바스크립트는 인터프리터 언어라 한 줄씩 V8 같은 브라우저에 존재하는 JS엔진을 통해 컴파일되어 실행된다!)

 

 

2) JavaScript 런타임 환경으로, 웹 브라우저 바깥에서 자바스크립트 코드를 실행할 수 있게 해준다.

 

 

Node.js를 사용하면 서버 사이드에서 JavaScript를 사용하여 웹 애플리케이션을 개발할 수 있으며,

웹 애플리케이션, 마이크로서비스, API 서버 등 다양한 용도로 활용가능하다.

 

 

Node.js의 특징으로는

1) Non-blocking I/O (비동기 방식으로 I/O 작업을 처리하여 블로킹을 최소화)

즉, 비동기 방식으로 처리하므로 순서와 상관없이 처리속도에 따라 결과를 내보내므로 높은 성능을 가진다.

요청이 많고 크기가 작은 데이터를 자주 주고받는 서비스에서 특히 효과적이므로 SNS나 채팅서비스에 많이 사용된다.

 

2) 단일 스레드

Node.js는 단일 스레드 이벤트 루프를 통해 이벤트 처리를 비동기적으로 처리하므로, 이를 통해 동시성을 높일 수 있다.

하지만 그렇기 때문에 코드가 CPU연산을 많이 요구하면 감당이 어렵기 때문에 멀티미디어 처리, 대규모 데이터 처리와 같은 CPU를 많이 사용하는 작업에는 적합하지 않다.

 

3) npm(Node Package Manager)을 통해 다양한 라이브러리와 모듈을 쉽게 설치하고 관리할 수 있다.

npm ?     https://oris9.tistory.com/8

 

 

즉, Node.js는 실시간 웹 애플리케이션, 실시간 채팅 애플리케이션, RESTful API 서버 등과 같이 대규모의 동시 연결을 처리해야 하는 경우에 적합하며, 또한 서버 사이드 렌더링(SSR)을 통한 웹 애플리케이션을 개발할 때, JavaScript를 사용하여 클라이언트와 서버 사이드에서 코드를 공유하고자 할 때도 Node.js를 사용할 수 있다.

 

**`서버 사이드 렌더링(SSR)`

웹 앱에서 사용자에게 보여지는 페이지를 서버 측에서 렌더링하여 클라이언트에게 전달하는 기술.

일반적으로 클라이언트 측에서는 브라우저에서 JavaScript를 사용하여 동적으로 페이지를 생성하고 표시하지만,

SSR은 서버에서 페이지를 미리 렌더링하여 클라이언트에게 전달함으로써 초기 페이지 로딩 속도를 향상시키고 SEO를 개선하는 데 도움을 준다.
컨텐츠가 자주 변경되지 않는 경우에 SSR을 사용하여 초기 로딩 속도를 향상시키면 좋다.

 

 

 

 

 

(추가) Node.js 성능 최적화

클러스터링을 통해 다중 프로세스를 활용하여 CPU를 병렬로 활용한다.

(싱글스레드의 단점 개선, 클러스터 모듈을 통해 단일프로세스를 멀티프로세스로 늘려 사용한다. 이때 추가로 고려해야할 사항이 많으므로 다양한 매니저를 사용하거나 신경써서 작업해야한다.)
캐싱을 통해 빈번하게 사용되는 데이터나 연산 결과를 저장하여 반복 계산을 최소화한다.
적절한 모듈 및 패키지를 선택하여 사용한다. (일부 패키지는 성능에 부정적인 영향을 줄 수 있으므로 주의가 필요)
코드를 최적화하여 불필요한 연산을 줄이고, 메모리 누수를 방지한다.

메모리 누수, 가비지 컬렉션 - 글 추가 예정

 

 

(추가) Node.js와 프레임워크 - Express, Nest

 

프레임워크를 통해 개발생산성향상(내장된 각종 라이브러리와 미들웨어를 통해),

표준화된 구조 제공(개발규칙을 부여함으로써 코드 및 구조의 통일성을 향상),

보안 및 안정성 강화 등의 장점을 얻을 수 있다.

 

 

노드와 함께 자주 사용되는 프레임워크는 대표적으로 아래 두가지가 있다.

 

1) Express.js

가장 인기 있는 Node.js 웹 애플리케이션 프레임워크로, 웹 서버 및 API를 쉽게 개발할 수 있도록 돕는다.

 

2) Nest.js

Angular의 구조와 비슷한 구조(구조적이고 모듈화된 방식)를 가진 프레임워크로,

TypeScript 기반의 서버 사이드 애플리케이션을 개발할 수 있다.

Nest.js의 모듈 시스템은 코드의 가독성과 유지 보수성을 높여 대형 프로젝트를 관리할 때 용이하다.

 

 

'Node.js' 카테고리의 다른 글

[Node.js] 오류 처리, 에러핸들링  (0) 2024.03.03
[Node.js] 미들웨어에 대해 알아보기  (0) 2024.03.02
Express 라우터, 쿠키, 세션 플래시  (0) 2024.02.20
Mongoose express  (0) 2024.02.17
[Node] npm  (0) 2024.02.04