Question about multiple containers, with load balancer on DO

AI-generated summary

mcbuzz is planning to use DigitalOcean’s (DO) load balancer and is unsure if each droplet should contain both a web-only and data container. codinghorror suggests using multiple servers instead of multiple containers on the same machine for better resistance to server failure.

mcbuzz explains that they want a setup that’s easy to propagate for future needs and proposes using an 8GB droplet split into two separate Docker containers for data and web, load balanced to alternate between the two.

michaeld questions the need for load balancing from the start, suggesting it’s better to solve problems as they arise. mcbuzz explains that they’re expecting a high influx of users and want to ensure server reliability.

michaeld advises that scaling up can be just as effective as load balancing and keeps complexity low. mcbuzz asks for architecture suggestions, and michaeld recommends a simple setup with everything in one container, which can scale to at least 10 million pageviews per month before issues arise.

It seems that multiple containers are the way to go in terms of flexibility/scalability. It was suggested that one droplet could contain the data tier and another droplet for the web-only. However if I’m planning on using DO’s load balancer, does that mean that each droplet would have to contain 1 web-only and 1 data, albeit in separate docker containers?

*Excuse me for any mistakes, I’m not too familiar with these architectures and previous questions are a few years old.

Multiple servers, not multiple containers on the same machine. I suppose you could try that with a giant droplet but doesn’t this defeat the point of making you more resistant to server failure?

I wanted something relatively easy to propagate so I only add what I need in the future since I’m just starting out now. If the load balances relatively equally to each droplet doesn’t that make the server less likely to fail unless the server where the droplet is fails? So for example I get the 8GB droplet, split it in half separate docker containers for the data and web (so 2 of each) I load balance them so I alternate between which one is more available.

Or could someone help me determine a schema similar to what I’m describing but makes more sense logistically?

Any help would be appreciated I’m really excited to build our platform with this software.

Can you start by explaining why you need load balancing from the start in the first place? Better to solve problems when you have them… building your community is harder than scaling your servers.

we’re expecting high influx of users, but in spurts. We are having some members migrate from a fairly large community and my investors were insistent that the servers should be able to handle ally types of traffic; one of the main problems of the other site was server reliability. I realize maybe the load balancer might be overkill at this point in time but I thought it would atleast help to make sure resources are provided more equally…also I thought it would be better maintainability-wise to have my basic architecture in place already…

You never know where you’ll need to scale beforehand.
It can be disk space, CPU cores, memory. Even when overdimensioning heavily you’ll not be able to predict what will be the bottleneck.

That, and scaling up (“just get a bigger server”) could also work pretty well, and it keeps your complexity low.

Thanks for the help Michael. What would you suggest for the architecture? It seems the multiple container approach is more secure and flexible. So a data container and web only container (in their own droplet?) would suffice for the foreseeable future?

That would be absolutely sufficient. If I were you, I’d even go for the most simple setup: everything in one. You’d be able to scale out to at least ten million pageviews per month before getting into any kind of trouble at all.

that was exactly the info I was looking for, albeit in a complicated way!
Thanks so much Michael!