Node.js concept
Node & Express 2014. 3. 11. 15:53 |이번 포스팅에서는 노드와 관련된 개념을 정리해보고자 합니다.
ㆍWhat is Node.js?
Node 를 몇가지 키워드로 설명하자면 , javascript, event-driven, non-blocking I/O, single-thread 로 설명이 하다.
Node는 크롬의 V8 Javascript Engine 기반으로 동작하는 서버이다. 라이언달이 2009년에 만들었고, 지금까지 계
속해서 발전해 왔다. Javascript로 프로그램을 작성하기 때문에 Front-end 개발자들과 Back-end 서버 개발자들간의 경
계가 허물어 졌고, Front 개발자들의 Server-side 의 개발 진입장벽 자체를 낮추는 효과도 있다.
노드는 싱글 스레드 기반으로 동작하며, 다수의 커넥션이 있을때 우수한 성능을 낸다.(직접 겪어보진 못함)
일반적으로 생각할때는 멀티스레드 기반의 서버가 더욱 좋은 성능을 낼것같지만, 멀티스레드 기반의 CPU는 실제로 연
산을 하는 시간보다 네트워크처리, I/O 에따른 Delay로 많은 시간을 허비 하게 된다.
이에반해, 싱글스레드 기반의 Node는 Request가 오면 처리를 하고, 중간에 I/O 처리나 네트워크처리 등이 발생하면,
이벤트를 등록하고 다른 작업을 수행한다. 이때 처리 완료 이벤트가 동작하면 콜백을 받아 다시 작업을 수행하는
event-driven 방식으로 동작한다. 이로써, I/O 로 인한 지연을 없애 우수한 성능을 낼수 있다.
실제로 노드를 이용하면서 개발을 해보니까... 좋은점은 기존 자바/자바스크립트 개발자는 별도의 Learning Curve가
크게 없다라는 것이다. 어찌되었든, Javascript 문법을 사용하기 때문에 각 모듈과 노드가 구성되어 있는 형태만
익힌다면 큰 어려움 없이 개발을 진행할수 있다.
그리고 새로운 기능을 추가할때, npm 을 이용하여 모듈을 추가하고 그 기능을 활용하는데 크게 어려움이 없다.
또한, 핫한 트랜드인 만큼 구글링을 통해서 많은 정보를 얻을수 있는 장점 또한 존재한다.
다들 공부합시다.