Updated: Mar 2, 2021
You may be new to everything that is ‘the cloud.’ However, that shouldn’t stop you from deploying your website, application, or platform to a public or private cloud server. It’s true that the cloud can be intimidating. There is cloud terminology such as vCPU, Cores, RAM, GPU, IOPS, throughput, and bandwidth. Where do you begin?
In this article, I’ll examine the basics of configuring a cloud server and how to determine your requirements. We will run through some hypothetical examples of applications, traffic, and the corresponding cloud server requirements. One of the beautiful things about the cloud is that it is highly scalable. This means that you can start small and scale as need on-demand.
Where to Start?
It’s common to ask questions when considering a cloud deployment or migration. How many vCPUs per server are required for my application? How much RAM? How much storage do I need?
If you ask a cloud provider or hosting company, they may tell you that the only surefire way to build out your cloud requirements is to deploy your application to a server and run some load testing to see if you can get to a certain amount of free overhead on the server. They might also say that no one else can answer that question as every application is different. If it’s your application, only you can test it.
Is that true? Yes and no. It does make sense to run applications on local hardware before deploying to the cloud. However, that’s not always the case and as mentioned above the cloud is highly scalable. You have to start somewhere right? Not to mention that you can use caching, load balancers, and other cloud services to alleviate some of the load on cloud servers and storage.
Define Your Application Requirements
It’s not too difficult to calculate the size of your application. This is true if your application is running on a physical server. It’s also true if your application hasn’t launched yet. You can look at the overall size of the application as well as the anticipated traffic, the number of repeat visitors, and page views per visitor.
The best way to look at how to determine your cloud server requirements is to run a hypothetical example. For this example, let’s assume that you have a brand new application that is not running on a server. You have built it locally on your machine.
1) Estimate Your Bandwidth Requirements
You can use tools like Solarwinds Pingdom to test your application if it is live in production. You can also use tools like Calculator.net to calculate your monthly bandwidth usage and speed requirements.
What information do you need about your application to calculate monthly bandwidth usage and speed requirements? You will need the following or at least make some assumptions.
Monthly Data Transfer:
Average Monthly Visitors
Average Number of Page Views Per Visitor
Average Monthly Page Views
Average Page Size
Redundant Factor (Between 1.3 and 1.8)
For this example, let’s assume that you will reach 500,000 visits per month. Each visitor will view an average of four pages per visitor. The data transfer will be an average of 2 Megabytes (MB) per page.
Keep in mind that search engine bots can have an impact on your data transfer. Bots often consume more data than typical users based on the fact that they visit most or all of your indexable pages on your application.
~2,000,000 Page Views/Month
~2 Megabytes (MB)
1.8 Redundant Factor
= 4,000 GB/Month (Data Transfer/Month)
Bandwidth Speed Requirements
Your bandwidth speed requirements are based on the amount of data transfer per month. That is the number we calculated above. Again, you will want to use the Calculator.net tool to input monthly usage in Bytes (B), Kilobytes (KB), Megabytes (MB), Gigabytes (GB), or Terabytes (TB). This will give you the equivalent of bandwidth required in Megabits/s (Mbps) or Gigabits/s (Gbps). See the example above using data transfer that we already calculated.
4,000 GB (Data Transfer/Month)
12.17 Mbps (Internet Speed Requirement)
The 12.17 is the bandwidth speed requirements needed to run your application. It does not include other applications or workloads running on your server. It does not account for traffic spikes. This is used as a simple baseline only. You can purchase burstable bandwidth from most cloud and hosting providers. You could also purchase additional bandwidth as a buffer for traffic spikes such as increase the baseline by 30%, 40%, or 50% to account for spikes.
2) Know Your IP Addresses Requirements
Most cloud providers offer IP addresses with the purchase and deployment of cloud servers or storage. IP addresses may also be provided with cloud-based databases and other services. The question becomes, how many IP addresses are needed for your cloud environment? More specifically, how many public IP addresses and how many private IPs?
Public vs. Private IP Addresses
Why do you need IP addresses for your cloud environment? You need public IP addresses for your cloud servers to communicate with the internet. This is typically done using a Network Address Translation (NAT) Gateway or NAT Instance. You can also use a Virtual Private Gateway (VGW).
Private IP addresses are used between cloud servers and other cloud services or infrastructure within a Virtual Private Cloud (VPC). Private IP can be used to connect cloud endpoints within VPC subnets.
IPv4 vs. IPv6 Addresses
IP addresses are part of a full network stack which includes the application layer (HTTP, HTTPS, FTP, POP3, SMTP), transport (TCP, UDP), networking (IP, ICMP), and datalink (Ethernet, ARP).
IPv4 is a widely used protocol in data communication over several kinds of networks. IPv4 addresses are becoming limited as a result of the growing demand for IP addresses for devices. IP Addresses have a 32-bit number whereas IPv6 has a 128-bit number. This makes a substantial difference in the number of available IP addresses. IPv4 has ~4,294,967,296 addresses vs. IPv6 which has ~340,282,366,920,938,463,374,607,431,768,211,456 addresses.
So, which version of IP addresses are better for cloud computing? IPv4 is the better choice as of now as there is not universal support for IPv6 yet. That could change fairly quickly. You may receive both IPv4 and IPv6 addresses with your cloud instances.
How Many IP Addresses Do You Need?
As mentioned previously, you receive at least two IP addresses. However, as your cloud environment grows and you build out a virtual private cloud, you will want to make sure that you have enough IP addresses for the future. Take that into consideration when selecting how many IP addresses are required. Most of the time, cloud service providers will allow you to purchase additional IPv4 and IPv6 addresses. You can also bring your own IP addresses.
3) Estimate Your Compute Requirements
What is compute? Compute, also known as computing power, refers to CPU and RAM performance. In cloud computing, there are terms like vCPU and Cores. We will discuss those briefly as well. For more information, visitor our past blog on the top 20 cloud terminology and definitions.
Determine Number of Virtual Machines (VMs)
There are no strict guidelines on the number of VMs that you can run on a cloud server. However, some recommendations include using about 15 VMs per instance. You could also go to 48 per instance or even as high as 150 to 200 VMs per instance. It really depends on the server. The risk of placing too many VMs on a cloud server instance is that if the server goes down, you could lose all of your VMs at once.
It really comes down to high-availability (HA) architecture. The number of VMs are really dependent on the underlying hypervisor and hardware.
How do you size your VM appropriately? One thing is for sure. Adding unnecessary vCPUs can hurt your consolidation ratio. Overprovisioning vCPUs can cause ready time (the time a vCPU has to wait for the physical CPU) to spike and hurt performance.
You have to look at the performance metrics of the workload. As a rule of thumb, if the application is no multi-threaded and peak CPU demand is below 3,000MHz, provision a single vCPU.
Determine the Amount of RAM
Right-sizing your RAM requirements is also a balancing act. Too much or too little can force contention. Due to the semi-persistent nature of memory, it’s more complicated than CPUs to size your cloud server instances appropriately.
You must understand active memory versus allocated memory, boot time behavior of the OS, and paging. Active memory is what the guest OS and application actually uses. Allocated memory is the amount of physical RAM that the guest requests from the hypervisor.
Standard memory for cloud servers should be somewhere between 8 GiB and 64 GiB. This is generally suitable for web servers, gaming servers, application servers, midsized data stores, and containerized microservices. This also includes production and test dev environments.
When provisioning memory, it’s better to err on the side of caution and have too much rather than too little. Most providers offer a variety of cloud server configurations such as memory-optimized which are best suited for fast performance of workloads that process data sets in memory. This includes everything from 16 GiB to 24,576 GiB.
Determine Volume Requirements
When calculating the total amount of storage capacity required for your cloud server, you should start by calculating the amount of disk space required by your Operating System, control panel, application, database, email, security, and other tools.
The total disk space should be the sum of all of the different data that you store on that virtual hard disk in the cloud. Make sure that the disk usage never exceeds 85% of the available space. This means always leaving a minimum of 15% of free disk space on the hard drive.