'javascript'에 해당되는 글 1건

  1. 2011.03.26 node.js introduction
2011.03.26 21:00
node.js라는 흥미로운 언어가 있는데 한번 배워보는 것이 어떻겠냐는 연구실의 semix2 형님의 조언으로 오늘의 포스팅이 결정되었다.

language라고 하여 c나 java와 같은 언어를 생각햇는데 이름에도 있듯이 java script기반의 언어였습니다.

원래 java script를 써본적이 없는 저로써는 오역이나 착각에 빠질것 같아서 포스팅하는데 두려움이 있습니다. 틀린점이 있다면 지적해주세요.



Node.js는 Chrome에서 사용된 V8 Java script엔진 기반의 Non-blocking I/O, Event기반의 언어 입니다.

 가장 특이한 점이라면 Server 프로그래밍시 많이 쓰는 Thread를 만들지 않고 Event loop에서 callback function으로 처리한다는 것입니다. 이는 Non-blocking I/O 를 기본적으로 지원하므로 기존의 Non-blocking I/O를 지원하지 않거나 지원하지 않더라도 기본으로 채택하지 않는 언어들에서는 구현하기 힘든 기능이며 이를 이용한 가장 큰 장점으로는 동시접속이 많은 Server 프로그래밍에서 Thread를 만들어서 하는 기존 방법보다 효율적으로 다중처리를 할 수 있게 된 것입니다.

 또한 자바스크립트라는 보편적이고 유연한(기본 객체마저 삭제할 수 있는) 언어를 사용하여서 접근하기가 쉽고 확장도 쉽습니다(C++), 또한 현재 기반이되는 V8 엔진의 성능보다 더 빠른 엔진이 등장한다면 스크립트를 다시 작성할 필요없이 교체 가능하다는 장점도 있습니다.

 단점으로는 아직 시작단계의 언어이여서 라이브러리들이 부족하고 Event기반이어서 디버깅시 문제가 되는 부분을 찾기가 힘들고, 스레드를 생성하지 않으므로 멀티코어 CPU에서 하나의 Core만 사용하게 되므로 효율적이지 못한 단점이 있습니다.

 하지만 단점들을 하나씩 분석해보자면, 라이브러리의 부족과 디버깅시 문제는 시간이 해결해 줄 것이고, 멀티코어에서 여러개의 Node.js 프로세스를 생성하여 서로 stream을 통해 협업하도록 프로그래밍을 한다면 해결될 뿐만아니라 강점으로도 작용할 수 있을것이다. 이러한 이유로 Node라고 명명한 것일껍니다.

참고로 최근 Node.js를 도립한 Plurk의 개발자에 따르면 Java+Jetty를 사용하였을때 보다 Comet을 구성하였을때 메모리 효율이 10배이상 좋았다고 합니다.(http://groups.google.com/group/nodejs/browse_thread/thread/af3014b45fc1d53d?pli=1)




동기를 주고 자료를 공개해 주신 semix2님께 감사드립니다.
신고

'node.js' 카테고리의 다른 글

node.js introduction  (0) 2011.03.26
Posted by JAVA_HOME

댓글을 달아 주세요


티스토리 툴바