The Value Of Reactive Systems

Sdílet
Vložit
  • čas přidán 9. 07. 2024
  • In the Java world, it's been a couple years since Spring Framework 5 and Spring Boot 2 have published their new Reactive Programming features based on Project Reactor. During this period, the team has collected feedback, benchmarks, and other developer experiences.
    This session is an invitation to navigate that valuable information together. Our goal? Building a decision-making template to assist you if/when you're thinking about Reactive architectures for your next system. We'll examine:
    -why you should care
    -what the tradeoffs are and what's being done to address them
    -what benefits we should expect for various common modern use cases
    -what the future holds for cloud-native systems and beyond
    Speakers: Violeta Georgieva, Principal Software Engineer, Pivotal; Stephane Maldini, Reactive Engineering, Pivotal
    Filmed at SpringOne Platform 2019
    SlideShare: www.slideshare.net/SpringCent...
  • Věda a technologie

Komentáře • 9

  • @emilbelardo639
    @emilbelardo639 Před rokem +1

    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

  • @ramcorp542
    @ramcorp542 Před rokem

    Thank for the presentation.

  • @rajivkumar-ub6uj
    @rajivkumar-ub6uj Před 2 lety

    You guys are good. Thanks for the awesome presentation

  • @emilbelardo639
    @emilbelardo639 Před rokem

    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.

  • @Xposterion
    @Xposterion Před 3 lety +1

    Thank you for presentation. Slideshare link not valid, could you please re-upload it?

  • @seonwookim5391
    @seonwookim5391 Před 2 lety

    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

  • @itsnaveen007
    @itsnaveen007 Před 3 lety

    very good information

  • @rewolfer
    @rewolfer Před 3 lety

    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.