Dear all, Dear Bernd
In a youtube video CamundaCon 2018: The Role of Workflows in Microservices (Camunda) - YouTube Bernd Rücker is not suggesting for microservices the use of Camunda with External Tasks. He particularly mentioned that he is not suggesting this as a best practice, although he has seen some successful deployments.
I would appreciate if you can shed some light into why it is not considered as best practice in comparison to other alternatives mentioned on this talk.
Great to see you here in the Camunda forum and taking the time to ask your question! I think this could be probably some misunderstanding. I think I was referring to the following situation:
You could either see the workflow engine as implementation detail of a single microservice. This is totally inline with all “microservices values” - especially autonomy of the microservices teams. But this means the workflow engine really runs decentralized.
You could still leverage external tasks though - and I think it is technically the best option - but then “just” one microservice talks to exactly one engine.
The alternative is to see the workflow engine as the transport/communication hub - as a probably centralized entity where you connect all microservices to. Then all microservices get their work via external tasks from Camunda.
This is technically total valid and I see a growing number of customers doing it with great success. So if you like this architecture / deployment view - go for it! It is a quite simple yet powerful solution.
It “just” means that you have to agree on Camunda being a central tool - which is harder to establish for some companies (especially bigger ones).
Because of the latter I am quite cautious to phrase that option as best practices - as this can make you some severe “enemies” in enterprise architecture departments.
But again - it is a total valid option and if no reason against it probably the easiest to setup and operate.
Does this help? Otherwise feel free to ask further!
Your answer is crystal clear and I do get your point.
My idea is to use Camunda as orchestration engine for a specific list of functions (orders, retrieval of information for customers, etc) and not to use it a a central hub for all the functions of an enterprise (although, in some cases that might be fine as well).
Also, I was thinking of this set-up, not only in the use of micro-services, but also as a way to decentralize orchestration with job execution, and keep the orchestration engine as light as possible, while scaling out the job execution independently and having all those benefits that come with external jobs. I think makes sense from architectural point of view + gives flexibility in the coding language someone might use to implement the workers.
Many thanks for your reply,
From what I understand so far this makes a lot of sense Telis!