Upgrade to Pro — share decks privately, control downloads, hide ads and more …

KieLive#18: Kogito - Powering Business Automation in the Cloud

KieLive#18: Kogito - Powering Business Automation in the Cloud

Let's understand how Kogito can help you build your next cloud-native business automation application based on Quarkus or Spring Boot.

Link to the live streaming: http://red.ht/KieLive18

KieLive#18: Kogito - Powering Business Automation in the Cloud

The cloud is the new runtime for modern business applications where solutions are now built by composing multiple microservices. In this context, developers need tools that help create, adapt or extend their applications with the agility needed by the modern business world. But how do business automation solutions fit in this space? Why and how does the design of Kogito components support truly cloud-native applications?

With Cristiano Nicolai, we will explore all the components you can use from Kogito, how these are interconnected and can help you create tailored solutions based on your business domain using state of the art runtimes such as Quarkus and Spring Boot.

About the invited speaker:
Cristiano Nicolai is a principal software engineer at Red Hat who actively contributes to jBPM and Kogito projects. He is also an enthusiast of Open Source and business automation technologies.

Connect with Cristiano:

https://twitter.com/cris_nicolai

https://github.com/cristianonicolai

https://www.linkedin.com/in/cristianonicolai/

2c8520502587d8827bad79bd2317299b?s=128

KIE Community

January 20, 2021
Tweet

