SlideShare a Scribd company logo
1
DECOMPOSITION OF
THE MAIN THREAD IN
NODE.JS TO INCREASE
THROUGHPUT
HELLO!I am Nikolay Matvienko
JS Developer at Grid Dynamics
You can find me at twitter.com/matvi3nko
github.com/matvi3nko
2
3@matvi3nko
NODE.JS IN ENTERPRISE
● IS WIDELY USED
● HIGHLOAD ON BLACK FRIDAY
● COMPETITION IN THE BUSINESS
○ GROWTH OF PERFORMANCE
REQUIREMENTS
○ GROWTH OF FUNCTIONALITY/FEATURES
“WHAT IS FAST TODAY
WILL BE SLOW
TOMORROW AS DEMANDS
CAN ONLY GROW”
44
5@matvi3nko
THE PROBLEM
MAIN THREADNODE.JS
5
HEAVY LOAD OF
MUST-HAVE
PART
MONITORING
LOGGING
FRAMEWORKS ...
MONITORING
LOGGING
FRAMEWORKS ...
MONITORING
LOGGING
FRAMEWORKS ...
MONITORING
LOGGING
FRAMEWORKS ...
MONITORING
LOGGING
FRAMEWORKS ...
6
CODE
MONOLITH MICROSERVICES
@matvi3nko
CODE CODE
CODECODE
100K lines of code 100 lines of code each
MUST-HAVE PART
CODE
CODE
BLOCKED EVENT
LOOP 1. HTTP
2. HTTP
3. DB
4. NATIVE MODULE
...
CALLBACK QUEUE
HTTP response
DB response
MODULE response
HTTP response
EVENT LOOP
INCOMING
REQUESTS
USERS THAT ARE
WAITING FOR
RESPONSE
7@matvi3nko
QUEUE
INTHE
8@matvi3nko
LATENCY
THROUGHPUT
request/second
milliseconds
9
SCALING
APP
worker
1. MULTIPLE PROCESSES
- CLUSTER module
- PM2
2. MULTIPLE SERVERS
WEB SERVER
/ REVERSE PROXY
- PHUSION PASSENGER
- NGINX
APP
worker
APP
worker
APP
worker
CLUSTER
WEB SERVER / REVERSE PROXY
APP
worker
APP
worker
FREE
CORE
FREE
CORE
CLUSTER
SERVER
10@matvi3nko
LOAD BALANCING
CLUSTER
WEB SERVER / REVERSE PROXY
APP
worker
APP
worker
FREE
CORE
FREE
CORE
CLUSTER
1. 2.
PROCESS
MANAGER
CLUSTER
SERVER1
SERVERS1,2
11@matvi3nko
ms
RESPONSE TIME
CRITICAL
BASELINE
USER LEFT SITE
12@matvi3nko
MAIN THREAD
PROFILLER
GARBAGE COLLECTION
METRICS COLLECTION
FRAMEWORK
Server-Side RENDERING
DISPERSION
13
COMPUTATIONS
LOGGING
@matvi3nko
DE/SERIALIZATION
JS
LATENCY 14
@matvi3nko
EXECUTION
EACH REQUEST
USERS PAY FOR LOGGING, GC AND METRICS
COLLECTIONS … WITH THEIR TIME.
15
MAIN THREAD
PROFILLER
GARBAGE
COLLECTION
@matvi3nko
“THE WORLD
IS MINE”
© GARBAGE COLLECTOR
1959
16@matvi3nko
GARBAGE COLLECTION
STOP THE SERVER
STOP THE WORLD
MAIN THREAD
APP CODE EXECUTION
+ JS
execution
MAIN THREAD
OLD
SPACE
NEW
SPACE
MARK
EVACUATE
APP CODE EXECUTION
17@matvi3nko
LESS PERFORMANCE IMPACT
OLD
SPACE
INCREMENTAL COLLECTION
NEW
SPACE
MARK
EVACUATE
APP CODE EXECUTION
18
MAIN THREAD
@matvi3nko
MAIN THREAD
APP CODE EXECUTION
+ JS
execution
GC DECOMPOSITION
THREAD
THREAD
THREAD
1. PARALLEL
MARK-SWEEP
2. PARALLEL
SCAVENGER
3. PARALLEL
MARK-EVACUATE
X2 execution
-30% mark overhead
-70% evacuate overhead
ALGORITHMS of ORINOCO GC: New V8 threads:
MAIN THREAD
APP CODE EXECUTION
+ JS
execution
MAIN THREAD
APP CODE EXECUTION
+ JS
execution
MAIN THREAD
APP CODE EXECUTION
19@matvi3nko
“THE WORLD
IS MINE NOW”
© JS COMPUTING OPERATION IN NODE.JS
2009
… 50 years later
20@matvi3nko
PARALLELIZATION
21@matvi3nko
Node
APP
Service
Node
Child Process
Node
Master Process
Main
Thread
C++
Thread
Main
Thread
V8
instance
Main
Thread
JS
Worker
Thread
MACHINE
PROCESSNODEPROCESS
MACHINE
MULTY
IN NODE.JS
THREADING
22@matvi3nko
WEBWORKER THREADS / NAPA.JS / ALIOS
WORKER THREADS
23@matvi3nko
● RESOURCES ARE LIMITED
○ IoT, modules
● TASK IS DIFFICULT TO SEPARATE FROM THE
APPLICATION CONTEXT
● PARSING, HASHING, HTML MINIFICATION, ...
FRAMEWORK
DEMO APP
ARCHITECTURE
IO
TASK
APP
CONFIGU
RATION
LOGIC
CPU
TASK APM AGENT
LOGGER
RENDERING
INSTANCE
COUNT
CHOOSE
24@matvi3nko
MAIN THREAD
PROFILLER
CURRENT
THROUGHPUT: 190 REQ/S
25
COMPUTATIONS
@matvi3nko
DECOMPOSING
CPU-BOUND TASKS
MAIN THREAD
APP CODE EXECUTION
CPU-bound
processing
26@matvi3nko
CALLBACK QUEUE
LOGIC IN CB
REDIS response
REDIS response
HTTP response
EVENT LOOP
INCOMING
REQUESTS
APP
CHILD
PROCESS
CHILD
PROCESS
CHILD
PROCESS
PROCESS POOL
PROCESS
POOL
POOL of
workers
ACTIVE
workers
APP
W
W
W
IPC
IPC
WAITING
tasks
FO
RK
27@matvi3nko
MAIN
THREAD
WORKER THREAD
NEW WORKER THREAD
THREAD POOL
THREAD POOL
POOL of
workers
ACTIVE
workers
WAITING
tasks
Applicationprocess
28@matvi3nko
MESSAGECHANNEL
WEB
SERVER
APP
WEB
SERVER
APP
WEB
SERVER
APP
WEB
SERVER
APP
Node.js Cluster
THREAD
POOL
THREAD
POOL
THREAD
POOL
THREAD
POOL
CPU
TASKS
WORKER
CPU
TASKS
WORKER
CPU
TASKS
WORKER
CPU
TASKS
WORKER
CLUSTER
IN-MAIN THREAD
COMPUTING
PARALLEL
COMPUTING
29@matvi3nko
CPU TASKS PARALLELIZATION
RESULT
30
3XMORE REQ/S
WITH
PARALLEL JS
COMPUTATION
@matvi3nko
190
605
MAIN THREAD
PROFILLER
CURRENT
THROUGHPUT: 605 REQ/S
31
DE/SERIALIZATION
@matvi3nko
DE/SERIALIZATION
& PARSE
STRINGIFY
32@matvi3nko
JSON
JSON
33@matvi3nko
Protobuf
AvroThrift
… and others
WEB
CLIENTS
NODE.JS
JAVANODE.JS ?
IN NOT NATIVE ENV
34@matvi3nko
SERIALIZATION &
JSON
PARSE
Х6 FASTERPROTOBUF
*Average values in not JavaScript environment.
JSON IN
NATIVE ENV
35@matvi3nko
+ OPTIMIZED BY V8 TEAM
- DEPENDS ON THE TYPE OF DATA
NUMBERS
36@matvi3nko
SERIALIZATION
JSON
JSON WITH
SCHEMA
PARSE
Х2 FASTER
Х2 FASTER +30%
PROTOBUF
*Average values in JavaScript environment.
See libraries in resources.
IN NODE.JS
JSON
STRINGS
37@matvi3nko
SERIALIZATION
JSON WITH
SCHEMA
Х2
PARSE
X2.3
PROTOBUF
Х3 FASTER
Х2 FASTER
*Average values in JavaScript environment.
See libraries in resources.
IN NODE.JS
“THAT JSON
IS NOT
COMPLETELY
AWFUL”
Eddie Broc
38@matvi3nko
JSON.PARSE CHANGE
39
RESULT
+27%
MORE REQ/S
WITH
FAST-JSON-STRINGIFY
&
JITSON/
TURBO-JSON-PARSE
@matvi3nko
768
605
JSON.parse JSON with Schema
MAIN THREAD
PROFILLER
FRAMEWORK
40
CURRENT
THROUGHPUT: 768 REQ/S
@matvi3nko
FRAMEWORK
HAPI, EXPRESS, RESTIFY…
FRAMEWORK
Node.js HTTP SERVER
OVERHEAD
~ 1.5 – 2X SLOWLY
than http.createServer
https://github.com/fastify/fast-json-stringify
41@matvi3nko
FRAMEWORK
OPTIMIZATIONS
Node.js HTTP SERVER
1. Express
https://github.com/expressjs/express
ROUTER
JSON Stringify
X5 faster
https://github.com/delve
dor/router-benchmark
X2-3 faster
https://github.com/fastify/
fast-json-stringify
2. Fastify
https://github.com/fastify/fastify
42@matvi3nko
FRAMEWORK CHANGE
43
RESULT
+20%
MORE REQ/S
WITH FASTIFY
@matvi3nko
922
768
MAIN THREAD
PROFILLER
LOGGING
44
LOG
CURRENT
THROUGHPUT: 922 REQ/S
@matvi3nko
MAIN THREAD
APP CODE EXECUTION
WRITE
LOG
LOGGING
WRITE
LOG
FILES: sync on Windows and POSIX
TERMINALS::
async on Windows, sync on POSIX
PIPES, SOCKETS:
sync on Windows, async on POSIX
45@matvi3nko
process.stdout and .stderr
FORMAT MESSAGE
SERIALIZE MESSAGE
HANDLE TRANSPORT
LOGIC
MAIN THREAD
APP CODE EXECUTION
SEND
MSG
OFF-PROCESS LOGGER
TRANSPORT
1. Pino
2. Roarr
LOGGERS:
SEND
MSG
2nd Node.js app
LOGGER TRANSPORT
SEND
LOG
SEND
LOG
process.stdout
46@matvi3nko
WEB
SERVER
Elastic
search
LOGGER
WEB
SERVER
LOGGER
WEB
SERVER
LOGGER
WEB
SERVER
LOGGER
process.stdout
47
CLUSTER
@matvi3nko
OFF-PROCESS LOGGING
RESULT
48
+17%
MORE REQ/S
WITH
OFF-PROCESS
LOGGER
TRANSPORT
@matvi3nko
922
1078
MAIN THREAD
PROFILLER
APPLICATION PERFORMANCE
MONITORING
49
APM
CURRENT
THROUGHPUT: 1078 REQ/S
@matvi3nko
MAIN THREAD
APP CODE EXECUTION
APM
AGENT
APPLICATION PERFORMANCE
MONITORING
1. NewRelic
2. Dynatrace
3. OpenTracing
4. node-measured
APM vendors/agents:
METRICS COLLECTION
AGGREGATION
TRANSPORT
50@matvi3nko
WEB
SERVER
WORKER
WEB
SERVER
WORKER
WEB
SERVER
WORKER
WEB
SERVER
WORKER
Cluster/Load balancer
APM
Time series
DB
Analytics &
Monitoring
Dashboard
APM APM APM
SaaS
51
IN-PROCESS
APM
AGENT
THE APM AGENT PROBLEMS
ARE APPLICATION PROBLEMS
@matvi3nko
WEB
SERVER
APP
WEB
SERVER
APP
WEB
SERVER
APP
WEB
SERVER
APP
.send()
Message queue
APM
PROCESS
.on()
Message
Queue
Time series
DB
Analytics &
Monitoring
Dashboard
52
OFF-PROCESS APM AGENT
@matvi3nko
OFF-PROCESS MONITORING
RESULT
53
+25%
MORE REQ/S
WITH
OFF-PROCESS
METRIC AGENT
@matvi3nko
1078
1347
MAIN THREAD
PROFILLER
54
SSR
CURRENT
THROUGHPUT: 1347 REQ/S
@matvi3nko
SERVER SIDE RENDERING
SERVER-SIDE RENDERING
CALLBACK QUEUE
RENDERING
REDIS response
REDIS response
HTTP response
EVENT LOOP
MAIN THREAD
APP CODE EXECUTION
RENDERING
55
INCOMING
REQUESTS
@matvi3nko
56@matvi3nko
free
RENDERING ON NODE.JS
STREAMING SERVER-SIDE
RENDERING
MAIN THREAD
APP CODE EXECUTION
R E N D E R ...
Network
HTML chunks
Asynchronous execution in
STREAM with REACT 16
renderStream.pipe(res, { end: 'false' });
renderStream.on('end', () =>
{response.end('</div></body></html>'); });
57@matvi3nko
MICRO FRONTENDS
MAIN THREAD
OF Monolith WEB UI app
1 2 3
Renders full page to HTML string
Backend/Aggregator
Mirco
service
Monolith WEB UI
Mirco
service
Mirco
service
WEB
UI 1
WEB
UI 2
WEB
UI 3
Renders full page
58@matvi3nko
RENDERING
WORKER
Node.js
PARALLEL RENDERING
WITH WORKERS
MAIN APP
/ MICROSERVICE
Node.js
Combines streams of
Different page parts
59@matvi3nko
RENDERING
WORKER
Node.js
renderToNodeStream()
renderToStaticNodeStream()
DYNAMIC
CONTENT
STATIC
CONTENT
2X
THROUGHPUT
* Average value.
REACT 16
60@matvi3nko
FROM
190 REQ/S
TO 1350 61@matvi3nko
DECOMPOSED MAIN THREAD
MAIN THREAD
APPLICATION
1
LOG
2
APM
3
CPU
V8 WORKER THREAD
MAIN THREAD of LOGGER process
V8
THREADPOOL
LIBUV
THREADPOOL
MAIN THREAD of APM process
MAIN THREAD of CPU Tasks WORKER
4
GC
5
IO
Use for creation of
New Node.js modules
62@matvi3nko
63
ORDER
64@matvi3nko
CPU BOUND TASKS
RENDERING
SERIALIZATION
….
FROM LONGEST OPERATION
FINALLY
10XREQ/S
THROUGHPUT 65@matvi3nko
REFERENCES
66
https://github.com/matvi3nko/Decomp
osition-of-the-Main-Thread-in-Node.js
THANKS
! 67
Nikolay Matvienko
matvi3nko@gmail.com
Twitter.com/matvi3nko
github.com/matvi3nko
REFERENCES
Long-running Background Process in Node.js
https://vimeo.com/229536743
Background tasks in Node.js
https://www.youtube.com/watch?v=NNTsHzER31I&t=2207s
https://blog.evantahler.com/background-tasks-in-node-js-a-survey-with-redis-971d3575d9d2
Streaming Server-Side Rendering and Caching
https://zeit.co/blog/streaming-server-rendering-at-spectrum
https://github.com/zalando/tailor
Microservices on UI
https://www.youtube.com/watch?v=3l9IP9j5n1o
https://www.youtube.com/watch?v=E6_UyQPmiSg&t=2997s
68
REFERENCES
New Garbage Collection with threads
https://v8project.blogspot.ru/2017/11/
https://v8project.blogspot.com/2016/04/jank-busters-part-two-orinoco.html
Pino
https://github.com/pinojs/pino
New Worker API in Node.js discussion
https://github.com/nodejs/worker/issues/4
IPC Communication Performance
https://60devs.com/performance-of-inter-process-communications-in-nodejs.html
List of Parallel JS Projects
https://github.com/SyntheticSemantics/List-of-Parallel-JS-Projects
69
WEBWORKER THREADS
WORKER
THREAD 1
V8 INSTANCE
WebWorker Threads
https://www.npmjs.com/package/webworker-threads
WORKER
THREAD
V8 INSTANCE
WORKER
THREAD
V8 INSTANCE
WORKER
THREAD 2
V8 INSTANCE
EVENT LOOP
MODULES
LIBUV THREAD
POOL for IO
Node.js
70@matvi3nko
MICROSOFT NAPA.JS
EVENT LOOP
MODULES
LIBUV THREAD
POOL for IO
Node.js
ZONE 1
JS WORKERS
THREAD POOL
WORKER 1
V8 Instance
WORKER 2
V8 Instance
WORKER 3
V8 Instance
ZONE 2
JS WORKERS
THREAD POOL
WORKER 1
V8 Instance
WORKER 2
V8 Instance
WORKER 3
V8 Instance
Napa.js
https://github.com/Microsoft/napajs
MEMORY
USAGE
6.7 MB
vs 8 MB
STARTUP
TIME
50 ms
vs 70 ms
MESSAGE
PASSING
2x vs IPC
71@matvi3nko
ALIBABA ALIOS
EVENT LOOP
MODULES
LIBUV THREAD
POOL for IO
Node.js
THREAD 1
NODE.JS
INSTANCE
EVENT LOOP
V8 INSTANCE
MODULES
ALiOS-node.js
https://github.com/alibaba/AliOS-nodejs
THREAD 2
NODE.JS
INSTANCE
EVENT LOOP
V8 INSTANCE
MODULES
MEMORY
USAGE
2.5 MB
vs 8 MB
STARTUP
TIME
13 ms
vs 70 ms
SHARED
GLOBAL
MEMORY
72@matvi3nko

