SlideShare uma empresa Scribd logo
1 de 35
고성능 / 고효율 어플리케이션을 위한 비동기
아키텍쳐
한화 S&C IT 선진화부문 기술혁신팀 유광종
HONE DevDay 2013
2013. 11. 21
Node.js & Vert.x
(Asynchronous architecture for High performance applications)
The Evolution of the Web ( 웹의 진
화 )
The problems currently facing ( 직면한 문
제 )
Asynchronous, non-blocking I/O, event-drivenTitle
Introduce Node.js & Vert.x
How to use it ( 적용점 )
Addressing the problem ( 해결책 )
Title
Title
Title
Title
Title
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
HONE DevDay 2013The Evolution of the Web
Real time
Applicatio
ns
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
HONE DevDay 2013Real time applications
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
HONE DevDay 2013Why? What’s the problem?
인터넷을 통한 트래픽의 폭발적 증가
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
Huge number of clients
UNIX 계열의 서버에 아주 많은 수의 클라이언트 (10K) 가 동시에 접속하
여 소켓을 열게 된다면 OS 에서 제공하는 I/O 처리 방식의 문제 때문
에 프로세스가 제대로 처리하지 못한다는 개념
UNIX 계열의 서버에 아주 많은 수의 클라이언트 (10K) 가 동시에 접속하
여 소켓을 열게 된다면 OS 에서 제공하는 I/O 처리 방식의 문제 때문
에 프로세스가 제대로 처리하지 못한다는 개념
C10K Problem
http://en.wikipedia.org/wiki/C10k_problem
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
HONE DevDay 2013Server is Down
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
Hardware limitations
How do you handle 10,000+
concurrent connections?
Without grinding to a halt?
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
HONE DevDay 2013Solution is the Money!?
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
The Power of Software engineer!
http://www.careercast.com/jobs-rated/best-veterans-jobs-201
I don’t need to add server.
Just I believe myself and I need my friend Google.
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
HONE DevDay 2013Keyword of Solutions
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
Addressing to Problem
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
Traditional I/O model - Multi threaded HONE DevDay 2013
TCP/IP connection Thread
1 1
• Multi threaded
• Blocking I/O (Synchronous I/O)
application kernel
read()
no datagram
ready
system
call
datagram ready
copy datagram
copy complete
wait for data
copy data from
kernel to userdeliver
signal
signal handler
process datagram
process waiting
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
HONE DevDay 2013Established Solutions
They implemented
Asynchronous architecture~!
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
HONE DevDay 2013Multi thread vs Asynchronous Benchmark(1)
Saving in I/O cost
똑같은 동시접속에 초당 3 배의 요청처리똑같은 동시접속에 초당 3 배의 요청처리
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
HONE DevDay 2013Multi thread vs Asynchronous Benchmark(2)
Saving in Memory
똑같은 동시접속에 메모리 사용량이 13 분의 1똑같은 동시접속에 메모리 사용량이 13 분의 1
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
HONE DevDay 2013From Native threads To Event driven
Native threads
Event driven
http://www.yesodweb.com/blog/2012/11/warp-posa
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
HONE DevDay 2013Worker – Asynchronous multi core
N event-driven processes to utilize N cores
http://www.yesodweb.com/blog/2012/11/warp-posa
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
HONE DevDay 2013Event Loop(Reactor pattern)
Event-Loop
(single threaded)
Callback
function Resource
Event Queue
Clients
Request
Response
Input
Output
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
Asynchronous I/O Model HONE DevDay 2013
application kernel
asynchronous
read()
no datagram ready
system
call
return
datagram ready
copy datagram
copy complete
wait for data
copy data from
kernel to user
deliver
signal
specified in async
read()
signal handler
process datagram
process continues executing
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
HONE DevDay 2013Blocking I/O
blocking Code
• I/O 를 요청하고 결과를 받을 때까지 thread 는 아무 일도 안하는 상태로
대기하고 응답이 돌아온 후 다음 줄의 코드가 실행됨 .
• I/O 를 동기 방식으로 사용하고 I/O 의 수행이 완료될 때까지 thread 가
blocking 됨
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
HONE DevDay 2013non blocking I/O
non-blocking Code
• I/O 를 요청 후 응답을 기다리지 않고 다음 코드를 실행
• DB 요청과 File 요청이 병렬로 처리
• 응답이 먼저 돌아오는 순서에 따라서 callback function 이 실행
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
HONE DevDay 2013Node.js & Vert.x
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
HONE DevDay 2013Introduce Node.js
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
HONE DevDay 2013Node.js Architecture & Key features
Node standard library
Node bindings
V8 engine
Thread pool
(libeio)
Event loop
(libev)
JavaScript
C
Architecture
Single Thread
V8 JavaScript Engine (Monoglot)
Event loop
Asynchronous
NPM(Node Packaged Modules)
Key features
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
HONE DevDay 2013Introduce Vert.x
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
HONE DevDay 2013Vert.x Architecture & Key features
Architecture
Based on JVM
Polyglot
Powerful module system
Distributed Event Bus
Key features
Host
Verticle
Verticle
Verticle
Verticle
Vert.x Instance
JVM
Verticle
Verticle
Verticle
Verticle
Vert.x Instance
JVM
Event Bus
Java, JavaScript, Python, Ruby, Scala etc.
Thread pool management
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
HONE DevDay 2013Vert.x Thread Pool
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
Modules
Node.js ( https://npmjs.org ) Vert.x ( http://modulereg.vertx.io/ )
48,004 86
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
Node.js VS Vert.x (1)
Comparison of Performance When Only 200/OK Response Has Been Returned.
Requests/sec
http://www.cubrid.org/blog/dev-platform/inside-vertx-comparison-with-nodejs/
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
Node.js VS Vert.x (2)
Comparison of Performance When a 72-byte Static HTML File is Returned.
Requests/sec
http://www.cubrid.org/blog/dev-platform/inside-vertx-comparison-with-nodejs/
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
HONE DevDay 2013When to use it
High performance
High I/O
TCP apps
Paas
Proxy servers
databases
Real-time
social
application
Web
development
ecosystem
RESTful
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
Enterprise apps that might need some specific librariesEnterprise apps that might need some specific libraries
HONE DevDay 2013When NOT to use it
Mission-critical (hard) real-time apps like heart
monitoring apps or those that are CPU-intensive.
Mission-critical (hard) real-time apps like heart
monitoring apps or those that are CPU-intensive.
For simple CRUD apps that don’t have any real-time or
high-performance needs
For simple CRUD apps that don’t have any real-time or
high-performance needs
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
HONE DevDay 2013Summary
Web 2.0 and the massive growth of mobile
clients changed the way we have to think about
application architectures.
Founding member of Java Champions - Eberhard Wolff
Pay attention to Asynchronous architecture!
Try to use Asynchronous framework or platform like Node.js and Vert.x etc.
Enjoy Asynchronous programming with your own languages!
Be a Happy Developer ; )
- -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights
Thank you :)
twitter.com/ryoostar
www.facebook.com/ryoostar
shinystar.kr/
ryoostar@gmail.com
@Yu Kwangjong

