Building Reactive Pipelines with Kotlin & Spring: How to go from scalable apps to (ridiculously) scalable systems

394797f95420c4da4c84379f0d0b11c9?s=47 Mark Heckler
December 05, 2019

Building Reactive Pipelines with Kotlin & Spring: How to go from scalable apps to (ridiculously) scalable systems

Going from imperative, blocking code to a reactive programming model enables us to scale our apps in ways that aren't possible with a thread scale-out approach, which is a good thing! But as with all optimizations, one must examine & address the system holistically or all we accomplish is moving bottlenecks around, creating or finding new chokepoints as we tune certain applications/services. This is *not* so good.

In this session, the presenter discusses:
* How Project Reactor builds on reactive streams to help you create performant & scalable reactive microservices
* Message brokers & streaming platforms like RabbitMQ & Apache Kafka
* How Spring Cloud Stream leverages Reactor to provide fully reactive pipelines for system-wide (ridiculous!) scalability
* How Kotlin enables you to do so with less code and more elegance

The presenter will code all examples live and in real time. This is not an abstract discussion, come to gain real, practical knowledge!


Mark Heckler

December 05, 2019


  1. Building Reactive Pipelines with Kotlin & Spring How to go

    from scalable apps to (ridiculously) scalable systems Mark Heckler Spring Developer & Advocate @mkheck
  2. @mkheck “Please do LESS with MORE!”

  3. @mkheck Why are we here? Scaling systems: traditional approaches

    What to do when we reach the limits? Sounds good, but how does it work?
  4. @mkheck There’s more! Roman Elizarov 10:15 tomorrow Sebastien Deleuze

    11:15 tomorrow
  5. @mkheck Who am I? • Author • Architect &

    Developer • Java Champion, Rockstar • Professional Problem Solver • Spring Developer & Advocate • Creador y curador de
  6. @mkheck New book! But you can’t buy it yet…

    DISCLAIMER: artist’s rendition only, not the real cover
  7. @mkheck Scaling systems: off to a good start Microservices

    for independent scaling Messaging platforms Spring Cloud Stream for productivity + versatility (+ resilience, etc.)
  8. @mkheck Sink Processor For example… Source

  9. @mkheck Consumer Function Evolving the API Supplier

  10. @mkheck We’ve redlined, now what? Change approach to scaling

    Scaling (connections) vs. Performance (parallelization) Reactor Integration with messaging platforms…any synergies here?
  11. @mkheck –Rossen Stoyanchev, Reactor team member “In a nutshell

    reactive programming is about non-blocking, event-driven applications that scale with a small number of threads with backpressure as a key ingredient that aims to ensure producers do not overwhelm consumers.”
  12. @mkheck Reactive Streams: 4 interfaces Publisher<T> Subscriber<T> Subscription Processor<T,R>

  13. @mkheck Reactive Streams in Context Publisher<T> Subscriber<T> Subscription Processor<T,R>

    Spring Cloud Stream parallel Source/Supplier Sink/Consumer (n/a) Processor/Function
  14. @mkheck Let’s code!

  15. @mkheck

  16. @mkheck Resources, @mkheck

    on Twitter