Closed StephenOTT closed 2 years ago
@StephenOTT at this stage versioning is still limited, we've got a few items in our backlog like this one https://issues.redhat.com/browse/KOGITO-6517 to start enhancing this story. In that context, the primary use case that we would like to target is that each process version would have its own deployment and so inflight processes would remain running in the service version that it started. For new versions, that would mean deploying a completely new service, that way you can simplify having to do any kind of migrations for processes.
great. This is a very interesting conversation because there is so much pro / con:
@StephenOTT regarding point 3, the Data Index is also a sort of Gateway API in that sense, it could act as a routing layer to redirect a mutation to start a new instance to the newest version of the process. That also means that the Data Index would keep track of the available deployments. And as for data, that's already done by Data Index, it collects data from multiple runtimes, different processes and versions as well, so it should be transparent in that sense.
I have dealt with this A LOT in the camunda bpm space, and versioning becomes this mess for organizational deployments: where you have multiple versions being deployed, and dealing with migrations, etc. (also becomes even more complex in a dev env where you share a Data index and people are deploying hundreds or thousands of versions of a single workflow)
One must be able to update the current version without having to change the version ID (from the index perspective its the same version) - this would also lead to things like: should you hash the BPMN so even though its the same version ID/tag you are aware that the definition is actually different (example: you made a bug in gateway logic and only detected it post deployment into prod).
Migration between V1 and V2 in messy: mapping between elements, deleted elements, etc is a mess and never perfect, and full of complexity. The simpler you can keep your version protocol the better.: Codegen and service/app deployments really helps IMO which is great!
Starting the most recent version vs a specific version gets messy in practice and needs to be treated carefully:
This last main point creates weirdness, where you know have a data index that is a index of data, but also holds additional gateway controls (which don't exist in the workflow app)?
Description
In kogito, what is the protocol for process versioning?
Examples
Implementation ideas
No response