[Node.js] Node.js 설치
⚡ Node.js 란?
Node.js는 공식문서에 따르면 Chrome V8 자바스크립트 엔진으로 빌드 된 자바스크립트 런타임이라고 한다. 런타임은 실행 환경이라 이해할 수 있다.
확장성 있는 네트워크 애플리케이션(서버 사이드) 개발에 사용되고 있는 소프트웨어 플랫폼으로 자바스크립트를 사용하는 논블로킹(Non-Blocking) I/O와 단일 스레드 이벤트 루프를 통해 높은 처리 성능을 갖고 있다고 하는데 특히 내장 HTTP 서버 라이브러리를 포함하고 있어서 웹 서버에서는 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능하며 이로인해 웹 서버의 동작에 있어 더 많은 통제를 가능하게 한다고 한다.
그렇지만 이게 정확하게 무슨 말인지 필자도 한번에 이해 못해서 생각을 간단하게 축약하자면
- 자바스크립트를 서버에서 사용하게 되는 프로그램
- 프로그래밍 언어라기보단 JS 언어를 이용한 프로그램
- 웹 서버에서 확장성 있는 네트워크 앱 개발을 위해 사용
정도인 것같다. 어떤 친구인지 대충 인식이 되었다면 공식 문서에 기재되어 있는 내용을 하나씩 뜯어보자.
자바스크립트 런타임?
자바스크립트 엔진으로 빌드 된 런타임이라고 하는데 이게 무슨 소리인가? 기본적으로 자바스크립트는 웹 브라우저 프로그램 안에서 동작하는 언어이다. 그런데 이 스크립트 언어를 웹 브라우저가 아닌 곳에서 쓸 수 있다면? 여기서 탄생한게 Node.JS다.
강력한 V8이라는 엔진으로 빌드된 Node는 웹 뿐만 아니라 웹 밖에서도 자바스크립트를 실행 가능케한다.
가령 JS파일을 구동하려고 한다면 웹 브라우저를 켜야만 구동값을 확인 할 수 있다. 그런데 이런점을 극복한 Node는 브라우저가 없이도 우리가 짠 JS코드를 실행시킬 수 있게 해준다. 예를 들면 내가 코드를 짠 vscode위에서 구동값을 실행시킬수 있다는 말이다.
논블로킹(Non-blocking)I/O 그게 뭐야?
요청을 전부 한번에 받은 후, 처리 속도가 빠른 것부터 처리하고 이 이후에 오래 걸리는 요청을 처리한다. 즉 요청 순서에 따라 일 처리가 되는 게 아니라, 처리 속도가 빨리 되는 것부터 처리하는 게 논블로킹 I/O이다.
여러개의 요청을 순서대로 받았다고 가정해보자. 이 중에 중간 요청은 처리 속도가 굉장히 오래걸린다. 그렇다면 이 처리를 위해서 이 처리 이후에 있는 요청들은 먼저온 요청을 처리하기 위해 멈추고 기다리게 된다. 하지만 논블로킹 방식으로 처리하게 되면 처리 속도가 느린것때문에 뒷 요청을 처리하기까지 시간이 지체되지 않게되는 장점이 있다.
싱글스레드는 무엇일까?
Node하면 따라오는 단어 싱글스레드! 그게 뭘까? 이는 여러 자바스크립트의 코드가 동시에 작업처리될 수 없다는 것을 의미한다. 무슨말이냐면 하나의 실행은 오직 하나의 스레드에서만 처리 할 수 있다.
이 방법의 장점은 동기화에 대한 신경을 안써도 된다는 것이다. 데이터를 여러군데서 받게 되면 그를 처리하기위해 접근을 통제해야하고 그에 따른 비용도 발상하게 되는데 싱글 스레드는 그러한 점을 아낄 수 있게 되는 것이다.
물론 단점도 존재한다. 싱글 스레드의 단점으로는 여러 작업을 한 군데서만 처리하는 만큼 그만한 작업시간이 더 들게되고 스레드 간의 작업전환에서 시간이 걸릴 수 있다.
Node.js를 설치해보자!
공식 홈페이지에서 운영체제에 맞게 설치를 먼저 해준다.
잘 설치되었는지 확인해보려면 우선 터미널 혹은 명령 프롬프트를 켜보자.
터미널과 명령 프롬프트창에 node --version을 입력해서 설치한 노드 버전도 확인할 수 있다.
참조 : https://hanamon.kr/nodejs-%EA%B0%9C%EB%85%90-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0/
Node.js 노드 개념 이해하기 자바스크립트 JavaScript 런타임 이벤트
Node.js 노드 개념 이해하기 JavaScript 런타임 - 노드는 다양한 자바스크립트 애플리케이션을 실행할 수 있으며, 서버를 실행하는데 제일 많이 사용된다. 이벤트 기반 이벤트 루프 논블로킹 I/O 싱글
hanamon.kr
참조 : https://ko.wikipedia.org/wiki/Node.js
Node.js - 위키백과, 우리 모두의 백과사전
Node.js는 확장성 있는 네트워크 애플리케이션(특히 서버 사이드) 개발에 사용되는 소프트웨어 플랫폼이다. 작성 언어로 자바스크립트를 활용하며 논블로킹(Non-blocking)[3] I/O와 단일 스레드 이벤트
ko.wikipedia.org
[OS] 싱글스레드, 멀티스레드의 의미
먼저 프로세스와 스레드의 차이를 알아보았다. 프로세스: 운영체제로부터 자원을 할당받는 작업의 단위 디스크로부터 메모리에 적재되어 운영체제로부터 주소 공간, 파일, 메모리 등을 할당받
velog.io