본문으로 바로가기

[nodejs] nodejs 란 ? 윈도우 설치 방법 및 설치 확인 방법

category 개발자/node js 2019. 2. 6. 17:52

Node Js 란 ?


1990년 Tim Berners lee 가 정적인 체계의 WEB 을 창시했습니다. 이 후, Marc Andreessen 에 의해 Netscape 라는 대중적 웹 브라우저가 등장하게 되었고 Brendan Eich에 의해 JavaScript 등장하고 웹에 동적인 체계를 탑재하게 되어 사용자와 상호작용이 가능해졌습니다. 2004 년, Gmail 등장으로 대중성을 중시해서 천대 받던 JavaScript가 재조명 받게 되었습니다. 순수한 웹기술(HTML, JavaScript 등)을 통해서 만들었음에도 불구하고 뛰어난 성능을 보인 것입니다. 이어서 GMap도 순수 웹기술로 구축되었고 이 또한 웹 개발자들에게는 신선한 충격을 안겨 주었습니다. 이 후로 자바스크립트의 성장세는 계속되었습니다.


 2008년 구글이 Chrome의 성능 향상을 위해 JavaScript Engine 개발하였는데 그것이 V8 이고 이것을 오픈소스로 공개하여 수많은 웹 개발자들을 이끌었습니다. 이 후, 2009년 Ryan Dal 이 자바스크립트 언어로 구현된 server side 언어 Node.js 를 내보입니다.


 JavaScript라는 단어에는 두가지의 의미가 있습니다. 언어로써의 자바스크립트와 Run Time(언어가 작동하는 환경)으로의 자바스크립트 입니다. 자바스크립트 언어를 '한국어(일상 우리가 사용하는 언어)'라고 비유한다면
그 한국어를 통해서 병원에 가거나 법원에 가는 등에 대한 일을 처리할 수 있습니다.
다시 말하자면, 자바스크립트란 프로그래밍 언어로 Web Browser를 제어하거나 서버를 제어할 수 있는 것 입니다.
 이 두 개의 자바 스크립트는 문법을 기반으로 합니다. 허나 서로 다른 함수를 사용합니다. 예를 들면 alert 라는 함수는 Only Web에서 작동하는 함수이며 서버에서는 사용할 수 없습니다. alert이란 함수는 Node.js 라는 런타임에는 없는 함수라는 말이 됩니다. Node.js 에 alert이라는 명령어를 입력하는 것은 법원에 가서 아프니까 약달라고 하는 꼴입니다.
 그러므로 자바스크립트라는 언어만 안다고 두 가지를 모두 제어할 수 있는 것이 아니라 각각 어떠한 기능을 가지고 있는지 알고 있어야 제어가 가능합니다. 병원이 뭘 하는 곳인지, 어떤 기능을 갖고 있는지 알아야 하는 것처럼 말입니다. 
 Web과 Node.js는 서로 협력적인 관계입니다. 이 두 가지를 제어해서 하나의 완결된 웹 애플리케이션을 만들 수 있습니다.


 Node와 비슷한 경쟁 언어는 어떤 것이 있을까요?
= 파이썬 루비 PHP Java ... ?
그렇다면 이 경쟁자들과 비교해서 Node.js의 장점은?
이 많은 언어 중에 Node.js 를 선택한 개발자가 얻는 장점은 무엇일까요?

V8 Engine
구글이 망하지 않는 한 이 엔진은 끈임없이 개선되고 발전할 것이며
지금도 충분한 성능을 보이고 있지만 추후 더 훌륭한 퍼포먼스를 보일 것으로 예상됩니다.
Event - driven 방식
사용자가 입력장치로 이벤트 데이터를 전송했을 때'에만' 작동하는 방식입니다. 발생한 이벤트에 대해서만 웹서버가 '연결'을 해주기 때문에 자원을 최소화할 수 있습니다. 대부분의 웹 서버는 사용자가 이벤트를 발생하기까지를 기다리면서 '자원'(대기시간 / 메모리)을 계속 소비하게 됩니다.
non - blocking 패러다임
non - Blocking I/O 를 이해하기 위해서 우선 Blocking I/O 방식을 이해해야 합니다.
Blockign I/O 방식(동기식 I/O )은 Read/Write 이벤트가 발생하면 이벤트가 끝날때까지 해당 모듈을 점유하게 되서 다른일을 못하게 됩니다. 또한 메모리 버퍼에 데이터를 차지하게 되므로 메모리도 소비하게 됩니다. 요청한 I/O(DB,File,Network)가 완료될 때까지 해당 Thread를 '대기 모드'로 전환 시켰다가 요청한 I/O 완료 후 유저코드를 실행시킵니다.
 이러한 Blocking 방식의 비효율성을 극복하고자 만들어진 것이 Non-Blocking 방식입니다. I/O작업을 진행하는 동안 유저 프로세스의 작업을 중단시키지 않습니다. non-Blocking I/O(비동기식 I/O)의 경우 Read/Write 이벤트가 시작하자마자 모듈을 변환시켜 다른 작업을 하도록 준비상태가 됩니다. 그래서 속도가 동기식보다 빠르고 메모리도 덜 차지하게 됩니다. 적합한 경우에는 굉장히 빠른 퍼포먼스를 보이고 적재적소에 이 방식을 사용하면 퍼포먼스가 크게 향상할 수 있습니다.
Single Thread
양날의 검입니다. 장점이라기보다는 특징에 가깝습니다. 적은 양의 자원으로 일을 처리하는 것이 가능하다는 장점입니다. 하지만 만일 어느 한곳에 예외상황 및 에러가 발생한다면 애플리케이션 전체에 영향이 가게 됩니다.
 이렇게 여러 가지의 장점들을 가진 Node.js 이지만 Node.js 가 갖는 가장 강력한 장점은 클라이언트와 서버에서의 언어가 동일하다는 점일 것입니다. 조직원들이 같은 언어를 사용하는 것은 굉장한 매력이라고 할 수 있습니다.

윈도우 설치 및 실행 방법


  1. https://nodejs.org/ko/download/ 이동 및 최신 LTS 버전 다운로드


  1. Next 를 계속 눌러 설치 완료


  1. 윈도우 cmd 창을 열어 설치 확인