Node.js 잇몸으로 뽀개기 (studying Node.js)

왜 Node.js를 공부해야하는가

Node.js의 가장 큰 장점은 방대한 npm 라이브러리다. 많은 사람들이 사용하고 있기 때문에 리소스도 풍부하고 내가 필요한 기능은 이미 다른 사람이 개발해 놓은 경우가 왕왕 있다고 한다. 일종의 네트워크 효과라고 보면 되겠다. 또 다른 장점은 입출력(I/O)을 기다리는 방식에서 볼 수 있다. Node.js는 non-blocking 방식을 택하고 있는데 이는 데이터를 주고 받는 과정 동안 멈추지 않고 다른 일을 처리하는 것을 말한다. Rails 같은 blocking 방식을 택한 경우, 입출력 하나 하나씩 기다리느라 오랜 시간이 소요된다.

아래 사진을 보면 확실히 이해가 된다. Non-blocking 방식이 자원을 훨씬 효율적으로 활용하고 결과도 빨리 받아볼 수 있다. blocking vs. nonblocking1

Node.js란 무엇인가

내가 이해한 바로는 C++로 작성한 V8 Engine을 통해서 Javascript로 작성한 코드가 Machine Code로 작동하는 것이라고 한다. Node.js를 런타임이라고 하는데 런타임 단순히 말하면 프로그래밍 언어가 구동되는 환경이라고 이해하면 된다고 한다2. 명확하게 이해는 안되지만 Node.js는 자바스크립트로 작성된 코드가 실행될 수 있도록 도와주는 환경인 것 같다.

향후 일정

유데미에서 맥스와 함께 자바스크립트 공부를 차근차근 해 나간다. 궁극적으로 모바일 서버를 운영할 수 있는 실력을 갖추고 싶다.

  1. https://homoefficio.github.io/2017/02/19/Blocking-NonBlocking-Synchronous-Asynchronous/ 

  2. http://asfirstalways.tistory.com/99