일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 폴안티
- 모니터
- 명주
- TortoiseSVN
- svn
- 폴-안티
- lagom framework
- windows vista
- 차이점
- Lambda Expressions
- 책상
- 폴안티 스파이앱
- 윈도우즈 비스타
- 한강 #야경 #한강야경
- 라곰
- 스파이앱
- 정통춘천닭갈비
- 스포티지r 풀체인지
- 폴-안티 스파이앱
- volatile
- 라곰프레임워크
- 폴안티스파이앱
- Subversion
- 폴-안티스파이앱
- 설치
- java8 람다식
- 썬
- CVS
- selenium #scraping #webscraping #jsoup #firefox
- lagom
- Today
- Total
장발의 개발러
[Node.js] 그래서, Node.js는 무엇인가? 본문
Node.js는 V8 (자바스크립트 엔진) 위에서 동작하는 이벤트 처리 I/O 프레임워크이다. 웹 서버와 같이 확장성 있는 네트워크 프로그램 제작을 위해 고안되었다.
Node.js는 파이썬으로 만든 Twisted, 펄로 만든 펄 객체 환경, 루비로 만든 이벤트머신과 그 용도가 비슷하다. 대부분의 자바스크립트가 웹 브라우저에서 실행되는 것과는 달리, Node.js는 서버 측에서 실행된다. Node.js는 일부 CommonJS 명세를 구현하고 있으며, 쌍방향 테스트를 위해 REPL 환경을 포함하고 있다.
Node Beginner's Guide의 정의
Node.js는 실질적으로 서버사이드 자바스크립트 실행환경과 라이브러리, 이렇게 두 가지로 이루어져 있습니다.
Nodejs.org 사이트의 설명
이게 node.js의 정체입니다. '무슨소리!! node.js는 그게 다가 아니라고!'라고 말할 수도 있지만, 그건 node.js와 node.js가 만들어낸 에코시스템을 혼동하는 겁니다.
자, 조금만 더 살펴보겠습니다. 이하는 저의 개인 의견입니다. :D
Node.js에 대한 오해와 진실
1.Node.js는 프론트앤드 개발이다!
- 아닙니다. 노드는 자바스크립트 언어를 쓸 뿐이지 서버사이드 개발입니다. Node.js를 만든 라이언 달(Ryan Dahl)도 서버 개발자입니다. 그것도 아주 코어한.
" In the past year I think I have finally come to understand the ideals of Unix: file descriptors and processes orchestrated with C" - Ryan Dahl
2.자바스크립트를 주로 하던 프론트 앤드 개발자가 이제 쉽게 서버 개발을 할 수 있다!
- 아닙니다. 프론트 앤드 개발을 하던 개발자에게 자바, 아파치, 톰캣 등등을 배우지 않고 서버 개발, 그 중에서도 I/O 특화된 개발을 할때 좀 더 쉬운 환경을 제공하지만, 역시 I/O및 서버사이드 기술 개념을 학습하지 않으면 제대로된 개발을 하기 어렵습니다. 무슨말인가 하면, node.js 공식 사이트 문서 페이지의 API 이름들을 살펴보시면 바로 이해가 되실겁니다.
3.Node.js가 대 유행이다!
아래는 javascript, node.js, python, ruby에 대한 구글 트랜즈입니다.
비교 영역이 잘못됐잖아! 라고 말할 수도 있겠습니다만, 어쨌든 사람들이 찾는 빈도를 보시만, python이 0.35일때 node.js는 소수 두자리까지 이하의 수준입니다. 우리 주변에 python 쓰는 사람이 몇이던가요?
4.그럼 왜 배우냐??
- 가능성에 대한 투자입니다. 그리고 지식영역의 확장을 위해서입니다. node.js는 그 자체도 자체지만 node.js가 만들어낸 플랫폼과 에코시스템의 성장이 예사롭진 않습니다. 특히 npm과 더불어 I/O를 사용하는 서버모듈의 개발과 설치가 매우 간편해졌습니다. 그리고 성능도 괜찮고요.
하지만 현실에서 이걸 얼마만큼 쓰게 될지는 말 그대로 미지수입니다. 그럼에도 투자해 볼만한 가치가 있다고 생각합니다.
5. node.js의 최고 장점은 성능 아닌가요?
- 물론 몇몇 벤치마킹에 의하면 node.js의 성능이 뛰어난 건 맞습니다. 하지만 예전에 mysql이 처음 나왔을때를 떠올려보면 그 때도 그랬습니다. mysql이 단순 트랜잭션처리가 오라클에 비해 수 배에서 수 십배까지 좋게 나왔었습니다. 하지만 성능때문에 mysql을 쓰겠다며 바로 넘어가는 경우는 드물었습니다. 만약 아파치 웹 서버보다 50%쯤 빠른 서버가 나온다면 사람들이 다 그 서버로 옮길까요? 아마 그렇다 하더라도 한동안은 아닐겁니다. 마찬가지입니다. node.js를 서버 성능으로만 놓고 따르려 한다면 위험한 생각일 수 있습니다. 엔지니어라면 대부분 약간씩은 성능지상주의 성향이 있긴 하지만, 성능만으로 node.js를 평가한다면, 만일 더 나은 성능의 무언가가 자바같은 메이저(=사람이 많은) 쪽에서 나온다면, 그 순간 가치가 급락해 버릴겁니다. (제 생각엔) node.js는 기반시스템으로 놓고 접근해야 합니다. (자바스크립트로 I/O를 다를 수 있다는 건 엄청난 매력이니까요.) node가 스스로를 하부로 시스템의 일부로 내리고, npm과 함께 에코시스템을 구축해서 확장의 문을 열어놓은 것은 매우 훌륭한 선택이었다고 봅니다.
참고로, Node.js 생태계에서 구축된 모듈들은 아래 페이지에서 확인 가능합니다.
https://github.com/joyent/node/wiki/modules