Mais conteúdo relacionado

Semelhante a Asynchronous architecture (Node.js & Vert.x)

Startup eng-camp 3
Startup eng-camp 3Startup eng-camp 3
Startup eng-camp 3Jollen Chen
 
Node summit workshop
Node summit workshopNode summit workshop
Node summit workshopShubhra Kar
 
Designing, Implementing, and Using Reactive APIs
Designing, Implementing, and Using Reactive APIsDesigning, Implementing, and Using Reactive APIs
Designing, Implementing, and Using Reactive APIsVMware Tanzu
 
JavaOne 2014: Java vs JavaScript
JavaOne 2014:   Java vs JavaScriptJavaOne 2014:   Java vs JavaScript
JavaOne 2014: Java vs JavaScriptChris Bailey
 
Importance of APIs in the Internet of Things
Importance of APIs in the Internet of ThingsImportance of APIs in the Internet of Things
Importance of APIs in the Internet of ThingsNordic APIs
 
Under the Hood of Reactive Data Access (2/2)
Under the Hood of Reactive Data Access (2/2)Under the Hood of Reactive Data Access (2/2)
Under the Hood of Reactive Data Access (2/2)VMware Tanzu
 
Simple Data Movement Patterns: Legacy Application to Cloud-Native Environment...
Simple Data Movement Patterns: Legacy Application to Cloud-Native Environment...Simple Data Movement Patterns: Legacy Application to Cloud-Native Environment...
Simple Data Movement Patterns: Legacy Application to Cloud-Native Environment...VMware Tanzu
 
