We have four different, but related apps that run on different servers - we don’t need close to the capacity we have in terms of CPU, but we like the redundency. We run 3X t2.small and 9X t2.micro, basically 2 servers for each app in the primary region and 1X each in the secondary. Should a failover occur we can spin up extra quite quickly.
In theory those 4 instances in region2 sit idle - so we could probably drop them to the smaller size, but the piece of mind of having them available is worth the cost to us.
Each server has a 16GB EBS root.
We also run 7X t2.mediums with 50GB data drives for mongo.
We use 2X ELB (one per region, we share them between the apps)
The total for these pieces is around $290 per month with reserved instance pricing.
The equivalent price of the app servers in galaxy would be around $900/month
The total for an equivalent Atlas deployment using M40’s (not sure how they compare to t2.mediums) would be around $1700/month.
In addition to this we pay for data costs for the cross region replication of the DB - this is extremely hard to estimate.
Redeployment is pretty trivial - the mongo servers basically sit untouched, so no effort there until we need to upgrade (which we have twice) it’s laborious, but not difficult.
The deployment for the app servers is OK, we have a deployment server in each region and we use MUP with a custom plugin that ensures the load balancers and target groups are configured correctly and does a rolling deployment in the primary region and a regular deployment in the secondary region - it’s very much fire and forget, I kick off the deployments and go get coffee, come back and check they’re finished.
We don’t have autoscaling, but with the cached MUP build, and our plugin, we can quickly spinup new instances to register with the load balancer.