How much atomized should be automations (Service tasks) to follow best practices and avoid downgrade in performance

Hey, mates :wave:

Currently my team is working on replatforming some mid large microservices-based application to use Camunda as its core for all our complex business flows. Mostly - for better understanding and monitoring of those distributed processes by departments. Having process documentation and execution at the same place is great.

For some big, almost fully automated process, the question is what are the sane constraints/boundaries of splitting it into the smallest possible (atomized) tasks in the context of using Zeebe?
Into more atomized tasks we split its model - more control and visibility we have over the process, however it makes sense only to some limit. Also we need to consider that more involve Zeebe between tasks - worse it will impact latency and perfomance. Technically, we could have just few heavy service tasks but to split heavy tasks is exactly half of the actual goal.

Imagine a loan application at a bank: once the application form is submitted, a larger series of tasks and decisions is initiated. It validates the loan application, validates the applicant’s identity, pulls a credit report, performs a risk assessment, and, depending on the loan type, many other steps, before the funds are disbursed to the account.

Is there as any good rule of thumb we can follow:
E.g., split into tasks by some kinda “1 transaction - 1 service task” rule, then combine these task in some subprocess? Or bare with the thing that a lot of processing will happen implicit in process model, encapsulated in one service task but it’s fine as long as concerns rather an engineering team than business/stakeholders?

Thanks in advance
Alex

Hi,

My suggestion to my team on granularity of process tasks is use;

Verb - Business Object

Eg

Qualify Application
Verify Applicant
Disburse Funds
…

If you get down to

Verb - Attribute

Eg

Verify Amount
Verify Term
…

You are likely programming in BPMN as opposed to process modelling.

I often find micro services implement system functions. In this case, you typically need to aggregate or orchestrate across multiple system functions to realise a business service…

I tend to find that top down process modelling at the granularity of verb/business object helps me identify the actual business services required, and then these can be mapped to one or more system function implementations…

Note these are guiding principles we use, there are often exceptions…

Regards

Rob

1 Like

Did you take a look at the Camunda best practices. It will give you the direction to get started.

Each task must be idempotent.
The more complex the task is, the harder idempotency will be implemented

1 Like

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.