Peter gave us a insight how Workflow management can improve the efficiency and maintainability of your large code base by using workflow management systems.
Reactive application development gives us better ways to build scalable applications, but often together with a micro-services jigsaw puzzle. Decoupled teams can rapidly deliver decoupled services, but you still need to piece together an end-to-end system. This presentation introduces an alternative way to think about and architect reactive applications using workflow tools.
Modern workflow management tools enable a convenient process-oriented approach to service orchestration that is itself reactive. More importantly, process management technology provides two key features that hand-coded applications typically lack: persistent execution state and an editable graphical process representation that you can use to define and adjust service orchestration. After learning how to coordinate micro-services, you will also learn how to use the same system to orchestrate micro-service-like human workers. It turns out that with the right platform, human actors can also be reactive services, and participate in the same architecture.
Reactive programming focus on building decoupled scalable and resilient services. Reactive APIs make it easy to call other other services asynchronously and in parallel.
Parallel execution reduces latency to the maximum latency of a set of tasks instead of the sum of latencies. Doing all the steps in a proces takes less time in whole because more can be done in the same time.
It uses non-blocking feature-based APIs available in quite some programming languages. The good thing about this is that a few threads can handle a lot of executions. Threads don't block asynchronous execution. This proces generatates tasks that will be executed. The return is a finished task.
Microservices decomposes your services into separably deployable units. Teams can now deploy separately. The service orchestration problems comes when you have separate services that depend on each other. A services must not be called when an other fails executing.
There must be a high level overview/coordination and know how the microservices link to each other. Orchestrating the proces and send task to each services can be a solution but now tasks can not be executed parallel. In both cases it's hard to understand where your data is.
By using a workflow system, tasks can be more manageable: steps can easily be added or removed from the program. It scales quite good because the microservices takes all the load and the workflow system only handles the communication between the steps.
In the workflow management system a human task, such as filling a form, has the same API as a microservices call. This gives extra flexibility for your system because you now can add the human factor to the spectrum. Now correction tasks can be executed, so processes can be successful where they would not be when not using a workflow management system. Tasks can be escalated in a workflow management system after a certain amount of time so no tasks are lost.
Workflow management systems are, on the other hand, hard to test. The workflow system uses a partly standardized graphical models with vendor specific proces definition.
Workflow automation tools provide a convenient solution for microservice orchestration. Workflow management systems includes human tasks, so you can program the humans in your proces. Workflow engines are reactive and split your proces into microservices so multiple teams can work on your system.