Transcript

  1. Principal Software Engineer @ Red Hat Cristiano Nicolai Powering Business

    Automation in the Cloud http://kogito.kie.org Follow @kogito_kie Kogito
  2. What are cloud-native applications? “Cloud native technologies empower organizations to

    build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach. These techniques enable loosely coupled systems that are resilient, manageable, and observable. Combined with robust automation, they allow engineers to make high-impact changes frequently and predictably with minimal toil.” Cloud Native Computing Foundation (CNCF)
  3. What are cloud-native applications? • Small, independent, and loosely coupled

    services ◦ Microservices • Container based • Allows rapidly iteration to deliver business value • Private, public, and hybrid clouds • Scalable, resource efficient
  4. Cloud Native Applications Architecture OpenShift / Kubernetes Operators KNative Service

    Mesh Serverless SaaS Cloud Vendor Services
  5. • Runtimes • Add-ons • Services • Operator Kogito Cloud

    Native Building Blocks
  6. Kogito Runtimes

  7. Automagically REST! • Kogito resources ◦ BPMN ◦ DMN ◦

    Serverless Workflow i. JSON ii. YAML
  8. Kogito Runtimes Quarkus Spring Boot

  9. Kogito Add-ons

  10. Kogito Runtimes - Add-ons • Building blocks ◦ Choose and

    pick the ones that are relevant to your service • Maven dependencies • Codegen integration • Runtime specific dependencies: ◦ Quarkus ◦ SpringBoot <dependency> <groupId>org.kie.kogito</groupId> <artifactId>kogito-cloudevents-quarkus-addon</artifactId> </dependency>
  11. Management add-on • Retrieve process nodes • Abort an active

    process instance • Cancel or re-trigger a node instance, or trigger a new node instance • Retrieve error details for a process instance, or skip or re-trigger a failed node instance
  12. Management add-on

  13. Persistence add-ons • Infinispan • MongoDB • File system •

    Disclaimer: Persist your process state while it is running!
  14. Kogito Runtimes - Process SVG

  15. Process SVG add-on

  16. Process SVG add-on

  17. Prometheus Monitoring add-on

  18. Reactive Messaging add-on Kogito Visas Data Index Service Kafka CloudEvents

    Jobs Service Audit Service Business Monitoring Service
  19. Kogito Runtimes - Reactive Messaging • Events ◦ Process Instance

    Event ◦ User Task Event ◦ Process Variables Event
  20. BPMN Messages and Cloud Events

  21. BPMN Messages and Cloud Events

  22. Cloud Events add-on • Route CloudEvent types to specific BPMN

    message events in the process • Codegen glues producer and consumer code to specific node in the process • Enabler for easily integrating with external systems. ◦ Example: Using Kogito to orchestrate multiple services
  23. Cloud Events add-on

  24. KNative Eventing add-on

  25. KNative Eventing add-on

  26. Kogito Services

  27. Kogito - Scaling to multiple services Visa Service Travels Service

    Customer Service Notification Service
  28. Data Index • Distinct focus on domain data • Flexible

    data structure • Distributable and cloud-ready format • Infinispan-based persistence support • Message-based communication with Kogito runtime (Apache Kafka, CloudEvents ) • Powerful querying API using GraphQL
  29. Data Index - GraphQL

  30. Infinispan Kogito Visas Data Index Service Kafka Kogito Travel Agency

    Data Index - Architecture MongoDB CloudEvents CloudEvents
  31. Data Index - Summary

  32. Jobs Service

  33. Jobs Service

  34. Kogito Visas Data Index Service Jobs Service - Architecture Jobs

    Service REST / Callback Infinispan REST / Schedule Kafka CloudEvents
  35. Jobs Service - Summary • Distributions ◦ Quay.io image ◦

    Runner JAR ◦ Operator
  36. Process Management • How to support process operation? • Bring

    visibility about status? • Have an overview about all runtimes deployed? • Tooling to support fixing any issues during the execution of the process?
  37. Management Console • List process instances ◦ Search by status

    and business key ◦ Agregation by parent process ◦ Bulk Operations ▪ Abort/Skip/Retry • View process details ◦ Abort instance ◦ Navigation between parent/child processes ◦ Re/Trigger a node in the process ◦ Timeline ▪ View nodes in error • Retry or Skip • Jobs management • Domain Explorer ◦ View and find processes based on domain data ◦ Allows for creating domain specific views to easily find related processes
  38. Management Console - Process Details

  39. Management Console - Domain Explorer

  40. Kogito Visas Data Index Service Kogito Travel Agency Management Console

    - Architecture Management Console REST REST GraphQL
  41. Management Console • Distributions ◦ Quay.io image ◦ Runner JAR

    ◦ Operator
  42. Kogito - User Tasks

  43. Task Console • Out of the box Task Inbox experience

    • Forms generated dynamically ◦ Based on JSON Schema format • Keycloack/SSO integration • Task Management ( coming soon ) ◦ Delegate tasks
  44. Task Console

  45. Kogito Visas Data Index Service Kogito Travel Agency Task Console

    - Architecture Task Console REST REST GraphQL
  46. Task Console • Distributions ◦ Quay.io image ◦ Runner JAR

    ◦ Operator
  47. Trusty AI • Runtime Monitoring Service • Tracing and Accountability

    Service • Explanation Service
  48. Kogito Services Distribution • Quay.io container image • Runner JAR

  49. Kogito Operator • Deploy Kogito runtimes into OpenShift and Kubernetes

    • Build runtimes from source (only on OpenShift) • Connect every piece of infrastructure that the services and runtimes might need • Dependency management
  50. Infinispan Kogito Visas Data Index Service Kafka Prometheus Grafana Kogito

    Travel Agency Strimzi Kogito Data Index (CR) Infinispan Operator Prometheus Operator Kogito Service (CR) Kogito Service (CR) Kogito Operator on Openshift
  51. Kogito.Next • Addons ◦ Kafka persistence ( experimental ) -

    Quarkus ◦ SVG process image - Spring Boot ◦ OpenTracing ◦ Monitoring using Micrometer • Services ◦ Automatic Task Assignment using Optaplanner
  52. Thank you! @cris_nicolai @kogito_kie @rhdevelopers kogito-development@googlegroups.com

  53. Resources • https://kogito.kie.org/ • https://blog.kie.org • https://github.com/kiegroup/kogito-runtimes/blob/master/CONTRIBUTING.md • https://operatorhub.io/operator/kogito-operator •

    https://serverlessworkflow.io • https://github.com/kiegroup/kogito-examples • https://quarkus.io/ • https://quay.io/repository/kiegroup