If all you need to host is a Meteor app, then Docker containers are a much better choice. My case is a bit different, as e.g. in one of our productive VMs we also host
nginx
an Apache Kafka + zookeeper instance
redis
the MongoDB primary
various microservices implemented in Node.js, some of which started in multiple instances
another microservice in a Java Spring Boot container
a prerendering service along with a headless Chrome
…and the Meteor app comes on top of all that, optionally also in multiple instances. Doing all that in individual Docker containers would be possible, and maybe even desirable, I’m not sure – but it doesn’t feel like a natural choice.
I don’t have secondaries quite yet, but I plan to put them into containers as soon as I set them up. But since I rent bare metal, it makes only sense to host the MongoDB secondaries on separate root servers, even though I have plenty of resources left on the first host. Obviously is makes little sense to co-deploy them on the same host, because if it goes down in flames, everything else goes down with it.
Hey @raragao, this is slightly delayed but I’ve only just started researching the use of a proxy for performance improvements.
What is the benefit of using a proxy? What is the difference between a proxy and a reverse proxy? Would I host the proxy on a different, smaller server than the application / database? (I assume so, but I would rather ask a stupid question to confirm it!)
For me, proxy (or forward proxy) is used to out of a private network to internet, like Squid Proxy for example.
A reverse proxy can be a one only point entry to many applications, then you can use one only IP to expose many applications. Usually Apache and Nginx are used as Reverse Proxy (there are many).
I started to use Traefik for now. It is very easy to use with Docker Containers.
Somewhat off-topic: with a strikingly similar setup as yours, we decided one day that Docker is too blunt (or actually too simplistic) a tool for what we need. So we’re investigating the system containers concept instead. Seems much better suited for automating migrations or load balancing servers containing multiple services.