Coding Log


Node.js 포스팅에 앞서

본 카테고리는 요즘 각광받는 Node.js라는 프레임워크에 대해서 다룬다.

Express, Sails, Koa, Hapi와 같은 Node.js를 위한 프레임워크를 제외하고 순수한 Node.js 자체에 대해서 알아본다.

참고 Node.js 공식 사이트

Javascript와 V8 엔진

2000년대 초반만해도 Javascript는 단순히 웹 페이지를 개발할 때 쓰는 언어 정도의 인식이었다.

하지만 2008년 9월 구글이 Chrome에 이식한 V8이라는 Javascript 엔진을 오픈소스로 공개하며 다시금 조명을 받게 되었다.

2009년 유럽 JSConf의 Ryan Dahl이 V8을 이용한 Non-Blocking I/O 모델을 가진 Javascript 기반 백엔드 플랫폼을 발표하였고, 이 플랫폼이 바로 본 카테고리의 포스팅 주제인 Node.js이다.

Node.js의 창시자 Ryan Dahl 
"Node.js는 빠르고 확장 가능한 네트워크 프로그램을 쉽게 작성할 수 있게 해주고 Event-Driven, Non-Blocking I/O 모델을 사용해 분산 환경에서 실행되는 가장 가벼우며 효과적인 실시간 애플리케이션을 작성할 수 있게 해준다."

Node.js의 Javascript

Javascript는 원래 웹 브라우저에서 실행되던 스크립트 언어이다.

Javascript는 인터프리터 언어로서 컴파일할 필요없이 소스 코드 자체가 실행시 해석되는 언어로, 컴파일 자체를 하지 않기때문에 재컴파일에 드는 시간 비용이 절약되는 게 특징이다.

따라서 Javascript를 사용할 땐 어떤 엔진을 사용하느냐가 성능을 결정하며, 이는 Javascript의 대중화를 막는 가장 큰 진입장벽이었다.

하지만 위에서 언급했듯, V8엔진의 등장으로 인해 성능 이슈는 해결되었다.

V8 엔진

V8 Javascript 엔진은 구글이 C++로 개발한 엔진으로 Chrome에 내장되어 공개되었다.

V8 엔진은 기존의 바이트 코드를 실행시키거나 인터프리터로 해석하는 것이 아니고 Javascript 자체를 컴파일해버린 후 이를 네이티브 머신 코드로 변경한 후 실행해준다.

위에서 컴파일된 코드는 코드의 실행 프로파일을 분석하여, 실행시 한 번 더 최적화함으로써 성능상의 이슈를 해소한 것이다.

또한, Java의 Garbage Collecter처럼 V8은 객체에 할당되는 메모리를 효율적으로 관리하고, 쓰지 않는 객체를 메모리에서 해제해버리면서 V8의 성능을 한층 더 높이도록 되어있다.

이 V8은 구글이 Chrome에 탑재한 형태로 공개되었지만, 웹 브라우저와는 상관없이 엔진 그 자체만 따로 사용할 수 있다.

그리고 이 엔진은 탑재하여 Javascript로 백엔드를 개발할 수 있도록한 플랫폼이 Node.js인 것이다.

추후 V8 엔진에 대하여 좀 더 자세히 다룬 포스팅을 하도록 하겠다.

참고 Chrome V8 Introduction


DISQUS 로드 중…
댓글 로드 중…

트랙백을 확인할 수 있습니다

URL을 배껴둬서 트랙백을 보낼 수 있습니다