Node.js란 ?
Node.js는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임이다.
Node.js는 이벤트 기반, 논 블로킹 I/O 모델을 사용해 가볍고 효율적이다. Node.js 패키지 생태계인 npm은 가장 큰 오픈 소스 라이브러리 생태계이기도 하다.
V8엔진은 구글에서 만든 것이다.
즉, 노드를 통해 다양한 자바스크립트 애플리케이션을 실행할 수 있으며, 서버를 실행하는데 제일 많이 사용된다.
- Node.js는 JavaScript를 서버에서도 사용할 수 있도록 만든 프로그램이다.
- Node.js는 웹서버와 같이 확장성 있는 네트워크 프로그램을 제작하기 위해 만들어졌다.
- Node.js는 논 블로킹 I/O, 싱글 스레드, 이벤트 루프의 특성이 있다.
요약 : Node.js는 자바스크립트를 실행할 수 있는 환경이다.
논 블로킹 I/O란 ?
함수가 실행되는 중에도 다른 작업을 동시에 진행할 수 있다.
=> 비동기 작업을 할 때 좀 더 효율적으로 할 수 있는 특성이다.
싱글 스레드란 ?
스레드 하나를 사용하는 것이며, 동시에 하나의 작업만을 처리할 수 있다.
스레드란 프로그램이 동작할 때, CPU 또는 프로세서를 사용하는 단위이다.
이벤트 루프란?
JavaScript가 가지고 있는 싱글 스레드의 약점을 극복하기 위해 효율적으로 작업을 처리할 수 있는 특성이 있다.
ES(ECMA Script)란?
초기 javascript는 넷스케이프라는 웹브라우저에서 사용하기 위해 만들어진 언어이다.
브라우저마다 언어를 개발하는 방식이 달라서 표준화시키는 작업이 필요해졌는데 그렇게 나온 것이 ECMAScript이다.
=> 자바스크립트의 표준, 규격을 나타내는 용어이다. ES6가 중요하다.
REPL이란?
입력 받은 코드를 읽어(Read)들여 메모리에 저장하고, 평가(Evaluate)된 값을 출력(Print)한다.
특정 신호를 입력받기 전까지 위의 과정을 반복(Loop)한다.
Node.js는 REPL 환경을 제공하고 있다.
Window는 Git Bash를 이용해 REPL환경으로 진입할 수 있다.
Node.js의 장단점
Node.js 장점
1. Node.js는 단일 스레드의 논 블로킹 I/O 이벤트 기반 비동기 방식으로 처리되어 높은 처리 성능을 가지고 있다.
2. 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치등의 별도의 소프트웨어 없이 동작하는 것이 가능하며, 이를 통해 웹 서버의 동작에 있어 더 많은 통제를 가능케 한다.
3. Javascript 언어로 Front-end 뿐만 아니라 Back-end 개발 환경을 구성할 수 있기에 생산성이 높고 러닝 커브가 줄어든다.
4. 다양한 패키지 매니저를 기반으로 다양한 모듈(패키지)을 제공하며 필요 라이브러리에 대해 설치하고 사용할 수 있기에 효율성이 좋다.
Node.js 단점
1. Node.js 모든 API는 '비동기 기반의 처리 방식'이라 서버의 로직이 복잡한 경우에 '콜백 함수 늪'에 빠질 수 있다.
2. 단일 쓰레드이기 때문에 하나의 작업이 오래 걸리는 웹 서비스의 경우 애플리케이션의 성능이 저하될 수 있다.
3. 해당 코드를 수행이 되어야지 코드에서 에러가 났는지 확인이 가능하며 에러가 날 경우 프로세스 자체가 내려갈 수 있다.
4. 세션을 공유할 경우 redis와 같은 부가적인 인프라가 필요하다.
'Node.js' 카테고리의 다른 글
Node.js 내장 모듈 - crypto (0) | 2023.05.06 |
---|---|
Node.js 내장 모듈 - url (0) | 2023.05.04 |
Node.js 내장 모듈 - path (0) | 2023.05.03 |
Node.js 내장 모듈 - os (0) | 2023.05.01 |
package.json / package-lock.json 이란? (0) | 2022.12.04 |