Sviluppo IoT - Un approccio standard da Nerd ad Impresa, prove pratiche di Me...
Sviluppo IoT - Un approccio standard da Nerd ad Impresa, prove pratiche di Me...Sviluppo IoT - Un approccio standard da Nerd ad Impresa, prove pratiche di Me...
Sviluppo IoT - Un approccio standard da Nerd ad Impresa, prove pratiche di Me...Codemotion
 
Spring one2gx 2014 erdemgunay
Spring one2gx 2014 erdemgunaySpring one2gx 2014 erdemgunay
Spring one2gx 2014 erdemgunayErdem Gunay
 
206570 primavera and the fusion stack
206570 primavera and the fusion stack206570 primavera and the fusion stack
206570 primavera and the fusion stackp6academy
 
My Personal DevOps Journey: From Pipelines to Platforms
My Personal DevOps Journey: From Pipelines to PlatformsMy Personal DevOps Journey: From Pipelines to Platforms
My Personal DevOps Journey: From Pipelines to PlatformsVMware Tanzu
 
What We're Learning Adopting Spring Boot and PCF for Dell.com's eCommerce
What We're Learning Adopting Spring Boot and PCF for Dell.com's eCommerceWhat We're Learning Adopting Spring Boot and PCF for Dell.com's eCommerce
What We're Learning Adopting Spring Boot and PCF for Dell.com's eCommerceVMware Tanzu
 
Developer Secure Containers for the Cyberspace Battlefield
Developer Secure Containers for the Cyberspace BattlefieldDeveloper Secure Containers for the Cyberspace Battlefield
Developer Secure Containers for the Cyberspace BattlefieldVMware Tanzu
 
Shebaz resume new_dba
Shebaz resume new_dbaShebaz resume new_dba
Shebaz resume new_dbaShebaz Malek
 
Better Code: Concurrency
Better Code: ConcurrencyBetter Code: Concurrency
Better Code: ConcurrencyPlatonov Sergey
 
Desktop, Embedded and Mobile Apps with PrismTech Vortex Cafe
Desktop, Embedded and Mobile Apps with PrismTech Vortex CafeDesktop, Embedded and Mobile Apps with PrismTech Vortex Cafe
Desktop, Embedded and Mobile Apps with PrismTech Vortex CafeADLINK Technology IoT
 
Desktop, Embedded and Mobile Apps with Vortex Café
Desktop, Embedded and Mobile Apps with Vortex CaféDesktop, Embedded and Mobile Apps with Vortex Café
Desktop, Embedded and Mobile Apps with Vortex CaféAngelo Corsaro
 
YugaByte DB—A Planet-Scale Database for Low Latency Transactional Apps
YugaByte DB—A Planet-Scale Database for Low Latency Transactional AppsYugaByte DB—A Planet-Scale Database for Low Latency Transactional Apps
YugaByte DB—A Planet-Scale Database for Low Latency Transactional AppsVMware Tanzu
 

Semelhante a Asynchronous architecture (Node.js & Vert.x) (20)

Ramji
RamjiRamji
Ramji
 
Startup eng-camp 3
Startup eng-camp 3Startup eng-camp 3
Startup eng-camp 3
 
Node summit workshop
Node summit workshopNode summit workshop
Node summit workshop
 
Designing, Implementing, and Using Reactive APIs
Designing, Implementing, and Using Reactive APIsDesigning, Implementing, and Using Reactive APIs
Designing, Implementing, and Using Reactive APIs
 
JavaOne 2014: Java vs JavaScript
JavaOne 2014:   Java vs JavaScriptJavaOne 2014:   Java vs JavaScript
JavaOne 2014: Java vs JavaScript
 
Importance of APIs in the Internet of Things
Importance of APIs in the Internet of ThingsImportance of APIs in the Internet of Things
Importance of APIs in the Internet of Things
 
Under the Hood of Reactive Data Access (2/2)
Under the Hood of Reactive Data Access (2/2)Under the Hood of Reactive Data Access (2/2)
Under the Hood of Reactive Data Access (2/2)
 
Simple Data Movement Patterns: Legacy Application to Cloud-Native Environment...
Simple Data Movement Patterns: Legacy Application to Cloud-Native Environment...Simple Data Movement Patterns: Legacy Application to Cloud-Native Environment...
Simple Data Movement Patterns: Legacy Application to Cloud-Native Environment...
 
Sviluppo IoT - Un approccio standard da Nerd ad Impresa, prove pratiche di Me...
Sviluppo IoT - Un approccio standard da Nerd ad Impresa, prove pratiche di Me...Sviluppo IoT - Un approccio standard da Nerd ad Impresa, prove pratiche di Me...
Sviluppo IoT - Un approccio standard da Nerd ad Impresa, prove pratiche di Me...
 
