SlideShare uma empresa Scribd logo
1 de 26
Baixar para ler offline
㈜유미테크
Node.js
(크롬 브라우져 기반 V8 자바스크립트)
- 목 차
• 1. Event-Based Asynchronous Pattern (EAP)
• 2. Node.js 란?
Node.js & Vert.x2
1. Event-Based Asynchronous Pattern
(EAP)
Event-Based Asynchronous Pattern (EAP)
• Event-Based Asynchronous Pattern (EAP)
– 스레드 기반 동기 방식 (기존 서버 동작 방식 )
• 스레드마다 요청에 대한 결과응답을 완료하고 다음 요청 처리하는 방식.
• 예) ETRI 식당 한식 코너 배식 : 2개 스레드(동편제/서편제) 기반 동기방식
• 배식 방법 : 식권제출, 국 -> 밥 -> 반찬1 -> 반찬2 -> 반찬3 –> 식사
(동기방식)
• 국이 다 떨어졌다. 국이 준비될 때까지 배식 진행 대기 상태 (blocking)
– 이벤트 기반 비동기 방식
• 요청을 받아서 처리하고, 결과응답을 이벤트로 알려주는 방식.
• 예) 뷔페의 즉석요리 코너 : 스테이크 코너, 스파게티 코너, 냉면 코너 등등
• 원하는 즉석 요리 신청 후, 번호표를 받고, 다른 즉석 요리 신청 가능.
(non blocking)
• 즉석 요리 신청 중, 다른 음식코너를 계속 이용할 수 있다. (비동기 방식)
• 요리가 완성되어, 번호 호출(event)이 되면, 음식을 가져온다.
4 Node.js & Vert.x
• 멀티 스레드 구조와 싱글 스레드 구조
5
<Tomcat의 Multi Thread 구조>
Node.js & Vert.x
<Vert.x의 Single Thread 구조>
Event-Based Asynchronous Pattern (EAP)
• 싱글 스레드 이벤트기반 비동기 처리 Event Loop
6
< Event Loop의 개념>
Node.js & Vert.x
Event-Based Asynchronous Pattern (EAP)
• 싱글 스레드 비동기 네트워크 서버 프레임웍
7 Node.js & Vert.x
Event-Based Asynchronous Pattern (EAP)
2. Node.js 란?
Node.js
• Node.js ( http://www.nodejs.org/ )
• 2009년 라이언 달(Ryan Dahl) 개발
• 구글 크롬 브라우져 V8 자바스크립트 엔진 기반
– 2008년 9월 구글 크롬 웹 브라우져 베터버젼 발표
– 크롬 브라우져 V8자바스크립트 엔진 탑재
– C++로 개발, 자바스크립트 코드 기반 머신코드 생성/실행
• V8 자바스크립트 엔진 매력 : 소스 공개 (오픈소스)
– 라이언 달은 표준과 V8자바스크립트 엔진 기반
Node.js개발
9 Node.js & Vert.x
Node.js
• Node.js를 사용한 애플리케이션
10 Node.js & Vert.x
Node.js 장단점
• Node.js의 장점
– Single Thread 기반의 비동기IO를 통한 고성능 처리 (이벤트 방식)
– 자바스크립트의 생산성 향상 (백엔드 개발의 진입 장벽을 깸)
– Socket.io 모듈 제공 (웹 push 기술 제공)
• Node.js의 단점
– Single Thread기반으로 Heavy한 작업인 경우, 성능 급하락
– 이벤트 방식의 CALLBACK HELL (Code Readability 하락)
– Single Thread기반으로 멀티 코어 머신 최적화 어려움.
11 Node.js & Vert.x
Node.js 개발 환경
• Node.js 다운로드 및 설치
12 Node.js & Vert.x
Node.js 개발 환경
• Node.js 실행
13 Node.js & Vert.x
Node.js 개발 환경
• Node.js 웹서버 실행
– node.server.js 저장
14 Node.js & Vert.x
// 모듈을 추출합니다.
var http = require('http');
// 웹 서버를 생성 및 실행합니다.
http.createServer(function (request, response) {
response.writeHead(200, { 'Content-Type': 'text/html' });
response.end('<h1>Hello World .. !</h1>');
}).listen(52273, function () {
console.log('Server running at http://127.0.0.1:52273/');
});
Node.js 개발 환경
• Node.js 웹서버 실행 결과
15 Node.js & Vert.x
Node.js 개발 환경
• Node Package Manager ( )
– npm is the official package manager for Node.js.
 npm –v
 npm –h
 npm install –h
 npm install (-g) <모듈명>
 npm remove <모듈명>(@<버전>)
 npm list <모듈명>
 npm ls (--depth=0)
16 Node.js & Vert.x
Node.js 전역변수
• console : node.js 콘솔 기능 객체
• exports : 모듈 생성 객체
• process : 프로그램 관련 정보 객체
17 Node.js & Vert.x
cosole.log(‘hello’);
export.func1 = function() {…….};
module.js
var mod = require(‘module.js’);
mod.func1();
main.js
argv : 실행 매개변수
env : 컴퓨터 환경 관련 정보
version : node.js 버전
….
Node.js 기본 내장 모듈
• os : Operating-System 관련 모듈
• url : URL 표현 및 파싱 모듈
• querystring : Query String 생성 및 파싱 모듈
• util : node.js 보조 기능 모듈
• crypto : 해시 생성과 암호화 수행 모듈
• fs : File System I/O 관련 모듈
18 Node.js & Vert.x
Node.js 이벤트 처리
• on(eventName, eventHandler)
– 이벤트 연결
• setMaxListeners(limit)
– 이벤트 연결 개수 제한.(limit=0:무제한)
• removeListener(eventName, handler)
– 특정 이벤트 리스너 제거
• removeAllListener([eventName])
– 모든 이벤트 리스너 제거
• Emit(event, [arg1], [arg2], [...])
– 이벤트 강제 발생
19 Node.js & Vert.x
Node.js 외부 모듈 사용
• 외부모듈 (지역모듈. require()함수 사용)
– ejs모듈 : npm install ejs
• 템플릿 엔진 모듈
• jsp와 유사한 방식
– jade모듈 : npm install jade
• 템플릿 엔진 모듈
• 들여쓰기를 통한 html코드 렌더링
• 외부모듈 (전역모듈) - npm install –g 옵션사용
– 서버실행모듈 : node명령어 대신 사용 ( > node server.js )
• supervisor : js변경시 자동 로드 ( > supervisor server.js )
• forever : 서비스 오류시 자동 재시작 ( > forever server.js )
• express : express 프레임워크 제공
20 Node.js & Vert.x
html
head
title Hello
body
…….
<h1><%=name%></h1>
Node.js 를 사용한 웹 개발
• http모듈
– server 객체
– response 객체
– request 객체
21 Node.js & Vert.x
require(‘http’).createServer( function(request, response) {
var url = request.url; // 요청 URL
var method = request.method; // method 속성
}).listen(8080);
var http = require(‘http’);
var server = http.createServer();
server.listen(8080);
require(‘http’).createServer( function(request, response) {
response.writeHead(200, { ‘Content-Type’ : ‘text/html’ });
response.end(‘<h1>Hello~</h1>’);
}).listen(8080);
Node.js 를 사용한 웹 개발
• express모듈
– Http모듈 + 추가 기능 제공 모듈
22 Node.js & Vert.x
// 모듈을 추출합니다.
var fs = require('fs');
var http = require('http');
var express = require('express');
// 서버를 생성합니다.
var app = express();
// 미들웨어를 설정합니다.
app.use(express.bodyParser());
app.use(app.router);
// 라우터를 설정합니다.
app.get('/user', function (request, response) { … });
app.get('/user/:id', function (request, response) { … });
app.post('/user', function (request, response) { … });
app.put('/user/:id', function (request, response) { … });
app.del('/user/:id', function (request, response) { … });
// 서버를 실행합니다.
http.createServer(app).listen(52273, function () {
console.log('Server running at http://127.0.0.1:52273');
});
Node.js 를 사용한 웹 개발
• MySQL 모듈
– MySQL사용할 수 있게 해 주는 모듈
23 Node.js & Vert.x
…..
var mysql = require('mysql');
….
// 데이터베이스와 연결합니다.
var client = mysql.createConnection({
host: ’localhost’ , port: 3306,
user: 'root',
password: '비밀번호',
database: 'Company'
});
……
app.get('/', function (request, response) {
// 파일을 읽습니다.
fs.readFile('list.html', 'utf8', function (error, data) {
// 데이터베이스 쿼리를 실행합니다.
client.query('SELECT * FROM products', function (error, results) {
// 응답합니다.
response.send(ejs.render(data, {
data: results
}));
});
});
});
Node.js 를 사용한 웹 개발
• express 프레임워크
– express모듈로 만든 프레임워크
– 설치방법 : npm install –g express
– 프로젝트 생성 : $ express HelloExpress
• 현재 디렉토리 밑에 HelloExpress 프로젝트 생성
• cd HelloExpress && npm install
– 도움말 : express --help
24 Node.js & Vert.x
Node.js 를 사용한 웹 개발
• socket.io 모듈
– 웹 소켓 서버 기능 제공 모듈
25 Node.js & Vert.x
var http = require('http');
var fs = require('fs');
var socketio = require('socket.io');
// 웹 서버를 만듭니다.
var server = http.createServer(function (request, response) {
// HTMLPage.html 파일을 읽습니다.
fs.readFile('HTMLPage.4.html', function (error, data) {
response.writeHead(200, { 'Content-Type': 'text/html' });
response.end(data);
});
}).listen(52273, function () {
console.log('Server Running at http://127.0.0.1:52273');
});
// 소켓 서버를 만듭니다.
var io = socketio.listen(server);
io.sockets.on('connection', function (socket) {
// message 이벤트
socket.on('message', function (data) {
// 클라이언트의 message 이벤트를 발생시킵니다.
io.sockets.emit('message', data);
});
});
Node.js 를 사용한 시연
• 시연
– 간단한 http 서버 샘플
– socket.io를 통한 샘플
26 Node.js & Vert.x

Mais conteúdo relacionado

Mais procurados

Node.js 시작하기
Node.js 시작하기Node.js 시작하기
Node.js 시작하기Huey Park
 
Node.js + Websocket 삽질기
Node.js + Websocket 삽질기Node.js + Websocket 삽질기
Node.js + Websocket 삽질기Paprikhan
 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs기동 이
 
Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초Circulus
 
진짜기초 Node.js
진짜기초 Node.js진짜기초 Node.js
진짜기초 Node.jsWoo Jin Kim
 
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기John Kim
 
막하는 스터디 첫 번째 만남 Node.js
막하는 스터디 첫 번째 만남 Node.js막하는 스터디 첫 번째 만남 Node.js
막하는 스터디 첫 번째 만남 Node.js연웅 조
 
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015Goonoo Kim
 
Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구ByungJoon Lee
 
Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나JeongHun Byeon
 
파크히어 Realm 사용 사례
파크히어 Realm 사용 사례파크히어 Realm 사용 사례
파크히어 Realm 사용 사례선협 이
 
Python server-101
Python server-101Python server-101
Python server-101Huey Park
 
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기XpressEngine
 
아꿈사 발표 Node JS 프로그래밍 8장
아꿈사 발표 Node JS 프로그래밍 8장아꿈사 발표 Node JS 프로그래밍 8장
아꿈사 발표 Node JS 프로그래밍 8장Woo Yeong Choi
 
Play node conference
Play node conferencePlay node conference
Play node conferenceJohn Kim
 

Mais procurados (20)

Node.js 기본과정
Node.js 기본과정Node.js 기본과정
Node.js 기본과정
 
Node.js 시작하기
Node.js 시작하기Node.js 시작하기
Node.js 시작하기
 
Node.js + Websocket 삽질기
Node.js + Websocket 삽질기Node.js + Websocket 삽질기
Node.js + Websocket 삽질기
 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs
 
Node.js 심화과정
Node.js 심화과정Node.js 심화과정
Node.js 심화과정
 
Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초Startup JavaScript 7 - Node.JS 기초
Startup JavaScript 7 - Node.JS 기초
 
진짜기초 Node.js
진짜기초 Node.js진짜기초 Node.js
진짜기초 Node.js
 
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기NODE.JS 글로벌 기업 적용 사례  그리고, real-time 어플리케이션 개발하기
NODE.JS 글로벌 기업 적용 사례 그리고, real-time 어플리케이션 개발하기
 
Node.js at OKJSP
Node.js at OKJSPNode.js at OKJSP
Node.js at OKJSP
 
막하는 스터디 첫 번째 만남 Node.js
막하는 스터디 첫 번째 만남 Node.js막하는 스터디 첫 번째 만남 Node.js
막하는 스터디 첫 번째 만남 Node.js
 
Node.js 기본
Node.js 기본Node.js 기본
Node.js 기본
 
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
시간당 수백만 요청을 처리하는 node.js 서버 운영기 - Playnode 2015
 
Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구Node.js를 사용한 Big Data 사례연구
Node.js를 사용한 Big Data 사례연구
 
Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나
 
파크히어 Realm 사용 사례
파크히어 Realm 사용 사례파크히어 Realm 사용 사례
파크히어 Realm 사용 사례
 
Python server-101
Python server-101Python server-101
Python server-101
 
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
XECon2015 :: [2-2] 박상현 - React로 개발하는 SPA 실무 이야기
 
아꿈사 발표 Node JS 프로그래밍 8장
아꿈사 발표 Node JS 프로그래밍 8장아꿈사 발표 Node JS 프로그래밍 8장
아꿈사 발표 Node JS 프로그래밍 8장
 
Play node conference
Play node conferencePlay node conference
Play node conference
 
Node.js in Flitto
Node.js in FlittoNode.js in Flitto
Node.js in Flitto
 

Destaque

소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안Jeongsang Baek
 
DGMIT 제3회 R&D 컨퍼런스 1TEAM : NODE.JS
DGMIT 제3회 R&D 컨퍼런스 1TEAM : NODE.JSDGMIT 제3회 R&D 컨퍼런스 1TEAM : NODE.JS
DGMIT 제3회 R&D 컨퍼런스 1TEAM : NODE.JSdgmit2009
 
I know - Chrome and Plugin
I know - Chrome and PluginI know - Chrome and Plugin
I know - Chrome and PluginTaewoo Kim
 
IoT with Raspberry Pi + Node JS - Chapter 3
IoT with Raspberry Pi + Node JS - Chapter 3IoT with Raspberry Pi + Node JS - Chapter 3
IoT with Raspberry Pi + Node JS - Chapter 3Park Jonggun
 
노드js 기초
노드js 기초 노드js 기초
노드js 기초 경륜 이
 
Beejei node.js & web service
Beejei   node.js & web serviceBeejei   node.js & web service
Beejei node.js & web serviceBumjin Kim
 
[16.01.05] node.js & mqtt
[16.01.05] node.js & mqtt[16.01.05] node.js & mqtt
[16.01.05] node.js & mqttNa-yeon Park
 
Nodejs Production 적용기
Nodejs Production 적용기Nodejs Production 적용기
Nodejs Production 적용기JeongHun Byeon
 
[120316] node.js 프로그래밍 5장
[120316] node.js 프로그래밍 5장[120316] node.js 프로그래밍 5장
[120316] node.js 프로그래밍 5장sung ki choi
 
Ryan Dahl의 Node.js 소개 동영상 해설 by doortts
Ryan Dahl의 Node.js 소개 동영상 해설 by doorttsRyan Dahl의 Node.js 소개 동영상 해설 by doortts
Ryan Dahl의 Node.js 소개 동영상 해설 by doorttsSuwon Chae
 
[Hello world]nodejs helloworld chaesuwon
[Hello world]nodejs helloworld chaesuwon[Hello world]nodejs helloworld chaesuwon
[Hello world]nodejs helloworld chaesuwonNAVER D2
 
[Hello world]git internal
[Hello world]git internal[Hello world]git internal
[Hello world]git internalNAVER D2
 
[Hello world]n forge
[Hello world]n forge[Hello world]n forge
[Hello world]n forgeNAVER D2
 
[Hello world]play framework소개
[Hello world]play framework소개[Hello world]play framework소개
[Hello world]play framework소개NAVER D2
 
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기JinKwon Lee
 
Node Foundation Membership Overview 20160907
Node Foundation Membership Overview 20160907Node Foundation Membership Overview 20160907
Node Foundation Membership Overview 20160907NodejsFoundation
 

Destaque (16)

소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
소셜게임 서버 개발 관점에서 본 Node.js의 장단점과 대안
 
DGMIT 제3회 R&D 컨퍼런스 1TEAM : NODE.JS
DGMIT 제3회 R&D 컨퍼런스 1TEAM : NODE.JSDGMIT 제3회 R&D 컨퍼런스 1TEAM : NODE.JS
DGMIT 제3회 R&D 컨퍼런스 1TEAM : NODE.JS
 
I know - Chrome and Plugin
I know - Chrome and PluginI know - Chrome and Plugin
I know - Chrome and Plugin
 
IoT with Raspberry Pi + Node JS - Chapter 3
IoT with Raspberry Pi + Node JS - Chapter 3IoT with Raspberry Pi + Node JS - Chapter 3
IoT with Raspberry Pi + Node JS - Chapter 3
 
노드js 기초
노드js 기초 노드js 기초
노드js 기초
 
Beejei node.js & web service
Beejei   node.js & web serviceBeejei   node.js & web service
Beejei node.js & web service
 
[16.01.05] node.js & mqtt
[16.01.05] node.js & mqtt[16.01.05] node.js & mqtt
[16.01.05] node.js & mqtt
 
Nodejs Production 적용기
Nodejs Production 적용기Nodejs Production 적용기
Nodejs Production 적용기
 
[120316] node.js 프로그래밍 5장
[120316] node.js 프로그래밍 5장[120316] node.js 프로그래밍 5장
[120316] node.js 프로그래밍 5장
 
Ryan Dahl의 Node.js 소개 동영상 해설 by doortts
Ryan Dahl의 Node.js 소개 동영상 해설 by doorttsRyan Dahl의 Node.js 소개 동영상 해설 by doortts
Ryan Dahl의 Node.js 소개 동영상 해설 by doortts
 
[Hello world]nodejs helloworld chaesuwon
[Hello world]nodejs helloworld chaesuwon[Hello world]nodejs helloworld chaesuwon
[Hello world]nodejs helloworld chaesuwon
 
[Hello world]git internal
[Hello world]git internal[Hello world]git internal
[Hello world]git internal
 
[Hello world]n forge
[Hello world]n forge[Hello world]n forge
[Hello world]n forge
 
[Hello world]play framework소개
[Hello world]play framework소개[Hello world]play framework소개
[Hello world]play framework소개
 
웹 Front-End 실무 이야기
웹 Front-End 실무 이야기웹 Front-End 실무 이야기
웹 Front-End 실무 이야기
 
Node Foundation Membership Overview 20160907
Node Foundation Membership Overview 20160907Node Foundation Membership Overview 20160907
Node Foundation Membership Overview 20160907
 

Semelhante a Node.js

빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.xTerry Cho
 
Node.js 20버전에 변경된 점들.pdf
Node.js 20버전에 변경된 점들.pdfNode.js 20버전에 변경된 점들.pdf
Node.js 20버전에 변경된 점들.pdfSeung kyoo Park
 
[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rdPark Jonggun
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기현철 조
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기Ted Won
 
Nodejs발표자료 - 팀 세미나용
Nodejs발표자료 - 팀 세미나용 Nodejs발표자료 - 팀 세미나용
Nodejs발표자료 - 팀 세미나용 SuHyun Jeon
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: YeomanJae Sung Park
 
Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발지수 윤
 
Resource Handling in Spring MVC
Resource Handling in Spring MVCResource Handling in Spring MVC
Resource Handling in Spring MVCArawn Park
 
Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)beom kyun choi
 
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012Daum DNA
 
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)Wonseok Jang
 
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...JinKwon Lee
 
