Too many cloud platforms… help…

Mark O'Kane
4 min readJan 19, 2021

Perhaps one of the biggest dilemmas faced by a new business is which platform best suits them to deploy their cloud-based application onto. This needs to be considered before you invest time and money to deploy it and may also affect how you architect your product. The wrong choice of platform can cost you money you won’t recoup or if the product fails due to the wrong choice, it will cost you business, clients and your reputation, none of which you may be able to get back. In this blog, I provide my recommendations on the most common platforms in terms of what to use, when and why.

1. Bare metal
Use Case(s): Products requiring optimal performance e.g. data analytics, AI, etc, and high IO systems such as databases or disk intensive applications. GPU can also provide additional performance capabilities for data intensive applications.

Pros: Best performance, secure, single tenant environment and full control of resources.

Cons: Can be costly compared to Virtual Servers, not readily scalable or portable and an outage can be costly if a high availability deployment is not used. Can also be hard to optimise capacity.

2. Virtual Servers
Use Case(s): Web servers and applications and products requiring quick scalability and restoration capabilities. Ideal for spinning up and down Dev/Test environments as needed.

Pros: On demand scalability but is reliant on the underlying servers having available resources. Highly portable, easy to manage and more cost efficient than other platforms. Quick and easy to set up and break down.

Cons: Not as performant as bare metal. Security and performance issues in a multi-tenant environment. Unless properly implemented, may not optimise use of the underlying available resources. May not be the best platform for large enterprises as can lead to VS sprawl and loss of control.

3. VMware
Use Case(s): For me VMware is great for running enterprise level applications which do not need to be scaled up quickly i.e. you have to plan to scale them vs. being able to quickly react to scaling demands.

Pros: Everything in the one bucket deployment. Differing OSs can be deployed onto the same underlying OS. The management interface has one look & feel regardless of where your VMware images are deployed. Small images can be spun up quickly. Very good for monolithic products.

Cons: It takes time to spin up a new VMware image if it is large in size, and the images can be very large which is not great for portability. Mostly for large scale enterprises due to its cost. Far from ideal for applications with high performance needs. Can take time to get familiar with VMware due to its complexity. Watch out for costs associated with additional SW you will need to buy e.g. vCenter.

4. Kubernetes/Containers
Use Case(s): Containers are the king of cloud at the moment and rightly so under the right conditions. Use if your product needs to be highly, quickly and automatically scalable to meet changing demands and you also want to fully utilise all resources available to you. A great platform to use if your product has a microservices architecture. I wouldn’t recommend it for a monolithic architecture application.

Pros: Your application will be automatically scaled as demand increases. Compared to VSI or VMware, container will maximise use of all available resources. Abstracts your application from the underlying platform giving a high degree of portability. Supports very quick upgrade and roll back capabilities including canary and A/B testing scenarios.
It is a highly automated environment. Security is left outside of the containers so you have full control via the platform they are running on. They support policy-based optimisation so your system will scale as needed and deploy onto the most suitable platform.

Cons: Kubernetes can take a long time to get familiar with. It provides a high degree of orchestration capabilities but with that comes the need to get to understand them all. This means if you’re starting off, it will take time to get your application set up and running. You will need to add various additional applications to support monitoring of the deployment as they don’t come with Kubernetes by default. You might want to consider alternatives which take an opinionated approach to deploying containers and include a wealth of add-ins for monitoring, security, etc… an example being Red Hat Openshift (excuse the shameless plug but I had to mention an example).
It can initially be more expensive to go down the containers route but once done, the advantages can make the expense worth it.

I’ve treated each platform separately above but there is no reason why your deployment cannot consist of a mixture of platforms e.g. virtual servers for web apps and your core application and bare metal for your database or analytics.

Think hard before you deploy your application. Does it really need VMware or containers or would good old Bare Metal and Virtual Servers meet your needs.

My next blog will cover cloud architecture including “to microservice or not to microservice”… is it a question?

--

--

Mark O'Kane

Lover of all things technology... and my pets... can't forget about my pets.