node.js 자바스크립트로 서버사이드 개발하기

56
자바스크립트로 서버사이드 개발하기 2011.07.02 Outsider at KSUG :

Upload: jeonghoon-byun

Post on 19-Jun-2015

19.421 views

Category:

Technology


7 download

DESCRIPTION

2011. 7.2 KSUG 번개 세미나에서 발표한 발표자료

TRANSCRIPT

Page 1: Node.js 자바스크립트로 서버사이드 개발하기

자바스크립트로����������� ������������������  

서버사이드����������� ������������������  개발하기

2011.07.02Outsider����������� ������������������  at����������� ������������������  KSUG

:

Page 2: Node.js 자바스크립트로 서버사이드 개발하기

짧은����������� ������������������  역사

Page 3: Node.js 자바스크립트로 서버사이드 개발하기

2009년����������� ������������������  2월����������� ������������������  9일

“V8을����������� ������������������  이용한����������� ������������������  프로젝트에����������� ������������������  대한����������� ������������������  아이디어가����������� ������������������  있어”����������� ������������������  by����������� ������������������  ryan

Ryan Dahl

Page 4: Node.js 자바스크립트로 서버사이드 개발하기

2009년����������� ������������������  11월����������� ������������������  8일

JSConf.eu����������� ������������������  2009

node.js����������� ������������������  발표버전����������� ������������������  0.1.16

Page 5: Node.js 자바스크립트로 서버사이드 개발하기

인기를����������� ������������������  얻다

Page 6: Node.js 자바스크립트로 서버사이드 개발하기

Popular����������� ������������������  watched3위

Page 7: Node.js 자바스크립트로 서버사이드 개발하기

watched

7632

Page 8: Node.js 자바스크립트로 서버사이드 개발하기

1830http://nithub.duostack.net/

모듈

npm����������� ������������������  기준

Page 9: Node.js 자바스크립트로 서버사이드 개발하기

메인����������� ������������������  스폰서����������� ������������������  되다����������� ������������������  

Page 10: Node.js 자바스크립트로 서버사이드 개발하기

현재����������� ������������������  버전����������� ������������������  

v0.4.9

Page 11: Node.js 자바스크립트로 서버사이드 개발하기

윈도우����������� ������������������  지원����������� ������������������  예정

Page 12: Node.js 자바스크립트로 서버사이드 개발하기

는����������� ������������������  무엇인가?

Page 13: Node.js 자바스크립트로 서버사이드 개발하기

Server-sideJavaScript

Page 14: Node.js 자바스크립트로 서버사이드 개발하기
Page 15: Node.js 자바스크립트로 서버사이드 개발하기
Page 16: Node.js 자바스크립트로 서버사이드 개발하기

Live����������� ������������������  wire

Page 17: Node.js 자바스크립트로 서버사이드 개발하기

GWTLive����������� ������������������  wir

e

Page 18: Node.js 자바스크립트로 서버사이드 개발하기

Rhino

GWTLive����������� ������������������  wir

e

Page 19: Node.js 자바스크립트로 서버사이드 개발하기

Rhino

GWT

<script����������� ������������������  runat=”server”>

Live����������� ������������������  wire

Page 20: Node.js 자바스크립트로 서버사이드 개발하기

이번엔����������� ������������������  진짜서버사이드자바스크립트

Page 21: Node.js 자바스크립트로 서버사이드 개발하기

컨셉

Page 22: Node.js 자바스크립트로 서버사이드 개발하기

“동시성을����������� ������������������  해결하는����������� ������������������  가장����������� ������������������  좋은����������� ������������������  방법이����������� ������������������  뭔지����������� ������������������  알아요?동시성을����������� ������������������  사용하지����������� ������������������  않는거에요”

맹수

Page 23: Node.js 자바스크립트로 서버사이드 개발하기

“We’re����������� ������������������  doing����������� ������������������  it����������� ������������������  wrong”-����������� ������������������  Ryan����������� ������������������  Dahl

Page 24: Node.js 자바스크립트로 서버사이드 개발하기

싱글쓰레드

Page 25: Node.js 자바스크립트로 서버사이드 개발하기

쓰레드는����������� ������������������  싸지����������� ������������������  않다

Page 26: Node.js 자바스크립트로 서버사이드 개발하기

멀티태스킹하지만����������� ������������������  한번에����������� ������������������  하나씩만!!!

Page 27: Node.js 자바스크립트로 서버사이드 개발하기

이벤트기반

Page 28: Node.js 자바스크립트로 서버사이드 개발하기

작업을����������� ������������������  요청하고����������� ������������������  

완료되면����������� ������������������  돌려받는다

Page 29: Node.js 자바스크립트로 서버사이드 개발하기

0

3,000

6,000

9,000

12,000

0 500 1000 1500 2000 2500 3000 3500 4000

nginx

apache

http://blog.webfaction.com/a-little-holiday-present

동시접속수에����������� ������������������  따른����������� ������������������  초당����������� ������������������  리퀘스트����������� ������������������  처리수

동시접속수

초당����������� ������������������  리퀘스트

Page 30: Node.js 자바스크립트로 서버사이드 개발하기

