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