Node.js를 이용하여 웹 애플리케이션을 만들 때, 프로그래밍 언어로 자바스크립트를 사용합니다.
자바스크립트가 등장하면서, 웹은 훨씬더 동적인,즉 프로그래밍적인 요소를 가지게 됩니다.
HTML에 자바스크립트가 도입되면서 사용자와 상호작용하는 듯한 복합적인 제어를 수행할 수 있게 되면서, 웹이라는 시스템은 애플리케이션으로 확장될 수 있는 전기를 맞이하게 됩니다.
최초의 자바스크립트는 웹에서만 동작할 수 있었기 때문에, 웹이 지금만큼 중요하지 않았을 때에는 자바스크립트의 언어의 효용이나 가치가 지금만큼 크지 않았습니다.
2008년에 구글이 크롬 웹브라우저를 개발하면서, 브라우저의 성능을 높이기 위해서 자바스크립트 엔진을 직접 개발했습니다. 이 엔진이 바로 V8엔진입니다. 구글이 이것을 오픈소스로 공개하면서 자바스크립트 엔진을 직접 가져다 쓰지 않고도, V8을 가져다써서 자신들의 시스템을 자바스크립트로 프로그래밍할 수 있게 됩니다.
그러면서 자바스크립트는 웹이 아닌 분야에서도 사용될 수 있게 됩니다. 즉, 자바스크립트가 웹에 국한되지 않고 ‘탈 웹화’되는 현상이 가속화됩니다.
2009년에 Ryan Dahl에 의해 Node.js 프로젝트가 시작됩니다.
Node.js란 기본적으로 구글이 만든 V8엔진을 기본 엔진으로 사용합니다.
그리고 event-driven이라는 자바스크립트 개발방식과 non-blocking IO라는 컴퓨터의 입출력 처리 방식을 결합하는 Node.js 프로젝트가 시작되었으며, 이 Node.js는 웹브라우저에서 동작하는 자바스크립트가 서버쪽에서도 동작하는 자바스크립트로 확장되는 결정적인 계기를 제공했습니다.
자바스크립트라는 개념에는 두가지 측면이 존재합니다.
이렇게 두가지가 존재합니다.
웹브라우저, Node.js라는 기술이 런타임에 해당됩니다.
예를 들어서 인간의 언어로 한국어가 존재한다면, 이 한국어가 사용되는 환경에 따라서 우리는 다른 표현과 개념을 사용합니다. 병원에 가는지 혹은 법원에 가는지에 따라서 그 분야에어 사용하는 용어들을 통해서 어떤 일을 하게 됩니다.
예를들어서 자바스크립트라는 언어를 쓴다는 것이 우리가 한국어를 쓴다는 것과 비슷합니다. 그리고 그 한국어를 이용하여 병원에서 업무를 처리하는 것과 법원에서 업무를 처리하는 것이 바로 자바스크립트 언어를 이용해서 웹브라우저를 제어하고, 서버쪽의 Node.js를 제어해서 서버쪽에서 동작하는 웹애플리케이션을 만들 수도 있는 것에 해당합니다.
더 구체적으로, alert(‘Hello World’) 이 자바스크립트 명령을 웹브라우저에서 실행하면, Hello World라는 내용을 가진 자바스크립트가 실행됩니다.
여기서 사용된 문법은 함수이며, 함수는 자바스크립트의 문법입니다. 그런데 alert이라는 것은 웹브라우저가 가지고 있는 경고창을 실행시키는 함수입니다. 따라서 alert를 웹브라우저가 아닌 곳에서 실행하면 에러가 납니다.
그래서 자바스크립트와 런타임의 관계를 짚어보자면, 자바스크립트를 할줄 안다면 우리는 웹브라우저도 제어할 수 있고, Node.js도 제어할 수 있습니다. 하지만 자바스크립트를 알더라도 웹브라우저에는 어떤 기능이 있고, Node.js에는 어떤 기능을 있는지를 모른다면, 런타임을 제어해서 컴퓨터를 제어할 수 없습니다.
Node.js와 웹브라우저는 서로 다른 영역에서 동작하는 기술입니다.
Node.js와 같은 런타임 기술들의 경쟁자로는 서버쪽에서 사용되는 Ruby, Python, PHP, Java와 같은 기술들이 있습니다. 이것들이 서버쪽에서 동작하면서 데이터베이스에 접속하거나, 웹페이즈를 프로그래밍 적으로 생산하는 기능을 한다면, 이러한 기술들은 Node.js의 경쟁자로 볼 수 있습니다.
가장 중요한 장점은 속도입니다.
Node.js는 구글이 만든 V8엔진이라는 속도가 빠른 시스템을 사용하기 때문에 성능이 좋습니다.
그리고 Event-Driven, Non-blockingc IO와 같은 패러다임을 사용하기 때문에, 굉장히 빠른 퍼포먼스를 발휘할 수 있습니다.
따라서 적재적소에 Node.js를 사용한다면, 매우 성능이 좋은 애플리케이션을 만들 수 있습니다.
또한 자바스크립트를 이용하여 클라이언트 애플리케이션부터 서버 애플리케이션을 모두 만들 수 있기 때문에, 자바스크립트 하나만 사용하여 하나의 완결된 애플리케이션을 만들 수 있습니다.
이러한 맥락에서 javascript, Node.js 가 주목받고 있는 이유라고 볼 수 있습니다.