More Related Content

Similar to Nodeconf AR 18 Decomposition of the Main thread in Node.js to increase throughput

Oracle Code Javaday Sao Paulo Monolith_to Microservices
Oracle Code Javaday Sao Paulo Monolith_to MicroservicesOracle Code Javaday Sao Paulo Monolith_to Microservices
Oracle Code Javaday Sao Paulo Monolith_to Microservices
Alberto Salazar
 
DevOps: Find Solutions, Not More Defects
DevOps: Find Solutions, Not More DefectsDevOps: Find Solutions, Not More Defects
DevOps: Find Solutions, Not More Defects
TechWell
 
The Performance Engineer's Guide to Java (HotSpot) Virtual Machine
The Performance Engineer's Guide to Java (HotSpot) Virtual MachineThe Performance Engineer's Guide to Java (HotSpot) Virtual Machine
The Performance Engineer's Guide to Java (HotSpot) Virtual Machine
Monica Beckwith
 
Oracle Code One San Francisco - Monolith to microservices
Oracle Code One San Francisco - Monolith to microservicesOracle Code One San Francisco - Monolith to microservices
Oracle Code One San Francisco - Monolith to microservices
Alberto Salazar
 
Web Leaps Forward
Web Leaps ForwardWeb Leaps Forward
Web Leaps Forward
Moh Haghighat
 
