스터디 시작 오리엔테이션에서 링크 걸어넣고 node.js에 대한 글들을 읽어보세요! 라고 이야기 드리고 스터디를 시작했었습니다. 그런데 그렇게만 했더니, 생각보다 많은 분들이 '그런데 그래서 node.js가 뭔가요?'라고 의문을 가지시는 것 같습니다. 그래서 따라하기 스터디를 좀 더 진행하기전에 node.js의 정체에 대해 되살펴보는 시간을 가지려고 합니다. 부디, 차분히 읽어보시길 권합니다.
마찬가지로 각종 코멘트 환영합니다. :D
한글 위키피디아의 정의
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
자! 이런저런 이야기들에도 불구하고, 당분간은 신기하고 재밌을 겁니다. 왜냐하면 어쨌든 새로운 세상이기 때문입니다! :D
참고로 다음 강좌가 곧 올라옵니다. 진도 챙겨주세요! 아!! 천천히 따로 하신다고요? 에이~ 다 같이 할때 함께 진행하세요~ 밀리면 초등시절 방학숙제 마냥 감당 안됩니다~ ㅎ~
광고!
온라인 스터디 도와주실 분을 찾습니다.
- facebook에 있는 스터디 페이지 함께 관리
- 댓글 관리 (진도댓글 확인하고 좋아요 눌러주기 같은) :D
- 관련 아티클 번역
댓글이나 메일로 알려주세요!
혜택은? 음.. 책 선물? 오프라인 모임때 일정맞춰 드리기? 음.. 여튼 좋은 혜택 드릴 수 있도록 좀 더 고민해 보겠습니다. ^^;;
'node.js (OctoberSkyJs)' 카테고리의 다른 글
[node.js 따라배우기] Node v0.6 릴리즈 내용 (1) | 2011.11.05 |
---|---|
[node.js 따라배우기 03] RESTful 메소드와 테스팅 (2) | 2011.11.03 |
[Node.js 따라배우기] Node.js TDD 프레임워크 Expresso 매뉴얼 번역 (0) | 2011.11.01 |
[node.js 따라배우기 02] 설치와 애플리케이션 뼈대 만들기 (Installation and Skeleton App) (4) | 2011.10.31 |
Social Study - node.js 소개 동영상 함께 보기 후기 (1) | 2011.10.30 |