내가 뭔가 만들고 싶고 하고싶은 프로젝트가 있으면, 늘 사용한는 언어들이 다르다.
그런 언어들을 만날때마다 머리가 멈추게 된다. 지금 하고있는것도 벅찬데 새로운 언어라니..
그 중에 하나가 Node.js 언어이다. 하지만 요즘 느끼는건데 결국 언어들은 크게 다르지 않...을 것이다.
Node.js 과감하게 도전 배워보자
- Nods.js가 무엇인가
일단 Node.js가 무엇인가부터 알아야 이걸 왜 공부하는가를 알 수 있겠다.
V8 (자바스크립트 엔진)으로 빌드된 이벤트 기반 자바스크립트 런타임이다. 웹 서버와 같이 확장성 있는 네트워크 프로그램 제작을 위해 고안되었다. - 위키
일단 웹페이지를 구성하는 언어가 'HTML'이고,
웹페이지를 다이나믹하게 만들어주는 조작할 수 있게 만드는 언어가 'JavaScript'라고 할 수있다.
JavaScript는 각 브라우저에서 그 언어들이 해석되어서, 클라이언트의 웹 화면에 표현되는데,
V8은 크롬 브라우저에서 사용하는 자바스크립트 해석하는 엔진이다.
Node.js는 그 V8 자바스크립트 해석 엔진을 가져와서 개발언어로써 사용하는 것이다.
Node.js를 통해 브라우저가 아니라 컴퓨터 cmd 등의 런타임에서도 자바스크립트 언어를 통해서 개발할 수 있다.
Node.js를 많이 쓰는 이유는 웹서버를 쉽게 만들수 있기 때문이다.
이는 Node.js 서버가 가지는 Non-blocking I/O 특성 때문이다.
- 'Non-blocking I/O' 특성
어떤 프로세스에 처리 요청(Input)이 들어왔을 때, 프로세스가 처리되는 동안에 보통 서버는 시스템 응답대기(blocking)가 된 후 처리 결과를 보여준다(Output). Non-blocking은 많은 요청이 동시에 들어왔을 때 Input/Output 사이에 응답대기 상태가 없는 것이다.
이 때 프로세스가 블로킹 상태가 아니기 때문에 CPU 를 다른 프로세스에서 사용함으로서 I/O 대기시간을 줄이거나 활용할 수 있다. 빠른 응답이 필요한 채팅과 SNS 프로그램에 자주 쓰이게 된다.