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

[KieLive#9] The Multiplying Architecture, by Ed...

[KieLive#9] The Multiplying Architecture, by Eder Ignatowicz

Learn how we can take advantage of a unified stack and multiply its value across different platforms.

About this Event

We live in a world where web technologies have dominated the software development. Even traditional desktop software that once was never thought possible to work in browsers are now developed using nodejs and packaged using Electron, take VSCode as an example.

At first, the idea of such dominance of the web may sound limiting; however, this is quite the opposite. We can take advantage of a unified stack and multiply its value across different platforms: entering the Multiplying Architecture!

The Multiplying Architecture is a set of libs, patterns, and techniques that provides the right level of abstraction, allowing developers to distribute the same features in different places or platforms.

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

About the invited speaker:

Eder Ignatowicz is a Tech Lead at Red Hat, QConSP Conference Chair, Java Champion and proud member of Drools/jBPM team

KIE Community

December 08, 2020
Tweet

More Decks by KIE Community

Other Decks in Technology

Transcript

  1. We live in a world where web technologies have dominated

    software development. Default choice for most applications. 2 Software Development Landscape Landscape
  2. Well though and understood set of Standards, Patterns and Techniques

    as a strong foundation. 3 Standards, Patterns and Techniques Foundation
  3. Browser is now more than just the window for the

    internet. Browsers became part of an important trend as the mechanism to distribute any Graphical User Interface based applications. 6 Browser Everywhere Browser Everywhere
  4. Architectures Architectures 7 An evolutionary architecture supports incremental, guided change

    as a first principle across multiple dimensions. Evolutionary Micro Frontends Serverless Microservices Architectural style that structures an application as a collection of independent services. Incorporate third-party “Backend as a Service”, and/or that include custom code run as Functions. Design approach in which a front-end app is decomposed into individual, semi-independent “microapps” working loosely together.
  5. Cloud Native Tooling The Multiplying Architecture 9 The components to

    be distributed should be preserved untouched and with avoiding feature flags. Bridge Minimize code changes It has to embrace different generations of technology stack. Multiple Distributions The origin of multiplying architecture is rooted in the need to distribute the same set of components in a myriad of platforms. requirements
  6. View is a portable set of widgets that are exposed

    as an unit to the Channel through the Envelope. The Abstractions Optional section marker or title 14 Top level abstraction that represents the hosting environment, like a website or a desktop application. Channel Editor is a specialized type of View, that gets a file content as input and is able to serve the content state back to the Channel through the Envelope. Editor View Enable transparent communication between Components (View/Editor) and Channel Envelope core
  7. Channel (VS Code, Desktop, Browser, …) Components Interaction 15 <iframe>

    MyChannel Implements: Channel, MyServiceApi Consumes: MyEnvelopeApi MyEditor Implements: Editor Consumes: MyServiceApi MyEnvelope Defines: MyEnvelopeApi MyServiceApi Implements: MyEnvelopeApi Consumes: Editor
  8. Envelope Advantages Context Isolation (CSS and JS) Autonomous Teams Independent

    Release Cycles Type Safe Communication 16 Component Isolation micro frontend
  9. Worked with Microsoft VSCode team to enable Graphical based editors.

    25 The Multiplying Architecture VSCode Native
  10. Read and Write content from multiple sources like GitHub, Gist,

    FileSystem, S3 (soon), etc. 26 The Multiplying Architecture Unified I/O API
  11. 27 Cross channel support for Undo, Redo, and Dirty detection.

    The Multiplying Architecture State Control
  12. 30 The Multiplying Architecture Gist as storage Pure client side

    mechanism to store content using GitHub Gists.
  13. 31 The Multiplying Architecture Backend Services A pluggable infrastructure, able

    to augment the capabilities of the views and editors by enabling some backend dependent features.
  14. 32 The Multiplying Architecture Embedded Editors (soon) const dmnEditor =

    kieTooling.dmnEditor('targetEmbeddedDiv', {standalone:true}) const bpmnEditor = kieTooling.bpmnEditor('targetEmbeddedDiv', {standalone:true})
  15. 34

  16. 35

  17. 36

  18. 37

  19. 38

  20. 40

  21. Goals of The Multiplying Architecture The Multiplying Architecture 43 The

    components to be distributed should be preserved untouched and with avoiding feature flags. Bridge Minimize code changes It has to embrace different generations of technology stack. Multiple Distributions The origin of multiplying architecture is rooted in the need to distribute the same set of components in a myriad of platforms. solve a problem