クラウドネイティブ時代の分散トレーシング - Distributed Tracing in a Cloud Native Age
クラウドネイティブ時代の分散トレーシング - Distributed Tracing in a Cloud Native Ageクラウドネイティブ時代の分散トレーシング - Distributed Tracing in a Cloud Native Age
クラウドネイティブ時代の分散トレーシング - Distributed Tracing in a Cloud Native Age
Yoichi Kawasaki
 
Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...
Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...
Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...
Alberto Salazar
 
2018 MONOLITICH TO MICROSERVICES - Conferencia Javeros colombia
2018 MONOLITICH TO MICROSERVICES  - Conferencia Javeros colombia 2018 MONOLITICH TO MICROSERVICES  - Conferencia Javeros colombia
2018 MONOLITICH TO MICROSERVICES - Conferencia Javeros colombia
Alberto Salazar
 
Introduction to QtWebKit
Introduction to QtWebKitIntroduction to QtWebKit
Introduction to QtWebKit
Ariya Hidayat
 
Testing with Codeception
Testing with CodeceptionTesting with Codeception
Testing with Codeception
Jeremy Coates
 
Oracle Developer Tour Latam Nowadays Architecture Trends, from Monolith to Mi...
Oracle Developer Tour Latam Nowadays Architecture Trends, from Monolith to Mi...Oracle Developer Tour Latam Nowadays Architecture Trends, from Monolith to Mi...
Oracle Developer Tour Latam Nowadays Architecture Trends, from Monolith to Mi...
Alberto Salazar
 
