Flowable on Google Cloud Run

Hello everyone,

I am quite new to the Flowable so please bear with me if I say something stupid here.

Right now we are running the Flowable engine as a microservice in a container in Google Kubernetes Engine. But we consider trying Google Cloud Run for some of the microservices. Do you think it’s feasible / makes sense to run Flowable on Cloud Run? The reason I am asking is that from what I understand the Flowable engine is a long-running process and I am not sure it’s a good fit for Cloud Run.

Anyone got any experience with that?

Thank you!

Hi @pbastov

I’ve heard / read about Google Cloud Run but don’t have experience running Flowable on it.
But; looking at the requirements / contstraints it should definitiley work.
One thing that needs a proper solution for this specific deployment scenario is how you going to handle persistency. In this case consuming a service like Google Cloud SQL (instead of managing your own database) comes to mind.
So from a technical point of view I don’t see reasons why it shouldn’t work.
I’m very curious to hear if it’s a good fit because has potential.
Could you share your experiences with the community?

Regards,

Yvo

There is one thing I’ve come across to contend with. Containers in Cloud Run don’t have access to any resources (particularly, CPU) outside the context of an HTTP request. So there is no CPU available to the JobExecutor’s thread pool, meaning that work is stuck there indefinitely unless you’re “lucky” that some of your requests take so long that the JobExecutor can sneak in a poll before the request ends and get a job done. Technically, the engine will run, but you may find that functionally you can’t leverage it the way you normally would.

Not sure if you’ve already read The Flowable Engine as a Serverless Function and The Flowable Engine as a Serverless FunctionL Part II. In there there are links to video where me and @joram did some tests in running Flowable as a Serverless Function.

What @tiesebarrell is completely valid and for our experimentations we disabled the JobExecutor. We were only considering straight through processes. However, if you are using async jobs and timers you could have a dedicated instance in a normal container running that would be responsible for that.

Cheers,
Filip

Hello guys! Thanks for the replies.

@filiphr thanks for the links – I will definitely give them a read. I think for the time being we will keep it inside GKE, but if we manage to run it in Cloud Run I will update the thread.

Thanks again!