임태현, IIS with ASP.NET
임태현, IIS with ASP.NET임태현, IIS with ASP.NET
임태현, IIS with ASP.NET태현 임
 
.Net conf 2019 Korea_ ASP.NET Core를 통한 HealthCheck 서비스 구현
.Net conf 2019 Korea_ ASP.NET Core를 통한 HealthCheck 서비스 구현.Net conf 2019 Korea_ ASP.NET Core를 통한 HealthCheck 서비스 구현
.Net conf 2019 Korea_ ASP.NET Core를 통한 HealthCheck 서비스 구현Hong Min Kim
 

Semelhante a Node.js (20)

빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x
 
Node.js 20버전에 변경된 점들.pdf
Node.js 20버전에 변경된 점들.pdfNode.js 20버전에 변경된 점들.pdf
Node.js 20버전에 변경된 점들.pdf
 
4-3. jquery
4-3. jquery4-3. jquery
4-3. jquery
 
[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd[IoT] MAKE with Open H/W + Node.JS - 3rd
[IoT] MAKE with Open H/W + Node.JS - 3rd
 
One-day-codelab
One-day-codelabOne-day-codelab
One-day-codelab
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
 
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
JCO 11th 클라우드 환경에서 Java EE 운영 환경 구축하기
 
Nodejs발표자료 - 팀 세미나용
Nodejs발표자료 - 팀 세미나용 Nodejs발표자료 - 팀 세미나용
Nodejs발표자료 - 팀 세미나용
 
도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman도구를 활용한 더 나은 웹 개발: Yeoman
도구를 활용한 더 나은 웹 개발: Yeoman
 
Node.js 첫걸음
Node.js 첫걸음Node.js 첫걸음
Node.js 첫걸음
 
Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발Jenkins를 활용한 javascript 개발
Jenkins를 활용한 javascript 개발
 
okspring3x
okspring3xokspring3x
okspring3x
 
Resource Handling in Spring MVC
Resource Handling in Spring MVCResource Handling in Spring MVC
Resource Handling in Spring MVC
 
Html5 performance
Html5 performanceHtml5 performance
Html5 performance
 
Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)
 
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012
캠프앱 개발 사례를 통해 본 하이브리드앱 어디까지 | Devon 2012
 
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)
Progressive Web App(PWA) 테코톡 발표자료 - 마르코(장원석)
 
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
[Korea Linux Forum] Implementing web based online multiplayer tetris with Ope...
 