Cassandra @ Yahoo Japan | Cassandra Summit 2016
Cassandra @ Yahoo Japan | Cassandra Summit 2016Cassandra @ Yahoo Japan | Cassandra Summit 2016
Cassandra @ Yahoo Japan | Cassandra Summit 2016
Yahoo!デベロッパーネットワーク
 
Stripes RJUG March 2012
Stripes RJUG March 2012Stripes RJUG March 2012
Stripes RJUG March 2012
timstone
 
Analyzing the Performance of Mobile Web
Analyzing the Performance of Mobile WebAnalyzing the Performance of Mobile Web
Analyzing the Performance of Mobile Web
Ariya Hidayat
 
Single Page Applications – Know The Ecosystem system
Single Page Applications – Know The Ecosystem systemSingle Page Applications – Know The Ecosystem system
Single Page Applications – Know The Ecosystem system
Synerzip
 
Voxxed days cluj-napoca Nowadays architecture trends alberto_salazarv2
Voxxed days cluj-napoca Nowadays architecture trends alberto_salazarv2Voxxed days cluj-napoca Nowadays architecture trends alberto_salazarv2
Voxxed days cluj-napoca Nowadays architecture trends alberto_salazarv2
Alberto Salazar
 
Oracle Code Javaday Sao Paulo Nowadays Architecture Trends, from Monolith to ...
Oracle Code Javaday Sao Paulo Nowadays Architecture Trends, from Monolith to ...Oracle Code Javaday Sao Paulo Nowadays Architecture Trends, from Monolith to ...
Oracle Code Javaday Sao Paulo Nowadays Architecture Trends, from Monolith to ...
Alberto Salazar
 
