2012.2.11OutsideratOKJSP정기세미나
isserver-side JavaScript
Iexpectedit             because Netscapeactuallywantedtodothat.            BrendanEich,CTOatMozilla
Event-Loop
Application
FileSystem                Application
Database FileSystem                           Application
Database         Network FileSystem                           Application
Database         Network FileSystem                           Application
Database         Network  File System                            ApplicationInput/Output
I/Olatency       L1                                                              1ns       L2                             ...
varresult=db.query(쿼리);//result를사용한다.
varresult=db.query(쿼리);//result를사용한다.db.query(쿼리,function(result){//result를사용한다.});
varresult=db.query(쿼리);//result를사용한다.          Syncdb.query(쿼리,function(result){//result를사용한다.});                         ...
코드실행
DB조회코드실행
DB조회코드실행                  코드실행
DB조회          파일조회코드실행                  코드실행
DB조회          파일조회코드실행                  코드실행                  코드실행
DB조회          파일조회코드실행                    코드실행                  코드실행  코드실행
DB조회            파일조회코드실행                      코드실행                  코드실행           DB조회  코드실행
DB조회            파일조회코드실행                      코드실행                  코드실행       파일조회           DB조회  코드실행
DB조회            파일조회코드실행                      코드실행                  코드실행       파일조회           DB조회  코드실행                  ...
DB조회            파일조회코드실행                      코드실행                  코드실행       파일조회           DB조회  코드실행                  ...
Sync         DB조회            파일조회코드실행                      코드실행                  코드실행       파일조회                       Asy...
varserver=require(http);server.createServer();server.on(request,function(req,res){});server.listen(3000,localhost);console...
드  실행코      varserver=require(http);       server.createServer();       server.on(request,function(req,res){       });    ...
드  실행코        varserver=require(http);         server.createServer();                   너  등록  트리스이벤 server.on(request,fun...
드  실행코        varserver=require(http);         server.createServer();                   너  등록                             ...
EverythingisNon-blockingI/O
varresult=db.query(쿼리);//result를사용한다.db.query(쿼리,function(result){//result를사용한다.});
varresult=db.query(쿼리);//result를사용한다.         Blockdb.query(쿼리,function(result){//result를사용한다.});                         ...
JavaScriptonV8
SingleThread SingleStack
console.log(HelloWorld);                      HelloWorld
setTimeout(function(){console.log(World);},2000);console.log(Hello);                             HelloWorld
setTimeout(function(){console.log(World);},2000);console.log(Hello);while(true){}                             HelloWorld
nodeexecutionstack                      ev_loop()
index.html페이지요청    nodeexecution    stack                    ev_loop()
index.html페이지요청                    socket_readable(1)    nodeexecution    stack                        ev_loop()
index.html페이지요청                      http_parse(1)                    socket_readable(1)    nodeexecution    stack        ...
index.html페이지요청                    load(“index.html”)                      http_parse(1)                    socket_readabl...
index.html페이지요청                      http_parse(1)                    socket_readable(1)    nodeexecution    stack        ...
index.html페이지요청                    socket_readable(1)    nodeexecution    stack                        ev_loop()
index.html페이지요청    nodeexecution    stack                    ev_loop()
메모리에대한두번째요청    nodeexecution    stack                         ev_loop()
메모리에대한두번째요청                    socket_readable(2)    nodeexecution    stack                         ev_loop()
메모리에대한두번째요청                      http_parse(2)                    socket_readable(2)    nodeexecution    stack            ...
메모리에대한두번째요청                     http_respond(2)                      http_parse(2)                    socket_readable(2)  ...
메모리에대한두번째요청                      http_parse(2)                    socket_readable(2)    nodeexecution    stack            ...
메모리에대한두번째요청                    socket_readable(2)    nodeexecution    stack                         ev_loop()
메모리에대한두번째요청    nodeexecution    stack                         ev_loop()
index.html페이지요청    nodeexecution    stack                    ev_loop()
index.html페이지요청                    file_loaded()    nodeexecution    stack                     ev_loop()
index.html페이지요청                    http_respond(1)                     file_loaded()    nodeexecution    stack            ...
index.html페이지요청                    file_loaded()    nodeexecution    stack                     ev_loop()
index.html페이지요청    nodeexecution    stack                    ev_loop()
CommonJS
require(모듈명)
//app.jsvarapp=module.exports={};//another.jsvaranother=require(./app)
Questions...?Blog:http://blog.outsider.ne.krTwitter:@outsiderisemail:outsideris@gmail.com
Node.js at OKJSP
Upcoming SlideShare
Loading in...5
×

Node.js at OKJSP

2,919

Published on

2월 11일 OKJSP 정기세미나에서 발표한 발표자료입니다.

Published in: Technology
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,919
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
46
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

Node.js at OKJSP

  1. 1. 2012.2.11OutsideratOKJSP정기세미나
  2. 2. isserver-side JavaScript
  3. 3. Iexpectedit because Netscapeactuallywantedtodothat. BrendanEich,CTOatMozilla
  4. 4. Event-Loop
  5. 5. Application
  6. 6. FileSystem Application
  7. 7. Database FileSystem Application
  8. 8. Database Network FileSystem Application
  9. 9. Database Network FileSystem Application
  10. 10. Database Network File System ApplicationInput/Output
  11. 11. I/Olatency L1 1ns L2 4.7ns RAM 83ns DISK 13,700,000nsInternet 80,000,000ns http://duartes.org/gustavo/blog/post/what-your-computer-does-while-you-wait
  12. 12. varresult=db.query(쿼리);//result를사용한다.
  13. 13. varresult=db.query(쿼리);//result를사용한다.db.query(쿼리,function(result){//result를사용한다.});
  14. 14. varresult=db.query(쿼리);//result를사용한다. Syncdb.query(쿼리,function(result){//result를사용한다.}); Async
  15. 15. 코드실행
  16. 16. DB조회코드실행
  17. 17. DB조회코드실행 코드실행
  18. 18. DB조회 파일조회코드실행 코드실행
  19. 19. DB조회 파일조회코드실행 코드실행 코드실행
  20. 20. DB조회 파일조회코드실행 코드실행 코드실행 코드실행
  21. 21. DB조회 파일조회코드실행 코드실행 코드실행 DB조회 코드실행
  22. 22. DB조회 파일조회코드실행 코드실행 코드실행 파일조회 DB조회 코드실행
  23. 23. DB조회 파일조회코드실행 코드실행 코드실행 파일조회 DB조회 코드실행 콜백실행
  24. 24. DB조회 파일조회코드실행 코드실행 코드실행 파일조회 DB조회 코드실행 콜백실행 콜백실행
  25. 25. Sync DB조회 파일조회코드실행 코드실행 코드실행 파일조회 Async DB조회 코드실행 콜백실행 콜백실행
  26. 26. varserver=require(http);server.createServer();server.on(request,function(req,res){});server.listen(3000,localhost);console.log(서버가시작되었습니다.);
  27. 27. 드 실행코 varserver=require(http); server.createServer(); server.on(request,function(req,res){ }); server.listen(3000,localhost); console.log(서버가시작되었습니다.);
  28. 28. 드 실행코 varserver=require(http); server.createServer(); 너 등록 트리스이벤 server.on(request,function(req,res){ }); server.listen(3000,localhost); console.log(서버가시작되었습니다.);
  29. 29. 드 실행코 varserver=require(http); server.createServer(); 너 등록 실행 트리스 콜 백이벤 server.on(request,function(req,res){ }); server.listen(3000,localhost); console.log(서버가시작되었습니다.);
  30. 30. EverythingisNon-blockingI/O
  31. 31. varresult=db.query(쿼리);//result를사용한다.db.query(쿼리,function(result){//result를사용한다.});
  32. 32. varresult=db.query(쿼리);//result를사용한다. Blockdb.query(쿼리,function(result){//result를사용한다.}); non-B lock
  33. 33. JavaScriptonV8
  34. 34. SingleThread SingleStack
  35. 35. console.log(HelloWorld); HelloWorld
  36. 36. setTimeout(function(){console.log(World);},2000);console.log(Hello); HelloWorld
  37. 37. setTimeout(function(){console.log(World);},2000);console.log(Hello);while(true){} HelloWorld
  38. 38. nodeexecutionstack ev_loop()
  39. 39. index.html페이지요청 nodeexecution stack ev_loop()
  40. 40. index.html페이지요청 socket_readable(1) nodeexecution stack ev_loop()
  41. 41. index.html페이지요청 http_parse(1) socket_readable(1) nodeexecution stack ev_loop()
  42. 42. index.html페이지요청 load(“index.html”) http_parse(1) socket_readable(1) nodeexecution stack ev_loop()
  43. 43. index.html페이지요청 http_parse(1) socket_readable(1) nodeexecution stack ev_loop()
  44. 44. index.html페이지요청 socket_readable(1) nodeexecution stack ev_loop()
  45. 45. index.html페이지요청 nodeexecution stack ev_loop()
  46. 46. 메모리에대한두번째요청 nodeexecution stack ev_loop()
  47. 47. 메모리에대한두번째요청 socket_readable(2) nodeexecution stack ev_loop()
  48. 48. 메모리에대한두번째요청 http_parse(2) socket_readable(2) nodeexecution stack ev_loop()
  49. 49. 메모리에대한두번째요청 http_respond(2) http_parse(2) socket_readable(2) nodeexecution stack ev_loop()
  50. 50. 메모리에대한두번째요청 http_parse(2) socket_readable(2) nodeexecution stack ev_loop()
  51. 51. 메모리에대한두번째요청 socket_readable(2) nodeexecution stack ev_loop()
  52. 52. 메모리에대한두번째요청 nodeexecution stack ev_loop()
  53. 53. index.html페이지요청 nodeexecution stack ev_loop()
  54. 54. index.html페이지요청 file_loaded() nodeexecution stack ev_loop()
  55. 55. index.html페이지요청 http_respond(1) file_loaded() nodeexecution stack ev_loop()
  56. 56. index.html페이지요청 file_loaded() nodeexecution stack ev_loop()
  57. 57. index.html페이지요청 nodeexecution stack ev_loop()
  58. 58. CommonJS
  59. 59. require(모듈명)
  60. 60. //app.jsvarapp=module.exports={};//another.jsvaranother=require(./app)
  61. 61. Questions...?Blog:http://blog.outsider.ne.krTwitter:@outsiderisemail:outsideris@gmail.com
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×