Do we want to make a recommendation for greenfield projects (default architecture)

Seeing @javahippie’s post here I’d like to discuss if we should recommend a default architecture for new greenfield projects or not.

We have a couple of options:

  • recommend the external task pattern
  • recommend embedding the engine
  • recommend nothing in particular and show the two options side by side
  • recommend nothing

What do you think our policy in this regard should be?

My strong opinion is, that the flexibility of Operaton is one of its major strengths. Camunda recommended the standalone engine / external task pattern heavily in the recent years, but its main purpose was to prepare customers for a C8 migration.

As the different architectural styles have different strengths, I would be very hesitant to recommend any of them as the default, as it might raise the impression, that it performs worse in other settings, when it’s just a matter of

  • Do you need transactional services?
  • Do you need to integrate different languages?
  • How does your load and processing power look like?
1 Like

I agree that the flexibility is a core strength. When I first came in touch with C7, I liked the ease to integrate this into SpringBoot. But thinking more about that I thought that external tasks are powerful to orchestrate processes with a central engine and low-code. So both are totally valid.
So I would like to target also both: I would like to have show cases which allow easy scaffolding of applications and services on the one hand, and maybe on the other hand having a Operaton instance running on a cloud provider where users could deploy a (limited) number of processes and interact with external services via REST or messages.

IMO the embedded engine is s better option since it is easier to develop in. External task pattern brings the Rest API which makes the system more complex.

But even with that in mind, I would not mark an approach as superior and make any recommendations. Just describe the two architectures and have a comparison table that describes the aspects and their consequences. And let people decide what fits their situation and habits best.

As @javahippie noted, the strong push towards the Camunda run distribution and hence the external task pattern was a preparation for C8.

From my perspective I would as well recommend nothing in particular and show the two options side by side.

Why? Because I see the embedded engine as the main option when it comes to developing processes in Java. I can distribute and slice them exactly the way I want.

Nevertheless, there are cases where I benefit from the external task pattern in the architecture. Not only when I develop in other languages like C#, but also when I have external services in Java that I want to scale independently, etc. It’s a great way of decoupling. But not everything is a nail just because I own a hammer…

As an architect, I simply want to have all the options to be able to decide according to the context. So in my opinion both patterns should be shown. The preference always depends on the user.

2 Likes