<p>Coming from classic Java application development and being new to &quot;all this cloud stuff&quot;, I have a (potentially naive) basic question about scalability e.g. in Kubernetes.</p>
<p>Let's assume I've written an application for the JVM (Java or Kotlin) that scales well locally across CPUs / CPU cores for compute-intensive work that is managed via job queues, where different threads (or processes) take their work items from the queues.</p>
<p>Now, I want to scale the same application beyond the local machine, in the cloud. In my thinking the basic way of working stays the same: There are job queues, and now &quot;cloud nodes&quot; instead of local processes get their work from the queues, requiring some network communication.</p>
<p>As on that high level work organization is basically the same, I was hoping that there would be some JVM framework whose API / interfaces I would simply need to implement, and that framework has then different backends / &quot;engines&quot; that are capable of orchestrating a job queuing system either locally via processes, or in the cloud involving network communication, so my application would &quot;magically&quot; just scale indefinitely depending on now many cloud resources I throw at it (in the end, I want dynamic horizontal auto-scaling in Kubernetes).</p>
<p>Interestingly, I failed to find such a framework, although I was pretty sure that it would be a basic requirement for anyone who wants to bring local applications to the cloud for better scalability. I found e.g. <a href="https://github.com/jobrunr/jobrunr" rel="nofollow noreferrer">JobRunr</a>, which seems to come very close, but unfortunately so far lacks the capability to dynamically ramp up Kubernetes nodes based on load.</p>
<p>Are there other frameworks someone can recommend?</p>

sschuberth
<p>Scale your code as Kubernetes Jobs, try <a href="https://keda.sh/docs/2.4/concepts/scaling-jobs/" rel="nofollow noreferrer">keda</a>.</p>
