Node.js를 시작하며..
3년차 풀스택 개발자이지만 프론트엔드에 조금 더 관심이 있는 나로써 백엔드를 Javascript로 프로그래밍 할 수 있다는 것은 너무나도 환영이다. (특히, 이직 목표 기업에서 자격 요건으로 node.js 개발 경험 요건이 있다.)
그리하여 재직 중 기업에서는 C#을 백엔드 프로그래밍 언어로 사용 중이지만, node.js를 입문해보려고 한다.
Node.js란?

서버 측 Javascript 런타임 환경이다.
런타임이란, 운영체제 위 또는 운영체제 자체에서 실행되면서 특정 프로그래밍 언어가 구동될 수 있는 환경이다.
node.js 이전에는 논블로킹/비동기 API를 서버 환경에서 구현하는 데 상당한 노고가 필요했다. 그 이유는 동시 실행되는 스레드와 공유 자원을 개발자가 직접 만들고 관리해야 했기 때문이다.
라이언 달은 이런 개발 환경을 "논블로킹 감옥" 이라고 표현했다.
비동기로 API를 제공하는 것이 편리하다고 생각한 라이언 달은 이벤트 기반 비동기 환경을 만들고 이렇게 만들어진 환경이 Node.js라는 런타임 환경이다.
※ 여기서 잠깐 논블로킹, 비동기, 이벤트 기반을 짚고 넘어가자 !
1) 논블로킹이란? 비동기란?
블로킹/논블로킹과 비동기/동기에 대하여 항상 헷갈려했던 개념이라 이번 기회에 다시 정리해보았다. 해당 링크를 참고하자.
Blocking/Non-blocking & Synchronous/Asynchronous
Synchronous(동기)와 Blocking(블로킹)은 무언가를 기다리게 하고, Asynchronous(비동기)와 Nonblocking(논블로킹)은 기다리지 않고 바로 바로 처리된다. 하지만, 분명한 차이점이 존재한다. Blocking/NonBlocking(
hyolls100.tistory.com
2) 이벤트 기반은 다음 장에서 설명하겠다.