Hey everyone, apologies in advance as I think I’m about to expose lots of my ignorance, very happy to have people point me at docs, and also to collate any info I find under this post.
I’m at a meeting for the FOLIO project - building an open source library services platform (www.folio.org) which is a microservices oriented LSP project. The project has identified a need for workflow, but has decided to implement it’s own workflow engine and UX. I’m worried this might be a mistake (understated). Given that our platform already makes heavy use of Java and docker containers, it seems to be a great fit for Camunda. (?)
The challenge is that the platform is multi-tenant and has it’s own API Gateway that communicates tenant information to modules via a custom header. We also need to dynamically switch on tenants and use schema per tenant isolation (Postgresql).
It looks to me like the SpringBoot version of camunda is the best fit for dynamically configuring new tenants and adding a storage engine to persist engine configuraiton for each tenant.
Right now tho, I’m just trying to figure out : (1) Are there scaling limits for the number of tenants that can be configured? Right now, our other modules are essentially sedentary until a request comes along for a client. I guess the workflow engine is in a different state as it needs timers and events which can trigger activity regardless of incoming web requests. Does anyone have any experience or ideas for how to partition or load balance many schema-per-tenant instances? what happens if I start a second engine on a different physical host for the same tenant (Same DB)? and (2) What might be a good way to convert a custom HTTP header into the equivalent of the Camunda “tenant” property that can be passed to web-api calls like the deployment/create endpoint. We could implement a facade or something similar, but I’m hoping we can use a filter or something to just map our local header onto the appropriate form submission property.
More importantly perhaps, does anyone feel that this sounds really doable, and worth spending some effort to get working, or it just won’t fly and we should continue implementing our own solution. Right now, I’m trying to pull together a POC with camunda and mostly just need to get the dynamic tenant config working, and get a simple process executed for a trivial use case.
Apologies if I should have read more before asking, I’m doing this in the background and really just looking for validation that this is a sensible path as I work it out
Thanks in advance,