Questions about designing effective Kubernetes solutions at scale


We’re in the process of migrating our aging monolith to a more robust solution and landed on Kubernetes as the most appropriate platform to achieve what we’re looking for. At the same time, we’re looking to split out and isolate our client data for security and improved privacy.

What we’re considering is ultimately having one database per customer, and embedding those connection details into a deployment for each of them. We’d then build a routing service of some kind that would link a client’s request to their respective deployment/service.

Because our individual clients vary wildly in size (we have some that generate thousands of requests per minute, and others that are thousands per day), we like the option of having the ability to scale them independently through ReplicaSets on the deployments.

However, I have some concerns regarding upper limits of how many deployments can exist/be successfully managed within a cluster, as we’d be looking at potentially hundreds of different clients, which will continue to grow. I also have concerns of costs, and how having dedicated resources (essentially an entire VM) for our smaller clients might impact our budgets.

So my questions are:

  • is this a good idea at all? Why or why not, and if not, are there alternative architectures we could look at to achieve the same thing?
  • is this solution more expensive than it needs to be?

I’d appreciate any insights you could offer, thank you!