임태현, IIS with ASP.NET
임태현, IIS with ASP.NET임태현, IIS with ASP.NET
임태현, IIS with ASP.NET
 
.Net conf 2019 Korea_ ASP.NET Core를 통한 HealthCheck 서비스 구현
.Net conf 2019 Korea_ ASP.NET Core를 통한 HealthCheck 서비스 구현.Net conf 2019 Korea_ ASP.NET Core를 통한 HealthCheck 서비스 구현
.Net conf 2019 Korea_ ASP.NET Core를 통한 HealthCheck 서비스 구현
 

Mais de ymtech

20171120 tech day-11th-소프트웨어 테스팅2-서현용
20171120 tech day-11th-소프트웨어 테스팅2-서현용20171120 tech day-11th-소프트웨어 테스팅2-서현용
20171120 tech day-11th-소프트웨어 테스팅2-서현용ymtech
 
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중20170908 tech day-9th-재미없는 java runtime process 디버그-김성중
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중ymtech
 
20170713 tech day_7th_pxe 부팅-김주한
20170713 tech day_7th_pxe 부팅-김주한20170713 tech day_7th_pxe 부팅-김주한
20170713 tech day_7th_pxe 부팅-김주한ymtech
 
20170609 tech day_4th-nginx(lb)-이재훈
20170609 tech day_4th-nginx(lb)-이재훈20170609 tech day_4th-nginx(lb)-이재훈
20170609 tech day_4th-nginx(lb)-이재훈ymtech
 