Code on the Beach 2019 - Let's Take a Tour of .Net Core: CLI
Code on the Beach 2019 - Let's Take a Tour of .Net Core: CLICode on the Beach 2019 - Let's Take a Tour of .Net Core: CLI
Code on the Beach 2019 - Let's Take a Tour of .Net Core: CLI
Brian McKeiver
 
Serverless orchestration and automation with Cloud Workflows
Serverless orchestration and automation with Cloud WorkflowsServerless orchestration and automation with Cloud Workflows
Serverless orchestration and automation with Cloud Workflows
Márton Kodok
 
Cloud native java are we there yet go tech world 2019
Cloud native java   are we there yet  go tech world 2019Cloud native java   are we there yet  go tech world 2019
Cloud native java are we there yet go tech world 2019
Peter Pilgrim
 

Similar to Nodeconf AR 18 Decomposition of the Main thread in Node.js to increase throughput (20)

Oracle Code Javaday Sao Paulo Monolith_to Microservices
Oracle Code Javaday Sao Paulo Monolith_to MicroservicesOracle Code Javaday Sao Paulo Monolith_to Microservices
Oracle Code Javaday Sao Paulo Monolith_to Microservices
 
DevOps: Find Solutions, Not More Defects
DevOps: Find Solutions, Not More DefectsDevOps: Find Solutions, Not More Defects
DevOps: Find Solutions, Not More Defects
 