Spring one2gx 2014 erdemgunay
Spring one2gx 2014 erdemgunaySpring one2gx 2014 erdemgunay
Spring one2gx 2014 erdemgunay
 
206570 primavera and the fusion stack
206570 primavera and the fusion stack206570 primavera and the fusion stack
206570 primavera and the fusion stack
 
My Personal DevOps Journey: From Pipelines to Platforms
My Personal DevOps Journey: From Pipelines to PlatformsMy Personal DevOps Journey: From Pipelines to Platforms
My Personal DevOps Journey: From Pipelines to Platforms
 
What We're Learning Adopting Spring Boot and PCF for Dell.com's eCommerce
What We're Learning Adopting Spring Boot and PCF for Dell.com's eCommerceWhat We're Learning Adopting Spring Boot and PCF for Dell.com's eCommerce
What We're Learning Adopting Spring Boot and PCF for Dell.com's eCommerce
 
Developer Secure Containers for the Cyberspace Battlefield
Developer Secure Containers for the Cyberspace BattlefieldDeveloper Secure Containers for the Cyberspace Battlefield
Developer Secure Containers for the Cyberspace Battlefield
 
Node.js Tools Ecosystem
Node.js Tools EcosystemNode.js Tools Ecosystem
Node.js Tools Ecosystem
 
Shebaz resume new_dba
Shebaz resume new_dbaShebaz resume new_dba
Shebaz resume new_dba
 
Better Code: Concurrency
Better Code: ConcurrencyBetter Code: Concurrency
Better Code: Concurrency
 
Desktop, Embedded and Mobile Apps with PrismTech Vortex Cafe
Desktop, Embedded and Mobile Apps with PrismTech Vortex CafeDesktop, Embedded and Mobile Apps with PrismTech Vortex Cafe
Desktop, Embedded and Mobile Apps with PrismTech Vortex Cafe
 
Desktop, Embedded and Mobile Apps with Vortex Café
Desktop, Embedded and Mobile Apps with Vortex CaféDesktop, Embedded and Mobile Apps with Vortex Café
Desktop, Embedded and Mobile Apps with Vortex Café
 
YugaByte DB—A Planet-Scale Database for Low Latency Transactional Apps
YugaByte DB—A Planet-Scale Database for Low Latency Transactional AppsYugaByte DB—A Planet-Scale Database for Low Latency Transactional Apps
YugaByte DB—A Planet-Scale Database for Low Latency Transactional Apps
 

Último

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...apidays
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 

Último (20)

Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

