Vertical Scaling of your Operation
By vertical scaling, I mean the optimal resource requirement per server. For example, if you need something small like 1 to 8 vCPUs and a 1 to 32 GB of memory, then you can consider any mainstream cloud hosting provider like DigitalOcean, Azure or AWS. This is by far the most common option, and probably something that you want. These services can scale to host anything from your hobby projects and personal blogs to the complete stack of a typical DevOps pipeline.
For larger requirements, like upwards of 128GB of memory, it makes more economical sense to rent a dedicated server from vendors like OVH. The upfront cost might be higher in the later case, but over longer periods of time it is significantly cheaper.
You might want something completely managed by a cloud server provider including FaaS options like AWS Lambda and Azure Functions, or PaaS options like Google Cloud Platform. However, these don’t strictly count as a Linux environment, because you are restricted in the environment the vendor offers to you, rather than having your own Linux environment with root privileges, etc.
Horizontal scalability simply refers to the fact that how can you scale your software across multiple servers. In this context, it also refers to the outreach that your cloud service provider has to offer. Do they have data centers close to where your users might be? If you plan on hosting something like a VPN, then the question is different. Do they have data centers in regions which respect user privacy.
If you think that your user base will grow, then you need to plan ahead for this.
When it comes to servers, automation is the name of the game. These are not devices that are meant to be interacted by you, as an owner. They should quietly run the application they are supposed to run and get of your way.
With that in mind, a lot of services offer a whole array of services starting from cloud-init to an HTTP API with which you can remotely spin up servers and configure them. If your team is familiar with the API of one vendor and not the other, then it is better to stick to the familiar one rather than re-writing your entire tool-set for another vendor.
Once you have a set of scripts automating everything for you, it will save you hundreds of human hours in the long run. And you will never have to worry about a server being misconfigured because of human error. Visit the API documentation pages for all the vendors that you are considering, before making a decision.
To take full advantage of the open source software that comes with Linux you need to make sure that your server provider offers a certain minimum standard of features.
In case of cloud hosted VMs, these may include backups and snapshots, block devices, object store, floating IPs, managed firewall, private networking, DNS server and a wide range of Linux distros. In case of a dedicated server the features are more hardware specific like the availability of IPMI, remote KVM and a useful management interface like OVH’s vRack.
Monitoring your server is another crucial factor to take into account when renting a Linux server. What level of monitoring does the platform allow. Of course, there are bonus points for alerting as well.
Services like Cloud Log from Amazon are more and more commonplace across all vendors. They give you a very fine-grained glimpse of your systems health and availability. Third party services have also popped up to help you take advantage of this. You just sign up for them and they tap into the metrics and offer them to you in terms of intuitive graphs and alerts.
Support and Community
With Linux, disaster is not a matter of “If it happens” but “When it happens”. When you inevitably run into an issue, you need to make sure that the vendor offers affordable and timely support to get you out of the mess. Moreover, when things go wrong on your cloud provider’s end you should get an immediate alert about it. You will be thankful for a communicative vendor when things go wrong. On the other hand, lack of communication can lead to frustration and anxiety.
If support contracts are expensive for you, consider opting for a vendor around which there is an active community of developers and operators. People who have, probably, solved the problem that you are facing or who can point you in the right direction. If you adopt an arcane, and poorly documented technology, you are out on your own. This is true with any technology, in general, but especially so with platforms that are controlled by another party.
Standards like HIPAA and PCI are a rabbit-hole of their own. Whether or not you see any merit in them, is a different matter. The plain fact of the matter is that if you are designing products that need to meet certain legal standards, then you better dot your ‘i’s and cross your ‘t’s.
Consult with the experts and talk to your vendor about it. See, if their infrastructure meets the various standards you need to comply with before making a business decision.
Thanks to the ever growing rate of open source projects, renting a Linux server across any cloud platform is not much of a technical hinderance. The decision really boils down to economics, geo-location, legalities and personal preference.
On that note, I hope you found the above factors conducive to thought. I hope that it will help you select your perfect platform.