The Performance Engineer's Guide to Java (HotSpot) Virtual Machine
The Performance Engineer's Guide to Java (HotSpot) Virtual MachineThe Performance Engineer's Guide to Java (HotSpot) Virtual Machine
The Performance Engineer's Guide to Java (HotSpot) Virtual Machine
 
Oracle Code One San Francisco - Monolith to microservices
Oracle Code One San Francisco - Monolith to microservicesOracle Code One San Francisco - Monolith to microservices
Oracle Code One San Francisco - Monolith to microservices
 
Web Leaps Forward
Web Leaps ForwardWeb Leaps Forward
Web Leaps Forward
 
クラウドネイティブ時代の分散トレーシング - Distributed Tracing in a Cloud Native Age
クラウドネイティブ時代の分散トレーシング - Distributed Tracing in a Cloud Native Ageクラウドネイティブ時代の分散トレーシング - Distributed Tracing in a Cloud Native Age
クラウドネイティブ時代の分散トレーシング - Distributed Tracing in a Cloud Native Age
 
Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...
Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...
Oracle code bogota-Handle the Complexity of Migrate to Microservices from Mon...
 
2018 MONOLITICH TO MICROSERVICES - Conferencia Javeros colombia
2018 MONOLITICH TO MICROSERVICES  - Conferencia Javeros colombia 2018 MONOLITICH TO MICROSERVICES  - Conferencia Javeros colombia
2018 MONOLITICH TO MICROSERVICES - Conferencia Javeros colombia
 
Introduction to QtWebKit
Introduction to QtWebKitIntroduction to QtWebKit
Introduction to QtWebKit
 
Testing with Codeception
Testing with CodeceptionTesting with Codeception
Testing with Codeception
 
Oracle Developer Tour Latam Nowadays Architecture Trends, from Monolith to Mi...
Oracle Developer Tour Latam Nowadays Architecture Trends, from Monolith to Mi...Oracle Developer Tour Latam Nowadays Architecture Trends, from Monolith to Mi...
Oracle Developer Tour Latam Nowadays Architecture Trends, from Monolith to Mi...
 