Asynchronous architecture (Node.js & Vert.x)

  • 1. 고성능 / 고효율 어플리케이션을 위한 비동기 아키텍쳐 한화 S&C IT 선진화부문 기술혁신팀 유광종 HONE DevDay 2013 2013. 11. 21 Node.js & Vert.x (Asynchronous architecture for High performance applications)
  • 2. The Evolution of the Web ( 웹의 진 화 ) The problems currently facing ( 직면한 문 제 ) Asynchronous, non-blocking I/O, event-drivenTitle Introduce Node.js & Vert.x How to use it ( 적용점 ) Addressing the problem ( 해결책 ) Title Title Title Title Title
  • 3. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights HONE DevDay 2013The Evolution of the Web Real time Applicatio ns
  • 4. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights HONE DevDay 2013Real time applications
  • 5. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights HONE DevDay 2013Why? What’s the problem? 인터넷을 통한 트래픽의 폭발적 증가
  • 6. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights Huge number of clients UNIX 계열의 서버에 아주 많은 수의 클라이언트 (10K) 가 동시에 접속하 여 소켓을 열게 된다면 OS 에서 제공하는 I/O 처리 방식의 문제 때문 에 프로세스가 제대로 처리하지 못한다는 개념 UNIX 계열의 서버에 아주 많은 수의 클라이언트 (10K) 가 동시에 접속하 여 소켓을 열게 된다면 OS 에서 제공하는 I/O 처리 방식의 문제 때문 에 프로세스가 제대로 처리하지 못한다는 개념 C10K Problem http://en.wikipedia.org/wiki/C10k_problem
  • 7. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights HONE DevDay 2013Server is Down
  • 8. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights Hardware limitations How do you handle 10,000+ concurrent connections? Without grinding to a halt?
  • 9. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights HONE DevDay 2013Solution is the Money!?
  • 10. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights The Power of Software engineer! http://www.careercast.com/jobs-rated/best-veterans-jobs-201 I don’t need to add server. Just I believe myself and I need my friend Google.
  • 11. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights HONE DevDay 2013Keyword of Solutions
  • 12. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights Addressing to Problem
  • 13. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights Traditional I/O model - Multi threaded HONE DevDay 2013 TCP/IP connection Thread 1 1 • Multi threaded • Blocking I/O (Synchronous I/O) application kernel read() no datagram ready system call datagram ready copy datagram copy complete wait for data copy data from kernel to userdeliver signal signal handler process datagram process waiting
  • 14. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights HONE DevDay 2013Established Solutions They implemented Asynchronous architecture~!
  • 15. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights HONE DevDay 2013Multi thread vs Asynchronous Benchmark(1) Saving in I/O cost 똑같은 동시접속에 초당 3 배의 요청처리똑같은 동시접속에 초당 3 배의 요청처리
  • 16. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights HONE DevDay 2013Multi thread vs Asynchronous Benchmark(2) Saving in Memory 똑같은 동시접속에 메모리 사용량이 13 분의 1똑같은 동시접속에 메모리 사용량이 13 분의 1
  • 17. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights HONE DevDay 2013From Native threads To Event driven Native threads Event driven http://www.yesodweb.com/blog/2012/11/warp-posa
  • 18. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights HONE DevDay 2013Worker – Asynchronous multi core N event-driven processes to utilize N cores http://www.yesodweb.com/blog/2012/11/warp-posa
  • 19. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights HONE DevDay 2013Event Loop(Reactor pattern) Event-Loop (single threaded) Callback function Resource Event Queue Clients Request Response Input Output
  • 20. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights Asynchronous I/O Model HONE DevDay 2013 application kernel asynchronous read() no datagram ready system call return datagram ready copy datagram copy complete wait for data copy data from kernel to user deliver signal specified in async read() signal handler process datagram process continues executing
  • 21. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights HONE DevDay 2013Blocking I/O blocking Code • I/O 를 요청하고 결과를 받을 때까지 thread 는 아무 일도 안하는 상태로 대기하고 응답이 돌아온 후 다음 줄의 코드가 실행됨 . • I/O 를 동기 방식으로 사용하고 I/O 의 수행이 완료될 때까지 thread 가 blocking 됨
  • 22. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights HONE DevDay 2013non blocking I/O non-blocking Code • I/O 를 요청 후 응답을 기다리지 않고 다음 코드를 실행 • DB 요청과 File 요청이 병렬로 처리 • 응답이 먼저 돌아오는 순서에 따라서 callback function 이 실행
  • 23. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights HONE DevDay 2013Node.js & Vert.x
  • 24. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights HONE DevDay 2013Introduce Node.js
  • 25. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights HONE DevDay 2013Node.js Architecture & Key features Node standard library Node bindings V8 engine Thread pool (libeio) Event loop (libev) JavaScript C Architecture Single Thread V8 JavaScript Engine (Monoglot) Event loop Asynchronous NPM(Node Packaged Modules) Key features
  • 26. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights HONE DevDay 2013Introduce Vert.x
  • 27. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights HONE DevDay 2013Vert.x Architecture & Key features Architecture Based on JVM Polyglot Powerful module system Distributed Event Bus Key features Host Verticle Verticle Verticle Verticle Vert.x Instance JVM Verticle Verticle Verticle Verticle Vert.x Instance JVM Event Bus Java, JavaScript, Python, Ruby, Scala etc. Thread pool management
  • 28. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights HONE DevDay 2013Vert.x Thread Pool
  • 29. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights Modules Node.js ( https://npmjs.org ) Vert.x ( http://modulereg.vertx.io/ ) 48,004 86
  • 30. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights Node.js VS Vert.x (1) Comparison of Performance When Only 200/OK Response Has Been Returned. Requests/sec http://www.cubrid.org/blog/dev-platform/inside-vertx-comparison-with-nodejs/
  • 31. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights Node.js VS Vert.x (2) Comparison of Performance When a 72-byte Static HTML File is Returned. Requests/sec http://www.cubrid.org/blog/dev-platform/inside-vertx-comparison-with-nodejs/
  • 32. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights HONE DevDay 2013When to use it High performance High I/O TCP apps Paas Proxy servers databases Real-time social application Web development ecosystem RESTful
  • 33. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights Enterprise apps that might need some specific librariesEnterprise apps that might need some specific libraries HONE DevDay 2013When NOT to use it Mission-critical (hard) real-time apps like heart monitoring apps or those that are CPU-intensive. Mission-critical (hard) real-time apps like heart monitoring apps or those that are CPU-intensive. For simple CRUD apps that don’t have any real-time or high-performance needs For simple CRUD apps that don’t have any real-time or high-performance needs
  • 34. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights HONE DevDay 2013Summary Web 2.0 and the massive growth of mobile clients changed the way we have to think about application architectures. Founding member of Java Champions - Eberhard Wolff Pay attention to Asynchronous architecture! Try to use Asynchronous framework or platform like Node.js and Vert.x etc. Enjoy Asynchronous programming with your own languages! Be a Happy Developer ; )
  • 35. - -Copyright ⓒ 2013 HANWHA S&C CO.LTD., All rights Thank you :) twitter.com/ryoostar www.facebook.com/ryoostar shinystar.kr/ ryoostar@gmail.com @Yu Kwangjong

