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

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

Jun 19, 2015

Download

Technology

JeongHoon Byun

2011. 7.2 KSUG 번개 세미나에서 발표한 발표자료
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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/

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