20170519 tech day-3rd-highcharts를 이용한 차트 구현-김영석
20170519 tech day-3rd-highcharts를 이용한 차트 구현-김영석20170519 tech day-3rd-highcharts를 이용한 차트 구현-김영석
20170519 tech day-3rd-highcharts를 이용한 차트 구현-김영석ymtech
 
20170414 techday 2nd_uiux디자인-최민희
20170414 techday 2nd_uiux디자인-최민희20170414 techday 2nd_uiux디자인-최민희
20170414 techday 2nd_uiux디자인-최민희ymtech
 
20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍
20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍
20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍ymtech
 
Mikrotic CCR1036 라우팅 설정
Mikrotic CCR1036 라우팅 설정Mikrotic CCR1036 라우팅 설정
Mikrotic CCR1036 라우팅 설정ymtech
 
Cubietruck 리눅스 이미지 설치
Cubietruck 리눅스 이미지 설치Cubietruck 리눅스 이미지 설치
Cubietruck 리눅스 이미지 설치ymtech
 
Installation Openstack Swift
Installation Openstack SwiftInstallation Openstack Swift
Installation Openstack Swiftymtech
 
Welcome to keystone the open stack identity service_v1.0.0-20141208-1212
Welcome to keystone the open stack identity service_v1.0.0-20141208-1212Welcome to keystone the open stack identity service_v1.0.0-20141208-1212
Welcome to keystone the open stack identity service_v1.0.0-20141208-1212ymtech
 
