□ Node.js란?
Node.js는 2009년에 라이언 달이 개발한 서버 개발 환경입니다. Google Chrome 브라우저에서 사용하는 V8 자바스크립트 엔진을 기반으로, 자바 스크립트로 앱을 개발할 수 있습니다.
Node.js 공식 사이트(nodejs.org)에서는, Node.js에 대해 아래와 같이 설명하고 있습니다.
Platform build on Chrome's JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run accross distributed devices. |
여기서 event-driven이라는 개념은, 마우스, 메시지, 혹은 다른 프로그램이나 스레드의 이벤트에 의해서 프로그램의 흐름이 결정되는 구조를 말하고,
non-blocking I/O란, 작업이 완료되기 전에 다른 작업을 계속할 수 있는 I/O 처리 방식을 말합니다.
정리하면 아래와 같습니다.
- 서버사이드 JavaScript (V8 엔진으로 컴파일) 프레임워크
- 이벤트 기반으로 동작하며, Non-blocking I/O 방식
- 목적은, 확장가능한 네트워크 프로그램들을 간단하게 만드는 것
- CommonJS 모듈 시스템
- 2009년 라이언 달이 JSConf에 발표하면서 화재
- C랑 C++로 만들어짐
- Open Source
- 단 하나의 쓰레드가 이벤트 루프를 구동
- Linux, Windows, Mac OSX 지원
□ 우리는 Node.js를 왜 익혀야할까?
벌써 Node.js가 나온지 6년이 넘었습니다. 비교적 짧은 역사에도 불구하고, Node.js는 가볍고, 빠르며, 아주 새로운 언어가 아닌 자바스크립트로 다 할 수 있다는 장점에 힘입어, 빠르게 인기를 얻어왔습니다.
사실 지난 5년동안 버전이 1.0이 안나오고 있어왔어서, 상당히 보수적으로 운영한다며 질타하는 목소리가 많았습니다. 기껏 익혀놓으면, 새 버전에서 많은 것이 바뀌어서 또 새로 익혀야하는 일이 반복되어왔던 것이죠.
그렇지만, 이제 Node.js의 버전은 4.0을 넘어서 5.0 또한 안정화 단계에 접어들고 있습니다.
Node.js는 네트워크 프로그램을 위해 만들어졌습니다.
Node.js를 이용해서 사람들이 도구를 만들기 시작했고, JavaScript이기 때문에 특히 프론트엔드 관련 도구가 많이 생겼습니다.
많은 시도가 있었지만, 지금은 데스크탑 어플리케이션도 만들어지고 있고, 최근에는 로봇제어가 큰 이슈로 관련 컨퍼런스도 많이 열리고 있는 상황입니다.
물론 해외의 많은 기업들이 Node.js를 Production에서 사용하고 있기도 합니다.
□ Express?
Express는 효율적으로 개발하기 위해 필요한 기능 및 아키텍쳐를 미리 만들어 제공하는 라이브러리 집합입니다. Node.js의 프레임워크로 Express, Geddy 등이 있는데, Express가 특히 빠르고, 고집없고, 깔끔한 web framework로 알려져있어, 많은 인기를 끌고 있습니다.
Express의 특징을 나열하면 아래와 같습니다.
- 강력한 라우팅
- 고성능
- 테스트 범위가 넓음
- HTTP 지원 (redirection, caching, ...)
- 14개 이상의 View Templete Engine
- Content negotiation
- 프로그램 실행이 빠름
이제 우리는 Node.js + Express 프레임워크를 이용하여 다음과 같은 목표를 설정할 수 있습니다.
JSP, PHP 등으로 웹 개발을 해오던 분들에게 있어서, 이들에게서 동적 웹 프로그래밍의 한계를 느껴 JavaScript, JSP 등을 붙이고 했던 것이, 이제 JavaScript 하나만으로 모든 것을 핸들링할 수 있게 된다는 것만으로도, Node.js는 크게 매력적입니다.
그리고 이들을 아래 목차와 같이, 하나의 책에 깔끔하게 정리한 오라일리의 책이 번역되어 나왔다는 것은, 우리에게 정말 큰 행운입니다. :)
CHAPTER 1 익스프레스 소개
CHAPTER 2 노드 시작하기
CHAPTER 3 익스프레스로 시간 절약
CHAPTER 4 모양새 갖추기
CHAPTER 5 품질보증
CHAPTER 6 요청과 응답 객체
CHAPTER 7 핸들바를 사용한 템플릿
CHAPTER 8 폼 처리
CHAPTER 9 쿠키와 세션
CHAPTER 10 미들웨어
CHAPTER 11 이메일 보내기
CHAPTER 12 실무 관심사
CHAPTER 13 지속성
CHAPTER 14 라우팅
CHAPTER 15 REST API와 JSON
CHAPTER 16 정적 콘텐츠
CHAPTER 17 익스프레스에서 MVC 구현
CHAPTER 18 보안
CHAPTER 19 타사 API와의 통합
CHAPTER 20 디버그
CHAPTER 21 사이트 오픈
CHAPTER 22 유지보수
CHAPTER 23 추가 자원
저 또한 Node.js를 전혀 접해보지 않은 상황에서,
이 책을 통해 이렇게 Node.js + Express에 대한 개념을 일목요연하게 정리할 수 있었습니다.
※ 이 책에서 제공하는 모든 코드는 아래 링크에서 다운로드 할 수 있습니다.
https://github.com/EthanRBrown/web-development-with-node-and-express
'다이어리 > 책 리뷰' 카테고리의 다른 글
오스미 유스케 (2015), "유닉스 리눅스 셸 스크립트 예제 사전", 한빛미디어 리뷰 (0) | 2015.10.04 |
---|---|
우재남 (2015), "이것이 리눅스다", 한빛미디어 리뷰 (0) | 2015.08.25 |
Dorothy L. Sayers,『Whose Body?』, Harper Mass Market Paperbacks (0) | 2011.03.07 |
석용산,『여보게,저승갈때뭘가지고가지』, 고려원 (1992) (0) | 2011.03.05 |
곽노윤 외,『새내기 C 프로그래머를 위한 순서도 작성』, 정익사 (2007) (0) | 2011.03.03 |
이건창,『수리철학』, 경문사 (2000) (0) | 2011.03.02 |
김용준 외,『나는 프로그래머다』, 한빛미디어 (2004) (0) | 2011.03.01 |