Oleh Dokuka: Reactive Programming
Who is the Masterclass for?
If you are a software engineer who is building microservices, distributed systems or highly-networked applications and you want to make your system efficient and keep your code clean, then this course for you. You will learn the benefits of reactive programming and Reactive Streams, how to use one of the most popular implementations called Project Reactor and how to build efficient microservices with Reactive Spring.
This Masterclass will cover:
- The Reactive System
- Reactive Programming History and Motivation
- Reactive Streams
- Project Reactor API From A-Z
- Project Reactor In Action
- Improving Resilience with Project Reactor
- Handling Transactions and Distributed Transactions
- Flow Control techniques in Practice
- Microservices with Reactive Spring
- R2dbc in Action
- RSocket in Action
- Building end-to-end Reactive System
Agenda: Part 1 (Opt-in)
Day 1 is focused on learning the essentials of reactive programming, reactive streams, and project reactor as one of the famous implementations.
We will cover:
- The motivation behind Reactive
- We are going to look at different meanings of the word “reactive” and how reactive programming was evolving over time.
- Introduction to Project Reactor
- A short Story of Project Reactor and the Reactive Types it has.
- Project Reactor Essentials
- How to Create Flux and Mono (followed by exercises)
- How to Do essential transformations on a stream of data (followed by exercises)
- How to Deal with Multiple streams at a time (followed by exercises)
- How to Test (followed by exercises)
- Project Reactor in Action
- How to build a simple web application consuming data from multiple streams and processing them using Project Reactor
Key takeaways: Reactive System, Reactive Programming History and Motivation, Reactive Streams, Reactive In Action
Agenda: Part 2
Day 2 is focused on getting a proper understanding of the more advanced topics of Reactive Programming like multithreading, backpressure, concurrency, context, and in-depth understanding of various Project Reactor configurations. Apart from that, we will be looking into tooling around Project Reactor and how they help in debugging Reactive pipes. Also, this day covers the applicability of the Project Reactor in solving common microservices problems.
We will be:
- Project Reactor in-depth
- Understanding Multithreading and Concurrency (followed by exercises)
- Control Flow of elements (followed by exercises)
- Work with Contextual Data and ThreadLocals (followed by exercises)
- Logging, Debug and collect Metrics (followed by exercises)
- Project Reactor in common scenarios
- Implementing a load balancer which should work in a few balancing modes that everyone will have to implement using Project Reactor.
- Working with Blocking API. In this task, the student will be required to adopt a blocking JPA repository using Project Reactor Scheduler API.
- Working with Backpressure on a sample of data uploading and external service API which has a strict limitation on the number of requests/second and some limitations on how data should be sent.
- Managing distributed transactions or simply talking implementing orchestrated saga pattern using Project Reactor.
Key takeaways: Project Reactor In-Depth, ThreadLocals and Project Reactor, Improving Resilience with Project Reactor, handling Transactions and Distributed Transactions, Flow Control techniques in Practice
Agenda: Part 3
Refactoring from MVC to Reactive WebFlux
- Best Practices in existing system migration to Reactive Paradigm
- Step-by-Step migration of Microservices System to Reactive using all the theoretical parts covered in Day 2
Key takeaways: Microservices with Reactive Spring, WebFlux, Reactive Security, R2dbc in Action, Building end-to-end Reactive System
Are there any prerequisites?
- JDK 8+ installed on it
- IntelliJ IDEA (latest available preferred)
- Installed EduTools as a plugin or a separate IDE (the version must be 3.1 or higher) - (see https://www.jetbrains.