Ubuntu Host AP Setting
Ubuntu Host AP SettingUbuntu Host AP Setting
Ubuntu Host AP Settingymtech
 
Intel Galileo Linux Setting
Intel Galileo Linux SettingIntel Galileo Linux Setting
Intel Galileo Linux Settingymtech
 
MarsBoard RK3066 Linux 설치
MarsBoard RK3066 Linux 설치MarsBoard RK3066 Linux 설치
MarsBoard RK3066 Linux 설치ymtech
 
HP 3800-24G-2SFP OpenFlow Setting
HP 3800-24G-2SFP OpenFlow SettingHP 3800-24G-2SFP OpenFlow Setting
HP 3800-24G-2SFP OpenFlow Settingymtech
 
Openstack Instance Resize
Openstack Instance ResizeOpenstack Instance Resize
Openstack Instance Resizeymtech
 
Openstack live migration
Openstack live migrationOpenstack live migration
Openstack live migrationymtech
 
SDN OpenFlow Load Balancer 시나리오
SDN OpenFlow Load Balancer 시나리오SDN OpenFlow Load Balancer 시나리오
SDN OpenFlow Load Balancer 시나리오ymtech
 
TR-069 클라이언트 검토자료8편
TR-069 클라이언트 검토자료8편TR-069 클라이언트 검토자료8편
TR-069 클라이언트 검토자료8편ymtech
 