0

10

20

30

40

0 500 1000 1500 2000 2500 3000 3500 4000

nginx

apache

http://blog.webfaction.com/a-little-holiday-present

동시접속수에����������� ������������������  따른����������� ������������������  메모리����������� ������������������  사용량

동시접속수

MB

Page 31: Node.js 자바스크립트로 서버사이드 개발하기

non-blocking����������� ������������������  I/O

Page 32: Node.js 자바스크립트로 서버사이드 개발하기

var����������� ������������������  result����������� ������������������  =����������� ������������������  db.query('select����������� ������������������  *����������� ������������������  from����������� ������������������  A')//����������� ������������������  use����������� ������������������  result

Page 33: Node.js 자바스크립트로 서버사이드 개발하기

var����������� ������������������  result����������� ������������������  =����������� ������������������  db.query('select����������� ������������������  *����������� ������������������  from����������� ������������������  A')//����������� ������������������  use����������� ������������������  result

블락킹

Page 34: Node.js 자바스크립트로 서버사이드 개발하기

L1

L2

RAM

DISK

Internet

I/O����������� ������������������  latency

80,000,000ns

13,700,000ns

83ns

4.7ns

1ns

http://duartes.org/gustavo/blog/post/what-your-computer-does-while-you-wait

Page 35: Node.js 자바스크립트로 서버사이드 개발하기

db.query('select����������� ������������������  *����������� ������������������  from����������� ������������������  A',����������� ������������������  ����������� ������������������  ����������� ������������������  function(result)����������� ������������������  {����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  //����������� ������������������  use����������� ������������������  result});

Page 36: Node.js 자바스크립트로 서버사이드 개발하기

비동기����������� ������������������  I/O

Page 37: Node.js 자바스크립트로 서버사이드 개발하기

유니버셜����������� ������������������  랭귀지

자바스크립트

Page 38: Node.js 자바스크립트로 서버사이드 개발하기

V8

Page 39: Node.js 자바스크립트로 서버사이드 개발하기

CommonJS

Page 40: Node.js 자바스크립트로 서버사이드 개발하기

require(‘모듈명’)

Page 41: Node.js 자바스크립트로 서버사이드 개발하기

//����������� ������������������  app.jsvar����������� ������������������  app����������� ������������������  =����������� ������������������  module.exports����������� ������������������  =����������� ������������������  {};

//����������� ������������������  another.jsvar����������� ������������������  another����������� ������������������  =����������� ������������������  require(‘./app’)

Page 42: Node.js 자바스크립트로 서버사이드 개발하기
Page 43: Node.js 자바스크립트로 서버사이드 개발하기

Events

Page 44: Node.js 자바스크립트로 서버사이드 개발하기

Events HTTP

Page 45: Node.js 자바스크립트로 서버사이드 개발하기

Events HTTPHTTPS

Page 46: Node.js 자바스크립트로 서버사이드 개발하기

Events HTTP

File����������� ������������������  SystemHTTPS

Page 47: Node.js 자바스크립트로 서버사이드 개발하기

Events HTTP

File����������� ������������������  System

Net

HTTPS

Page 48: Node.js 자바스크립트로 서버사이드 개발하기

Events HTTP

File����������� ������������������  System

Net

HTTPS

URL

Page 49: Node.js 자바스크립트로 서버사이드 개발하기

Events HTTP

File����������� ������������������  System

Net

HTTPS

DNSURL

Page 50: Node.js 자바스크립트로 서버사이드 개발하기

Events HTTP

File����������� ������������������  System

Net

HTTPS

DNSURLChild����������� ������������������  Process

Page 51: Node.js 자바스크립트로 서버사이드 개발하기

node.js는����������� ������������������  

V8위에서����������� ������������������  돌아가는����������� ������������������  

자바스크립트����������� ������������������  런타임

Page 52: Node.js 자바스크립트로 서버사이드 개발하기

직접����������� ������������������  보자!!!

Page 53: Node.js 자바스크립트로 서버사이드 개발하기

로����������� ������������������  무엇을����������� ������������������  할����������� ������������������  수����������� ������������������  있는가?

Page 54: Node.js 자바스크립트로 서버사이드 개발하기
Page 55: Node.js 자바스크립트로 서버사이드 개발하기

email����������� ������������������  :����������� ������������������  [email protected]

Twitter����������� ������������������  :����������� ������������������  @outsideris

Blog����������� ������������������  :����������� ������������������  http://blog.outsider.ne.kr

Question???

Page 56: Node.js 자바스크립트로 서버사이드 개발하기

http://www.flickr.com/photos/franksvalli/5163229095/

http://www.flickr.com/photos/jasonbain/5871759941/

http://www.flickr.com/photos/australianshepherds/5715698150/

http://www.flickr.com/photos/soldiersmediacenter/2759042525/

http://www.flickr.com/photos/dslrninja/446737429/

http://www.flickr.com/photos/ncc_badiey/4932200417/

http://www.flickr.com/photos/laughingsquid/390803227/

http://www.flickr.com/photos/nirazilla/3484465952/

이미지����������� ������������������  출처