본문 바로가기
카테고리 없음

Node.js란?

by jyee 2024. 10. 27.
728x90
반응형

 

 

node.js를 배워보고 싶은데 기본 지식이 전혀 없어서 공식문서, 블로그, 유튜브등 찾아보면서 정리해보았다.

 

Node.js란?

Node.js는 자바스크립트를 서버나 로컬 컴퓨터에서 실행할 수 있게 해주는 "자바스크립트 런타임 환경"이다. 

자바스크립트는 브라우저 내에 포함된 인터프리터 덕분에 별도 설치 없이 실행되지만 스크립트 언어라 특정한 프로그램 안에서 동작하는 프로그램이기 때문에 웹 브라우저(크롬, 사파리, 익스플로러, 파이어폭스 등)가 없으면 사용할 수 없는 프로그램이다.

자바스크립트를 웹 브라우저에서 독립시킨 개념으컴퓨터나 서버에서 자바스크립트를 실행하려면 Node.js가 필요하다. Node.js는 V8 자바스크립트 엔진을 기반으로 동작하며, 파일 시스템 접근이나 네트워킹 기능과 같은 서버 측 기능을 제공한다. 덕분에 웹 서버를 구축하거나 데이터베이스와 통신하는 등의 백엔드 개발을 자바스크립트로 할 수 있게 해준다.

 

*V8 JavaScript 엔진????

JavaScript 엔진은 자바스크립트 파일을 컴퓨터가 읽을 수 있도록 변환해주는 역할을 한다.

V8엔진은 원래 구글이 웹 브라우저인 chrome의 성능을 높이려는 목적으로 개발하여 코드 번역 방식을 바꿔서 개선하였다. 

구글이 오픈 소스로 공개하면서 V8엔진을 웹브라우저 뿐만 아니라 서버에서도 사용할 수 있게 되었다. 그래서  Node.js에서도 V8 엔진을 활용해서 서버에서 자바스크립트를 실행할 수 있게 된 것이다.

 


 

Node.js의 특징 

 

특징은 크게 5가지로 볼 수 있는데

 

1. 비동기 이벤트 기반 환경 

웹 서버들 대부분은 스레드를 기반으로 입출력을 처리하였지만 Node.js는 대규모 네트워크 서비스를 개발하기 위해 고안되었기 때문에 이벤트 기반으로 작동한다.  이벤트 기반의 비동기 처리는 입출력 작업을 기다리는 동안 다른 작업을 수행할 수 있기 때문에 CPU 자원을 효율적으로 활용할 수 있는 장점이 있다..

 

Node.js에서의 이벤트 기반처리는 작업을 요청할 때마다 이벤트가 발생하고 각 작업이 준비되면 그때 실행되는 방식이다. 예를 들어 첫 번째 작업의 이벤트가 발생하면 첫 번째 작업을 시작하고 두 번째 작업의 이벤트가 발생하면 두 번째 작업을 이어서 처리하는 방식이다.

이러한 상황을 바로 이벤트 기반의 ‘비동기 처리’라고 할 수 있다. 

이벤트 기반의 Node.js는 Non-Blocking I/O를 통해 입출력 작업이 끝날 때까지 기다리지 않고 다음 작업을 진행할 수 있다. 예를 들어, 첫 번째 작업이 진행 중에 두 번째 작업의 준비가 끝나면, 첫 번째 작업을 멈추지 않고도 두 번째 작업을 동시에 처리할 수 있는데.이러한 방식 덕분에 Node.js는 하나의 스레드로도 많은 작업을 빠르게 처리할 수 있게 된다.

 

*스레드???

프로세스 내에서  어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위 

 

* Blocking:

Node.js 프로세스에서 한 작업의 실행을 위해 다른 작업이 완료될 때까지 기다려야 하는 방식

 

* Non-Blocking:

A라는 작업 중 B작업을 실행시켜야 할 때 A작업이 끝나지 않더라도 기다리지 않고 B작업이 실행될 수 있도록 하는 방식

 

 

2. 단일 언어 사용

자바스크립트 기반인 Node.js는 프론트엔드와 백엔드 모두 동일한 언어를 사용할 수 있다. 

그래서 프론트엔드와 백엔드 간의 코드 공유가 가능하고, 하나의 팀이 동일한 언어를 사용하므로 협업이나 코드 관리가 훨씬 쉽다.

예를 들면 만약 프론트엔드에서 Math.random()을 써서 랜덤 숫자를 생성한다고 할 때, 같은 함수를 백엔드에서도 사용할 수 있어서 서버와 클라이언트가 동일한 로직을 공유할 수 있기 때문에, 데이터를 처리하는 방법에 일관성을 유지할 수 있다는 장점이 있다.

 

 

3.경량화

Node.js의 환경이 가볍고 코드 구조가 모듈화 되어 있기 때문에 병렬 작업과 대용량 데이터 처리에 높은 성능을 보장한다.

서버를 띄우는 데 필요한 리소스가 적어 효율적이고, 병렬 작업과 대용량 데이터 처리에 높은 성능을 보장한다.

특히 NPM(Node Package Manager)을 통해 다양한 라이브러리나 패키지를 쉽게 설치할 수 있기 때문에 빠르고 간편하게 필요한 기능을 추가할 수 있다.

https://www.npmjs.com/

 

npm | Home

Bring the best of open source to you, your team, and your company Relied upon by more than 17 million developers worldwide, npm is committed to making JavaScript development elegant, productive, and safe. The free npm Registry has become the center of Java

www.npmjs.com

 

 

 

4. 확장성 

새로운 모듈을 추가하는 과정이 간단하다. 프로젝트가 커질수록 관리가 어려워지는 경우가 많지만, Node.js는 기능을 독립적으로 개발하고 관리할 수 있어서 대규모 프로젝트에도 적합하다.

새로운 API 기능을 추가하고 싶다면, 그 기능만을 담당하는 모듈을 만들어 기존 코드에 추가하면 되기에 새로운 기능을 쉽게 추가하고 유지보수도 간편하게 할 수 있다는 특징이 있다.


Node.js 설치

https://nodejs.org/en/

 

Node.js — Run JavaScript Everywhere

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

 

728x90
반응형