Reputation: 29867
Coming from classic Java application development and being new to "all this cloud stuff", I have a (potentially naive) basic question about scalability e.g. in Kubernetes.
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.
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 "cloud nodes" instead of local processes get their work from the queues, requiring some network communication.
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 / "engines" that are capable of orchestrating a job queuing system either locally via processes, or in the cloud involving network communication, so my application would "magically" just scale indefinitely depending on now many cloud resources I throw at it (in the end, I want dynamic horizontal auto-scaling in Kubernetes).
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. JobRunr, which seems to come very close, but unfortunately so far lacks the capability to dynamically ramp up Kubernetes nodes based on load.
Are there other frameworks someone can recommend?
Upvotes: 2
Views: 251