Virtual machines running web server (typically Nginx or Apache) are the beating heart of the e-Commerce cloud infrastructure. Usually, CPU is a limiting factor; depending on the traffic scale and spikes, you can consider Starter, General Purpose or CPU Optimized instances. We recommend at least 2 instances for redundancy. If you are not sure, a CO-4 instance is often a good starting point.
A database also requires its own cloud instances. RAM and fast storage are key for these. For both relational databases (e.g. MySQL) and non-relational ones (think MongoDB), we recommend Memory Optimized Instances. For really large NoSQL databases, you can also consider large Storage Optimized Instances. Start with at least 2 VPS per database for redundancy, but also ensure the possibility of scaling your database cluster both horizontally and vertically to be ready for the future growth of your eCommerce.
Having additional instances to distribute incoming traffic before it hits the web server is also recommended. These load balancers or API gateways usually run low average load, but they need to be ready for sudden traffic spikes, so plan them accordingly. Starter or CPU Optimized Instances are our recommendation here with 2x S-8 with NVMe being our default.
Object Storage is the best place to store backups of all your clusters. You can also use it to offload other files like large media files (PDF manuals, instruction videos, etc) or for storing logs.
Monitoring and Logging Node
Centralizing monitoring and logging on separate instances makes managing your cloud infrastructure much easier. Tools like Prometheus, Telegraf + InfluxDB, or Elasticsearch have moderate CPU, RAM and storage requirements, so you can start with a Starter Instance and later switch to one with optimized storage, if needed. For larger setups, go with NVMe rather than SSD storage.
You will thank yourself greatly later on, if you make sure that for each type of vm you run there is custom image and cloud-init script with all the configurations. You can further enhance cloud-init possibilities using Ansible or Chef. Such a setup will come in handy when scaling up, but also in disaster recovery testing.
We recommend that you hide the inner nodes from being accessible to the public internet by using a virtual private cloud for better protection and more clear separation.