Cassandra @ Yahoo Japan | Cassandra Summit 2016
Cassandra @ Yahoo Japan | Cassandra Summit 2016Cassandra @ Yahoo Japan | Cassandra Summit 2016
Cassandra @ Yahoo Japan | Cassandra Summit 2016
 
Stripes RJUG March 2012
Stripes RJUG March 2012Stripes RJUG March 2012
Stripes RJUG March 2012
 
Analyzing the Performance of Mobile Web
Analyzing the Performance of Mobile WebAnalyzing the Performance of Mobile Web
Analyzing the Performance of Mobile Web
 
Single Page Applications – Know The Ecosystem system
Single Page Applications – Know The Ecosystem systemSingle Page Applications – Know The Ecosystem system
Single Page Applications – Know The Ecosystem system
 
Voxxed days cluj-napoca Nowadays architecture trends alberto_salazarv2
Voxxed days cluj-napoca Nowadays architecture trends alberto_salazarv2Voxxed days cluj-napoca Nowadays architecture trends alberto_salazarv2
Voxxed days cluj-napoca Nowadays architecture trends alberto_salazarv2
 
Oracle Code Javaday Sao Paulo Nowadays Architecture Trends, from Monolith to ...
Oracle Code Javaday Sao Paulo Nowadays Architecture Trends, from Monolith to ...Oracle Code Javaday Sao Paulo Nowadays Architecture Trends, from Monolith to ...
Oracle Code Javaday Sao Paulo Nowadays Architecture Trends, from Monolith to ...
 
Code on the Beach 2019 - Let's Take a Tour of .Net Core: CLI
Code on the Beach 2019 - Let's Take a Tour of .Net Core: CLICode on the Beach 2019 - Let's Take a Tour of .Net Core: CLI
Code on the Beach 2019 - Let's Take a Tour of .Net Core: CLI
 
Serverless orchestration and automation with Cloud Workflows
Serverless orchestration and automation with Cloud WorkflowsServerless orchestration and automation with Cloud Workflows
Serverless orchestration and automation with Cloud Workflows
 
Cloud native java are we there yet go tech world 2019
Cloud native java   are we there yet  go tech world 2019Cloud native java   are we there yet  go tech world 2019
Cloud native java are we there yet go tech world 2019
 

Recently uploaded

E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
Hornet Dynamics
 
What is Augmented Reality Image Tracking
What is Augmented Reality Image TrackingWhat is Augmented Reality Image Tracking
What is Augmented Reality Image Tracking
pavan998932
 
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise EditionWhy Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Envertis Software Solutions
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
Remote DBA Services
 
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
Peter Muessig
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
Green Software Development
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
ICS
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Crescat
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
Sven Peters
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptxLORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
lorraineandreiamcidl
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
Safe Software
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
Quickdice ERP
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
timtebeek1
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
Deuglo Infosystem Pvt Ltd
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata
 

Recently uploaded (20)

E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
 
What is Augmented Reality Image Tracking
What is Augmented Reality Image TrackingWhat is Augmented Reality Image Tracking
What is Augmented Reality Image Tracking
 
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise EditionWhy Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
Why Choose Odoo 17 Community & How it differs from Odoo 17 Enterprise Edition
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
 
Oracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptxOracle Database 19c New Features for DBAs and Developers.pptx
Oracle Database 19c New Features for DBAs and Developers.pptx
 
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s EcosystemUI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
UI5con 2024 - Keynote: Latest News about UI5 and it’s Ecosystem
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
 
Webinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for EmbeddedWebinar On-Demand: Using Flutter for Embedded
Webinar On-Demand: Using Flutter for Embedded
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
 
Microservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we workMicroservice Teams - How the cloud changes the way we work
Microservice Teams - How the cloud changes the way we work
 
Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptxLORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
LORRAINE ANDREI_LEQUIGAN_HOW TO USE WHATSAPP.pptx
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
Essentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FMEEssentials of Automations: The Art of Triggers and Actions in FME
Essentials of Automations: The Art of Triggers and Actions in FME
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian CompaniesE-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
E-Invoicing Implementation: A Step-by-Step Guide for Saudi Arabian Companies
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024OpenMetadata Community Meeting - 5th June 2024
OpenMetadata Community Meeting - 5th June 2024
 

Nodeconf AR 18 Decomposition of the Main thread in Node.js to increase throughput