TR-069 클라이언트 검토자료7편
TR-069 클라이언트 검토자료7편TR-069 클라이언트 검토자료7편
TR-069 클라이언트 검토자료7편ymtech
 

Mais de ymtech (20)

20171120 tech day-11th-소프트웨어 테스팅2-서현용
20171120 tech day-11th-소프트웨어 테스팅2-서현용20171120 tech day-11th-소프트웨어 테스팅2-서현용
20171120 tech day-11th-소프트웨어 테스팅2-서현용
 
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중20170908 tech day-9th-재미없는 java runtime process 디버그-김성중
20170908 tech day-9th-재미없는 java runtime process 디버그-김성중
 
20170713 tech day_7th_pxe 부팅-김주한
20170713 tech day_7th_pxe 부팅-김주한20170713 tech day_7th_pxe 부팅-김주한
20170713 tech day_7th_pxe 부팅-김주한
 
20170609 tech day_4th-nginx(lb)-이재훈
20170609 tech day_4th-nginx(lb)-이재훈20170609 tech day_4th-nginx(lb)-이재훈
20170609 tech day_4th-nginx(lb)-이재훈
 
20170519 tech day-3rd-highcharts를 이용한 차트 구현-김영석
20170519 tech day-3rd-highcharts를 이용한 차트 구현-김영석20170519 tech day-3rd-highcharts를 이용한 차트 구현-김영석
20170519 tech day-3rd-highcharts를 이용한 차트 구현-김영석
 
20170414 techday 2nd_uiux디자인-최민희
20170414 techday 2nd_uiux디자인-최민희20170414 techday 2nd_uiux디자인-최민희
20170414 techday 2nd_uiux디자인-최민희
 
20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍
20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍
20170310 tech day-1st-maven을 이용한 프로그램 빌드-박준홍
 
Mikrotic CCR1036 라우팅 설정
Mikrotic CCR1036 라우팅 설정Mikrotic CCR1036 라우팅 설정
Mikrotic CCR1036 라우팅 설정
 
Cubietruck 리눅스 이미지 설치
Cubietruck 리눅스 이미지 설치Cubietruck 리눅스 이미지 설치
Cubietruck 리눅스 이미지 설치
 
Installation Openstack Swift
Installation Openstack SwiftInstallation Openstack Swift
Installation Openstack Swift
 
Welcome to keystone the open stack identity service_v1.0.0-20141208-1212
Welcome to keystone the open stack identity service_v1.0.0-20141208-1212Welcome to keystone the open stack identity service_v1.0.0-20141208-1212
Welcome to keystone the open stack identity service_v1.0.0-20141208-1212
 
Ubuntu Host AP Setting
Ubuntu Host AP SettingUbuntu Host AP Setting
Ubuntu Host AP Setting
 
Intel Galileo Linux Setting
Intel Galileo Linux SettingIntel Galileo Linux Setting
Intel Galileo Linux Setting
 
MarsBoard RK3066 Linux 설치
MarsBoard RK3066 Linux 설치MarsBoard RK3066 Linux 설치
MarsBoard RK3066 Linux 설치
 
HP 3800-24G-2SFP OpenFlow Setting
HP 3800-24G-2SFP OpenFlow SettingHP 3800-24G-2SFP OpenFlow Setting
HP 3800-24G-2SFP OpenFlow Setting
 
Openstack Instance Resize
Openstack Instance ResizeOpenstack Instance Resize
Openstack Instance Resize
 
Openstack live migration
Openstack live migrationOpenstack live migration
Openstack live migration
 
SDN OpenFlow Load Balancer 시나리오
SDN OpenFlow Load Balancer 시나리오SDN OpenFlow Load Balancer 시나리오
SDN OpenFlow Load Balancer 시나리오
 
TR-069 클라이언트 검토자료8편
TR-069 클라이언트 검토자료8편TR-069 클라이언트 검토자료8편
TR-069 클라이언트 검토자료8편
 
TR-069 클라이언트 검토자료7편
TR-069 클라이언트 검토자료7편TR-069 클라이언트 검토자료7편
TR-069 클라이언트 검토자료7편
 