Notas do Editor

  1. 초창기 웹은 단순 정보를 제공해주는 정적페이지로 구성이 되어 있었음. 이후에 사용자가 정보를 제공하고 전송할 수 있는 페이지로 변화하였고 그 이후엔 사용자의 요청에 다이나믹하게 반응을 가져오고 보여주는 ajax 방식의 웹이 만들어 졌음. 지금은 가장 보편화된 방식. 지금은 웹에서 사용자의 행동이 실시간으로 전송되고 응답되어지는 real time 방식으로 변해가고 있음.
  2. Facebook 이나 twitter를 안쓰시는분?
  3. 국내 그래프 : 2013년에 비해 2015년 무선 트래픽 2배증가 이 그래프를 꼭 보지 않아도 알 수 있겠지만 인터넷을 사용하는 디바이스가 PC에서 벗어나 스마트폰을 비롯한 모바일 디바이스로 옮겨 가면서 트래픽량이 급격히 증가함.
  4. PC만을 가지고 인터넷에 접속하던 시대를 넘어서 언제 어디서나( Anytime Anywhere) 스마트폰, 휴대용 태블릿을 비롯한 수많은 기기들을 통해서 사용자들이 인터넷에 접속하게됨. Real Time application으로 인해서 사용자의 needs가 높아지고 이에 따라서 트래픽이 증가함. 제한된 서버가 한계에 도달함.
  5. 이대로 방치해 두었다가는 서버가 취침모드에 들어간다던지 운명을 한다던지 엄청난 사태를 경험하게 되겠죠.
  6. 이런 Real-time application, Instant Messaging, Twitter(SNS), Voice and video 와 같은 huge transaction의 환경 속에서 어떻게 해결해 나가야 하는가? http://www.kegel.com/c10k.html#top http://en.wikipedia.org/wiki/C10k_problem
  7. 미국 취업 포탈 중 careercast.com 에서 The Best Jobs for Veterans in 2013 뉴스 포스팅 캡쳐.
  8. 이 모든 솔루션의 공통된 단어는 Fast, Scale, non blocking I/O, event-driven, asynchronous
  9. 지금까지 알아본 문제를 개발자가 소프트웨어로 해결할 수 있는 방법이 이제 부터 설명할 비동기식 아키텍쳐입니다. 비동기식 아키텍쳐는 비동기, 이벤트드리븐, non blocking I/O 이 세가지의 키워드로 설명할 수 있습니다. 이에 대해서 자세히 알아보도록 하겠습니다.
  10. 전통적인 프로그래밍 하나의 작업이 마무리되기 전까지는 다음 처리를 계속할 수 없음 I/O작업을 수행할 때 blocking 방식을 사용하는 프로그래밍 모델 한 명의 사용자를 다른 사용자로부터 고립시킴 컴퓨터 네트워크와 인터넷이 폭넓게 확산되면서 이와 같은 ‘One User, One Process’ 모델은 확장성을 제대로 충족하지 못함. 많은 프로세스를 관리하는 일은 운영체제에 큰 부담이 됨.(메모리 및 컨텍스트 전환 비용 측면) 작업의 성능은 일정 개수에 도달하면 느려지기 시작함.
  11. 이미 사용되고 있고 검증되고 있는 해결책들이 이와 같이 있다. 그렇다면 이들의 특징은 무엇인가? Established solutions - Nginx, Jetty Continuations(6버젼부터 Servlet3.0 구현하여 비동기API를 지원하고 있음) , Apach AWF = Infrastructure - EventMachine(Ruby), Tornado, Twisted(Python), Node.js(Javascript), Vert.x = Application Framworks EventMachine : fast, simple event-processing library for Ruby programs Tornado : Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed. By using non-blocking network I/O, Tornado can scale to tens of thousands of open connections, making it ideal for long polling, WebSockets, and other applications that require a long-lived connection to each user. Twisted : an event-driven networking engine written in Python and licensed under the open source
  12. Nginx uses evented, non-blocking architecture, where as Apache uses multi-threaded architecture
  13. 동기와 blocking I/O 모델을 지원하는 멀티쓰레드 서버들은 간단한 I/O실행 방식을 제공한다. 하지만 heavy load를 처리할때 멀티쓰레드 서버는 추가적으로 더 많은 쓰레드들을 사용하게 되는데 그 이유는 직접적으로 컨넥션과 쓰레드가 연결되어 있기 때문이다. 추가적인 쓰레드를 지원하는것은 쓰레드간의 컨텍스트 스위칭을 더 발생시켜 추가적인 메모리와 높은 CPU사용의 원인이 된다.
  14. N Core system인 경우 N개의 Event loop가 실행되도록 Clustering을 실행할 수 있다. 각각의 core의 프로세스를 worker라고 한다.
  15. 이 아키텍쳐는 앞단에서 이벤트루프(메인 쓰레드)를, 커널레벨에서 비동기I/O를 실행하는걸 이용한다. 쓰레드들과 연결들이 직접적으로 연관되지 않고, 이 모델은 오직 메인 이벤트 루프 쓰레드와 I/O를 실행할 극 소수의 쓰레드들을 필요로 한다. 그 이유는 극 소수의 쓰레드들과 그로인한 적은 컨텍스트 스위칭 때문인데 이것은 적은 메모리뿐만 아니라 적은 CPU를 사용한다.
  16. 1. Blocking Code I/O를 요청하고 결과를 받을 때까지 thread는 아무 일도 안하는 상태로 대기하고 응답이 돌아온 후 다음 줄의 코드가 실행됨. I/O를 동기 방식으로 사용하고 I/O의 수행이 완료될 때까지 thread가 blocking됨
  17. 2. non-blocking Code I/O를 요청 후 응답을 기다리지 않고 다음 코드를 실행하며 응답이 있을시 callback function을 실행. DB요청과 File요청이 병렬로 처리됨. 응답이 먼저 돌아오는 순서에 따라서 callback function이 실행됨.
  18. 이름 : Ryan Dahl 경력 : Joyent Software engineer 2009년 5월 첫 릴리즈. 2013년 11월 21일 현재 Stable Version 0.10.22, Preview Version 0.11.8, 참고로 Node.js는 짝수버젼이 안정화 버젼으로 릴리즈됨. MIT 라이센스
  19. - 웹서버를 거치지않고 Node.js에서 직접 데이터를 처리하므로 매우 가볍고, 처리 속도가 빠르다. - 메모리 소비량이 적어서 많은 양의 서비스 요청 처리에도 뛰어난 성능을 보여주는 차세대 웹 플랫폼. - Node.js는 다른 C나 C++, java(JSP), C#(.net)과 달리 웹에서 사용할 수 있는 언어이고 웹서버를 돌릴 수 있다. - 새로운 페이지 로딩 없이 실시간 소켓통신이 가능하다. (정적인 웹을 동적으로 만든다.) - 싱글스레드방식이며, 이벤트 (메세지) 기반으로 비동기식으로 처리한다 (기존 다른 언어들은 멀티스레드 방식 / 동기적 처리) Single Thread가 더 좋다! 원칙적으로 I/O 성능은 스레드의 수와 상관없이 동일하다. CPU내에 스레드가 몇 개있던, 근본적으로 타겟 장치로의 I/O 포트는 한 개뿐이다. 따라서 여럿이 싸우는 것보다 싱글 스레드의 처리가 더 나오는 것은 당연하다. 일반적으로 비동기 I/O 라고 하면 멀티스레드를 이야기하는 것이 아니다. CPU내의 스레드간의 이야기도 아니다. 이것은 CPU와 주변장치와의 관계를 말한다! CPU가 데이터를 주변장치에 전달하고, I/O 종료 될 때까지 대기하느냐 아님 주변장치에 시키고 CPU는 다른일을 하느냐의 관계이다. 비동기 I/O 처리는 실시간 서비스의 제공이 아니면 사실 별로 필요없다. 비동기 I/O API의 필요성은 싱글 스레드 프로그래밍을 더 편하게 해줄 것 같다고 한다?
  20. 이름 : Timfox 학력 : 학부 물리학 전공, 대학원 반도체 기술 과학 경력 : 첫 직장부터 프로그래머로 활동함. -T-Mobile 근무 시절에 7천만명 이상이 접속하는 모바일 인터넷 포탈을 운영할수 있는 플랫폼을 설계 -Springsource에서 RabbitMQ 팀에서 일하면서 만들고 vert.x 프로젝트를 리딩함. -현재 Redhat에서 Vert.x 프로젝트를 리드하고 잇음. 릴리즈 된지 2년정도 됨. 현재 2.0.2-final 버젼이 릴리즈 된 상태임. Apache License version 2.0
  21. -Polyglot : Vert.x는 Java로 만들어졌으나 사용하는데 Java를 필요로 하지 않는다. JVM기반의 언어인 Java, Groovy 뿐만아니라 Ruby, Python 심지어 JavaScript까지 사용이 가능하다. -모든 CPU Core를 사용할 수 있도록 multi thread 생성을 한다. -Vert.x는 one process DAEMON을 만드는 것만을 목적으로 하지 않고 Vert.x로 개발된 다양한 서버 프로그램들이 서로 커뮤케이션할 수 있게 한다. 이를 위해서 Vert.x는 Event Bus를 제공한다. 그로인해 Point to point, Pub/Sub 같은 MQ(Message Queue) 기능들을 사용할 수 있다. -Node.js는 자체적으로 multi thread, multi core를 지원하지 않는다. 하지만 cluster module과 같은 지원가능한 개발이 진행되고 있다. 하지만 vert.x는 multi-thread multi core를 지원한다. 각 Core당 Event-loop가 생성됨. -모든 IO처리를 Netty를 기반으로 한다. 하지만 Netty와 Vert.x가 같은 것은 아니다. Vert.x는 API와 기능을 제공하는 server framework이고 Netty에게서 독립적으로 동작하며 설계된 목적 자체가 다르다.
  22. -Acceptor: A thread to accept a socket. One thread is created for one port. -Event Loops: (same with Run Loop) equals the number of cores. When an event occurs, it executes a corresponding handler. When execution is performed, it repeats reading another event. -Background: Used when Event Loop executes a handler and an additional thread is required. Users can specify the number of threads in vertx.backgroundPoolSize, an environmental variable. The default is 20. Using too many threads causes an increase in context switching costs, so be cautious. http://www.cubrid.org/blog/dev-platform/understanding-vertx-architecture-part-2/
  23. Node.js 가 개발되어진 시간이 오래된 만큼 많은 module들이 만들어지고 있고 커뮤니티가 더 활성화 되어 있음. Vert.x는 공식적으로 등록되어진 module을 제외하고 github에 여러 개발자들의 module들이 올라오고 있음.
  24. 트위터, 채팅앱과 같은 리얼타임 소셜 어플리케이션 높은 퍼포먼스, 높은 입출력 처리 능력을 요구하는 TCP 어플리케이션. 백앤드 로깅, 처리 어플리케이션 어플리케이션 서버 앞단의 Rest-ful API기반의 웹서버 Build a (soft) real-time social app like Twitter or a chat app. Build high-performance, high I/O, TCP apps like proxy servers, PaaS, databases, etc. Build backend logging and processing apps. Add a RESTful API-based web server in front of an application server.
  25. 복잡한 CPU 연산을 필요로 하는 어플리케이션 리얼타임이나 높은 퍼포먼스를 필요로 하지 않는 간단한 CRUD 형식의 어플리케이션 ( nodejs의 이점이 드러나지 못함) 특정 라이브러리를 사용해야 하는 엔터프라이즈 어플리케이션 ( Java와 같은 언어처럼 다양한 라이브러리를 아직 제공하지 않고 있음)
  26. If you should to handle a large number of clients in a high performance Environment? Asynchronous architecture helps you. If you want to do agile development, 짧은 반복주기의 개발을 원하냐? 간단하지만 높은 퍼포먼스의 에코시스템을 원하나? 갑작스런 트래픽에 서버가 죽어? I/O퍼포먼스가 안나? Callback 함수 형식의 비동기식 개발은 더이상 자바스크립트 개발자의 전유물이 아니다.