0 votes
1 view
in DevOps and Agile by (30k points)

We are going to end up with dozens of these microservices (most are Akka-based), and I'm unsure how to best manage their deployment. Specifically, they are built to be independent of each other and as specialized and distributed as possible.

My question stems from the fact that all of them are too small for their own individual JVMs; even if we were to host them on AWS nano instances, we'll still end up with about 40 machines if you factor in redundancy, and such a high number is simply not needed. Three medium size instances could (and do) easily handle the entire workload.

Currently, I just group them into "container" applications, somewhat randomly, and then run these container applications on larger JVMs.

However, there has to be a better way. I am not aware of any application servers for Akka where you can just "deploy actors", so I wanted to get some insight on how others run Akka microservices in production (and specifically how to manage deployment).

This is probably not limited to Scala and Akka, but most other platforms have dedicated app servers where you deploy these things.

1 Answer

0 votes
by (51.2k points)

The only way you get the decoupling, isolation, resilience you want with microservices is achieved by a service orchestration tool, and that would indeed run them in individual processes, each with their own JVM. with this, you can deploy, update, stop and start them individually.

As the question suggests that you are trying to treat JVM and amazon VMs are equivalent, but the fact is you can have multiple jvm processes in a single virtual machine.

There are many tools in the market but I suggest you use kubernetes.

Note:This tool has a lot of features that you may be useful in the future such as easy scaling, log consolidation, service lookup, health checks/service failure handling, etc.

Welcome to Intellipaat Community. Get your technical queries answered by top developers !