Thank you for sharing this very informative presentation🙂 01:25 - Reactive programming in a nutshell 01:26 -- What is reactive programming? 03:34 -- Reactive programming concepts worth knowing 04:08 -- Functional programming 04:49 -- Asynchronous programming (work stealing) can make debugging difficult 05:33 -- What is non-blocking programming? 06:34 -- Multiple terminal routes: Blocking ( full data or no data ) vs. Non-Blocking ( full data, no data, or partial data ) 08:09 -- Overhead on low volume 09:55 - Reality Check Part 1: What are the priorities ( business and otherwise )? 12:47 - Performance Overview 12:48 -- Synchronous Processing: Blocking - Remote Call 14:14 -- Synchronous Processing: Blocking - Slow Client 14:59 -- Asynchronous Processing: Blocking - Remote Call 16:03 -- Asynchronous Processing: Blocking - Slow Client 16:27 -- Non-Blocking and Event Loops 18:22 - Reactive Programming Model 18:24 -- What is backpressure and why is it important? 19:29 - WebMVC ( blocking processing ) vs. WebFlux ( non-blocking processing ) 19:55 - Use cases that favor using the reactive programming model and WebFlux 21:42 - Performance 22:36 -- Load Scenario / Description of Test Environment 23:34 -- Scenario 1 - Hello World ( return single string ) 23:46 --- Comparison: WebFlux vs. WebMVC 26:02 --- Why is it important to minimize use of old generation heap memory? 28:02 --- Why does WebFlux tend to use less old generation heap memory compared to Web MVC? 30:36 --- Can non-reactive programming and reactive programming coexist on the same server? 31:59 -- Scenario 2 - Hello World with Delay ( slow client simulation ) 33:06 --- Comparison: WebMVC 200 vs. WebMVC 200 ( with response delay ) 34:28 --- The importance of using tail latency instead of average latency as a benchmark 34:41 --- Comparison: WebMVC 200 ( with response delay ) vs. WebMVC 600 ( with response delay ) 35:04 --- Comparison: WebFlux vs. WebFlux ( with response delay ) 35:37 -- Scenario 3 - Streaming ( 50 elements ) 36:21 --- Comparison: WebFlux vs. WebMVC 36:52 -- Scenario 4 - Streaming with Delay ( slow client simulation ) 37:22 --- Comparison: WebFlux vs. WebMVC 37:49 -- Scenario 5 - Remote Call 38:51 --- Comparison: WebFlux vs. WebMVC with RestTemplate 39:37 --- Comparison: WebFlux vs. WebMVC with WebClient 40:43 --- The benefit of replacing RestTemplate with WebClient in a WebMVC application 41:38 -- Scenario 6 - Remote Call with Delay ( slow remote service simulation ) 42:12 --- Comparison: WebFlux vs. WebMVC with RestTemplate 42:34 --- Comparison: WebFlux vs. WebMVC with WebClient 44:02 --- Does it still make sense to replace RestTemplate with WebClient in a WebMVC application if it only interacts with one remote service? 45:38 - Reactive Programming Benefit: Built-in Resilience 46:10 -- Prepare for the worst, don't page Ops 46:59 - Tales of Production... 47:21 -- How Netty tries to isolate possible errors like OutOfMemoryError to the offending request 50:26 - Reality Check Part 2: Let's review the priorities again ( business or otherwise ) 50:37 -- Reactive allows more productivity in writing state of the art, scalable microservices 51:21 -- Reactive applications are designed to be resilient under stress and lower maintenance 51:52 -- Reactive allows you to run more for less 53:21 - Question & Answer
If Gatling was the load testing tool used to measure throughput, does anyone know what tool was used to measure resource usage of the application itself ? In the presentation, they showed both throughput metrics and resource usage metrics. As far as I know, Gatling only provides throughput metrics. So I'm very curious what tool was used for the resource usage metrics.
thank you for the presentation. By the way, can I know what tools you have used to calculate the performance (comparison between WebMVC and Web Flux) ? Looks very useful
So for scenario 3, the "Response Time" is for receiving the whole stream? So a p99 of ~5s is for streaming 50 items (of 1k each) => 50k/5s = 10k/s. Comparet with about 5.5k/s on MVC. I also really like the stddev numbers for the WebFlux results. Much more consistent than MVC.
Thank you for sharing this very informative presentation🙂
01:25 - Reactive programming in a nutshell
01:26 -- What is reactive programming?
03:34 -- Reactive programming concepts worth knowing
04:08 -- Functional programming
04:49 -- Asynchronous programming (work stealing) can make debugging difficult
05:33 -- What is non-blocking programming?
06:34 -- Multiple terminal routes: Blocking ( full data or no data ) vs. Non-Blocking ( full data, no data, or partial data )
08:09 -- Overhead on low volume
09:55 - Reality Check Part 1: What are the priorities ( business and otherwise )?
12:47 - Performance Overview
12:48 -- Synchronous Processing: Blocking - Remote Call
14:14 -- Synchronous Processing: Blocking - Slow Client
14:59 -- Asynchronous Processing: Blocking - Remote Call
16:03 -- Asynchronous Processing: Blocking - Slow Client
16:27 -- Non-Blocking and Event Loops
18:22 - Reactive Programming Model
18:24 -- What is backpressure and why is it important?
19:29 - WebMVC ( blocking processing ) vs. WebFlux ( non-blocking processing )
19:55 - Use cases that favor using the reactive programming model and WebFlux
21:42 - Performance
22:36 -- Load Scenario / Description of Test Environment
23:34 -- Scenario 1 - Hello World ( return single string )
23:46 --- Comparison: WebFlux vs. WebMVC
26:02 --- Why is it important to minimize use of old generation heap memory?
28:02 --- Why does WebFlux tend to use less old generation heap memory compared to Web MVC?
30:36 --- Can non-reactive programming and reactive programming coexist on the same server?
31:59 -- Scenario 2 - Hello World with Delay ( slow client simulation )
33:06 --- Comparison: WebMVC 200 vs. WebMVC 200 ( with response delay )
34:28 --- The importance of using tail latency instead of average latency as a benchmark
34:41 --- Comparison: WebMVC 200 ( with response delay ) vs. WebMVC 600 ( with response delay )
35:04 --- Comparison: WebFlux vs. WebFlux ( with response delay )
35:37 -- Scenario 3 - Streaming ( 50 elements )
36:21 --- Comparison: WebFlux vs. WebMVC
36:52 -- Scenario 4 - Streaming with Delay ( slow client simulation )
37:22 --- Comparison: WebFlux vs. WebMVC
37:49 -- Scenario 5 - Remote Call
38:51 --- Comparison: WebFlux vs. WebMVC with RestTemplate
39:37 --- Comparison: WebFlux vs. WebMVC with WebClient
40:43 --- The benefit of replacing RestTemplate with WebClient in a WebMVC application
41:38 -- Scenario 6 - Remote Call with Delay ( slow remote service simulation )
42:12 --- Comparison: WebFlux vs. WebMVC with RestTemplate
42:34 --- Comparison: WebFlux vs. WebMVC with WebClient
44:02 --- Does it still make sense to replace RestTemplate with WebClient in a WebMVC application if it only interacts with one remote service?
45:38 - Reactive Programming Benefit: Built-in Resilience
46:10 -- Prepare for the worst, don't page Ops
46:59 - Tales of Production...
47:21 -- How Netty tries to isolate possible errors like OutOfMemoryError to the offending request
50:26 - Reality Check Part 2: Let's review the priorities again ( business or otherwise )
50:37 -- Reactive allows more productivity in writing state of the art, scalable microservices
51:21 -- Reactive applications are designed to be resilient under stress and lower maintenance
51:52 -- Reactive allows you to run more for less
53:21 - Question & Answer
If Gatling was the load testing tool used to measure throughput, does anyone know what tool was used to measure resource usage of the application itself ?
In the presentation, they showed both throughput metrics and resource usage metrics.
As far as I know, Gatling only provides throughput metrics.
So I'm very curious what tool was used for the resource usage metrics.
Thank you for presentation. Slideshare link not valid, could you please re-upload it?
Thank for the presentation.
thank you for the presentation. By the way, can I know what tools you have used to calculate the performance (comparison between WebMVC and Web Flux) ? Looks very useful
Its called gatling
So for scenario 3, the "Response Time" is for receiving the whole stream?
So a p99 of ~5s is for streaming 50 items (of 1k each) => 50k/5s = 10k/s. Comparet with about 5.5k/s on MVC.
I also really like the stddev numbers for the WebFlux results. Much more consistent than MVC.
You guys are good. Thanks for the awesome presentation
very good information