node.js 서버구축하기
node.js version : v6.9.2 LTS
last updated : DEC 30th 2016
author : kodonho
본 강좌는 node.js 기반의 웹서버를 구축하기 위한 설치, 기초문법, 기본구조(event, module 사용법 등) 그리고 node.js의 웹서버모듈인 http 사용에 중점을 둔 강좌입니다. node.js 에 내장된 기본 모듈중심의 강좌이므로 express와 같은 외부 모듈에 대한 사용법은 이 강좌에서 크게 다루지 않습니다.
각 강좌는 연속성을 가지지만 각각의 소스코드는 독립적으로 실행가능하기 때문에 필요한 Chapter만 따로 구독할 수 있습니다.
node.js 는 크롬의 V8 엔진을 사용하기는 하지만 브라우저 환경과 다르기 때문에 기존 브라우저의 window와 같은 내장객체는 제공되지 않습니다. 따라서 javascript 로 node.js 코드를 작성한 후에 브라우저에서 실행되지는 않습니다.
목차
- 1. node.js 설치
- 2. 기초문법
- 3. 서버구축하기 - http basic
- 4. 클라이언트 요청 GET
- 5. 클라이언트 요청 POST
- 6. module 사용하기
- 7. event 처리
- 8. url 다루기
- 9. 파일입출력
- 10. Binary 파일(image, mp3) 처리
- 11. Streaming 서비스
- 12. MongoDB 연동 I - mongoose
- 13. MongoDB 연동 II - mongodb
개발환경
구분 | 사양 |
---|---|
OS | Windows10 Pro 64bit (부트캠프) |
CPU | i5 2.60 GHz |
RAM | 16GB |
HDD | SSD 512GB |
node.js | v6.9.2 LTS |
MongoDB | 3.4.0 |
mongoose | 4.7.4 |
Chrome | 55.0.2883.87 m (64-bit) |
Postman | 4.9.2 |
시작에 앞서
용어에 대한 이해
모듈 : 다른 개발언어에서의 라이브러리와 유사한 개념입니다. node.js에 내장되어 바로사용할 수 있는 내부모듈과 플러그인처럼 설치해서 사용해야 하는 외부모듈이 있습니다. 대표적인 외부모듈이 express 입니다.
이벤트 : node.js 의 근간이 되는 서버 구동방식입니다. 객체지향에서의 callback 과 동일한 형태의 설계패턴으로 node.js는 이벤트기반의 비동기 방식으로 서버가 동작합니다. 로직상에서 이벤트가 연결되면 해당이벤트는 서버가 클라이언트의 요청을 대기하기 위해 listener를 동작시키는것과 같이 연결한 이벤트를 catch하기 위해 대기하게 됩니다.
객체 : 함수형 언어인 javascript는 함수자체를 객체로 사용할 수 있지만, 객체지향처럼 독립적인 객체 단위도 지원합니다. 모듈과 객체가 비슷한 점이 있는데 모듈은 객체들의 묶음으로 집합관계라고 생각하시면 됩니다. 모듈은 내장모듈과 외부모듈 모두 require( ) 함수로 따로 생성을 해야지만 사용할 수 있지만, 내장객체의 경우 별다른 선언이나 생성없이 바로 사용할 수 있습니다.
node.js 소개
이전까지 웹브라우저에서만 사용되던 javascript를 웹브라우저 밖에서도 사용해보자는 논의가 진행되는중에 2009년 1월에 CommonJS 라는 오픈소스표준이 탄생하게 됩니다.
node.js 는 이 CommonJS를 기반으로 한 비 웹브라우저 플랫폼중에 웹서버 개발을 프레임웍이고, 인터프리팅 엔진으로는 Google의 V8을 사용합니다.
각 브라우저 개발사들은 각자의 스크립트 엔진을 이용해서 브라우저상의 javascript를 구동시키는데 아래표는 각 브라우저별 엔진의 이름을 나타냅니다.
브라우저 | 엔진 |
---|---|
Google Chrome | V8 |
Apple Safari | Squirrel Fish |
Mozilla Firefox | Spider Monkey |
Opera Opera | Carakan |
Microsoft IE | Chakra |
이 중 V8은 속도 향상을 위해 C++로 엔진을 개발하고 다양한 기술을 도입하게 되는데 그 중에 대표적인 예가 JIT(Just-in-time)컴파일러입니다. V8은 실행전에 코드를 기계어로 컴파일함으로써 상당한 속도향상을 이룸과 동시에 VM 기반으로 독립적인 실행이 가능하게 설계되었습니다.
Copyrights ⓒ [email protected], 영리목적 사용불가.