Node.js

  • 2. - 목 차 • 1. Event-Based Asynchronous Pattern (EAP) • 2. Node.js 란? Node.js & Vert.x2
  • 4. Event-Based Asynchronous Pattern (EAP) • Event-Based Asynchronous Pattern (EAP) – 스레드 기반 동기 방식 (기존 서버 동작 방식 ) • 스레드마다 요청에 대한 결과응답을 완료하고 다음 요청 처리하는 방식. • 예) ETRI 식당 한식 코너 배식 : 2개 스레드(동편제/서편제) 기반 동기방식 • 배식 방법 : 식권제출, 국 -> 밥 -> 반찬1 -> 반찬2 -> 반찬3 –> 식사 (동기방식) • 국이 다 떨어졌다. 국이 준비될 때까지 배식 진행 대기 상태 (blocking) – 이벤트 기반 비동기 방식 • 요청을 받아서 처리하고, 결과응답을 이벤트로 알려주는 방식. • 예) 뷔페의 즉석요리 코너 : 스테이크 코너, 스파게티 코너, 냉면 코너 등등 • 원하는 즉석 요리 신청 후, 번호표를 받고, 다른 즉석 요리 신청 가능. (non blocking) • 즉석 요리 신청 중, 다른 음식코너를 계속 이용할 수 있다. (비동기 방식) • 요리가 완성되어, 번호 호출(event)이 되면, 음식을 가져온다. 4 Node.js & Vert.x
  • 5. • 멀티 스레드 구조와 싱글 스레드 구조 5 <Tomcat의 Multi Thread 구조> Node.js & Vert.x <Vert.x의 Single Thread 구조> Event-Based Asynchronous Pattern (EAP)
  • 6. • 싱글 스레드 이벤트기반 비동기 처리 Event Loop 6 < Event Loop의 개념> Node.js & Vert.x Event-Based Asynchronous Pattern (EAP)
  • 7. • 싱글 스레드 비동기 네트워크 서버 프레임웍 7 Node.js & Vert.x Event-Based Asynchronous Pattern (EAP)
  • 9. Node.js • Node.js ( http://www.nodejs.org/ ) • 2009년 라이언 달(Ryan Dahl) 개발 • 구글 크롬 브라우져 V8 자바스크립트 엔진 기반 – 2008년 9월 구글 크롬 웹 브라우져 베터버젼 발표 – 크롬 브라우져 V8자바스크립트 엔진 탑재 – C++로 개발, 자바스크립트 코드 기반 머신코드 생성/실행 • V8 자바스크립트 엔진 매력 : 소스 공개 (오픈소스) – 라이언 달은 표준과 V8자바스크립트 엔진 기반 Node.js개발 9 Node.js & Vert.x
  • 10. Node.js • Node.js를 사용한 애플리케이션 10 Node.js & Vert.x
  • 11. Node.js 장단점 • Node.js의 장점 – Single Thread 기반의 비동기IO를 통한 고성능 처리 (이벤트 방식) – 자바스크립트의 생산성 향상 (백엔드 개발의 진입 장벽을 깸) – Socket.io 모듈 제공 (웹 push 기술 제공) • Node.js의 단점 – Single Thread기반으로 Heavy한 작업인 경우, 성능 급하락 – 이벤트 방식의 CALLBACK HELL (Code Readability 하락) – Single Thread기반으로 멀티 코어 머신 최적화 어려움. 11 Node.js & Vert.x
  • 12. Node.js 개발 환경 • Node.js 다운로드 및 설치 12 Node.js & Vert.x
  • 13. Node.js 개발 환경 • Node.js 실행 13 Node.js & Vert.x
  • 14. Node.js 개발 환경 • Node.js 웹서버 실행 – node.server.js 저장 14 Node.js & Vert.x // 모듈을 추출합니다. var http = require('http'); // 웹 서버를 생성 및 실행합니다. http.createServer(function (request, response) { response.writeHead(200, { 'Content-Type': 'text/html' }); response.end('<h1>Hello World .. !</h1>'); }).listen(52273, function () { console.log('Server running at http://127.0.0.1:52273/'); });
  • 15. Node.js 개발 환경 • Node.js 웹서버 실행 결과 15 Node.js & Vert.x
  • 16. Node.js 개발 환경 • Node Package Manager ( ) – npm is the official package manager for Node.js.  npm –v  npm –h  npm install –h  npm install (-g) <모듈명>  npm remove <모듈명>(@<버전>)  npm list <모듈명>  npm ls (--depth=0) 16 Node.js & Vert.x
  • 17. Node.js 전역변수 • console : node.js 콘솔 기능 객체 • exports : 모듈 생성 객체 • process : 프로그램 관련 정보 객체 17 Node.js & Vert.x cosole.log(‘hello’); export.func1 = function() {…….}; module.js var mod = require(‘module.js’); mod.func1(); main.js argv : 실행 매개변수 env : 컴퓨터 환경 관련 정보 version : node.js 버전 ….
  • 18. Node.js 기본 내장 모듈 • os : Operating-System 관련 모듈 • url : URL 표현 및 파싱 모듈 • querystring : Query String 생성 및 파싱 모듈 • util : node.js 보조 기능 모듈 • crypto : 해시 생성과 암호화 수행 모듈 • fs : File System I/O 관련 모듈 18 Node.js & Vert.x
  • 19. Node.js 이벤트 처리 • on(eventName, eventHandler) – 이벤트 연결 • setMaxListeners(limit) – 이벤트 연결 개수 제한.(limit=0:무제한) • removeListener(eventName, handler) – 특정 이벤트 리스너 제거 • removeAllListener([eventName]) – 모든 이벤트 리스너 제거 • Emit(event, [arg1], [arg2], [...]) – 이벤트 강제 발생 19 Node.js & Vert.x
  • 20. Node.js 외부 모듈 사용 • 외부모듈 (지역모듈. require()함수 사용) – ejs모듈 : npm install ejs • 템플릿 엔진 모듈 • jsp와 유사한 방식 – jade모듈 : npm install jade • 템플릿 엔진 모듈 • 들여쓰기를 통한 html코드 렌더링 • 외부모듈 (전역모듈) - npm install –g 옵션사용 – 서버실행모듈 : node명령어 대신 사용 ( > node server.js ) • supervisor : js변경시 자동 로드 ( > supervisor server.js ) • forever : 서비스 오류시 자동 재시작 ( > forever server.js ) • express : express 프레임워크 제공 20 Node.js & Vert.x html head title Hello body ……. <h1><%=name%></h1>
  • 21. Node.js 를 사용한 웹 개발 • http모듈 – server 객체 – response 객체 – request 객체 21 Node.js & Vert.x require(‘http’).createServer( function(request, response) { var url = request.url; // 요청 URL var method = request.method; // method 속성 }).listen(8080); var http = require(‘http’); var server = http.createServer(); server.listen(8080); require(‘http’).createServer( function(request, response) { response.writeHead(200, { ‘Content-Type’ : ‘text/html’ }); response.end(‘<h1>Hello~</h1>’); }).listen(8080);
  • 22. Node.js 를 사용한 웹 개발 • express모듈 – Http모듈 + 추가 기능 제공 모듈 22 Node.js & Vert.x // 모듈을 추출합니다. var fs = require('fs'); var http = require('http'); var express = require('express'); // 서버를 생성합니다. var app = express(); // 미들웨어를 설정합니다. app.use(express.bodyParser()); app.use(app.router); // 라우터를 설정합니다. app.get('/user', function (request, response) { … }); app.get('/user/:id', function (request, response) { … }); app.post('/user', function (request, response) { … }); app.put('/user/:id', function (request, response) { … }); app.del('/user/:id', function (request, response) { … }); // 서버를 실행합니다. http.createServer(app).listen(52273, function () { console.log('Server running at http://127.0.0.1:52273'); });
  • 23. Node.js 를 사용한 웹 개발 • MySQL 모듈 – MySQL사용할 수 있게 해 주는 모듈 23 Node.js & Vert.x ….. var mysql = require('mysql'); …. // 데이터베이스와 연결합니다. var client = mysql.createConnection({ host: ’localhost’ , port: 3306, user: 'root', password: '비밀번호', database: 'Company' }); …… app.get('/', function (request, response) { // 파일을 읽습니다. fs.readFile('list.html', 'utf8', function (error, data) { // 데이터베이스 쿼리를 실행합니다. client.query('SELECT * FROM products', function (error, results) { // 응답합니다. response.send(ejs.render(data, { data: results })); }); }); });
  • 24. Node.js 를 사용한 웹 개발 • express 프레임워크 – express모듈로 만든 프레임워크 – 설치방법 : npm install –g express – 프로젝트 생성 : $ express HelloExpress • 현재 디렉토리 밑에 HelloExpress 프로젝트 생성 • cd HelloExpress && npm install – 도움말 : express --help 24 Node.js & Vert.x
  • 25. Node.js 를 사용한 웹 개발 • socket.io 모듈 – 웹 소켓 서버 기능 제공 모듈 25 Node.js & Vert.x var http = require('http'); var fs = require('fs'); var socketio = require('socket.io'); // 웹 서버를 만듭니다. var server = http.createServer(function (request, response) { // HTMLPage.html 파일을 읽습니다. fs.readFile('HTMLPage.4.html', function (error, data) { response.writeHead(200, { 'Content-Type': 'text/html' }); response.end(data); }); }).listen(52273, function () { console.log('Server Running at http://127.0.0.1:52273'); }); // 소켓 서버를 만듭니다. var io = socketio.listen(server); io.sockets.on('connection', function (socket) { // message 이벤트 socket.on('message', function (data) { // 클라이언트의 message 이벤트를 발생시킵니다. io.sockets.emit('message', data); }); });
  • 26. Node.js 를 사용한 시연 • 시연 – 간단한 http 서버 샘플 – socket.io를 통한 샘플 26 Node.js & Vert.x

Notas do Editor

  1. Tomcat : request queue의 request를 thread pool에서 관리되는 Thread에게 할당, 처리함. Request에 대한 response를 보내고 작업이 완료됨. 스레드 구조는 처리하는 스레드에 많아짐에 Thread의 Context switching 오버헤드 발생. 멀티 스레드의 공유자원 접근시 locking등의 처리 필요.
  2. Event loop를 통한 요청 처리. 요청에 대한 결과는 이벤트 형태로 수신함. 이벤트 발생 비율이 많거나, 이벤트 처리 로직의 소요시간이 길면, 성능이 떨어짐.
  3. CommonJS : ServerJS 이름으로 시작. 웹브라우져 밖에서 자바스크립트를 사용하기 위한 표준.
  4. 이베이 (온라인 경매와 쇼핑 웹사이트) : 웹 API를 node.js사용 Linked in (비즈니스 인맥 사이트) : 모든 서버 node.js로 구성 Yammer (기업용 소셜 네트워크 서비스) : 기존 루비로 개발된 프록시 서버를 node.js로 교체 윈도우 애져 (마이크로소프트 클라우드 플랫폼) : 2011년 12월 부터 node.js SDK 배포 NHN (국내최대 포탈 naver.com) : node.js 어플리케이션 구축