The Coffee Break Statement: What should you always keep in mind when working with clouds?
The Coffee Break Question:
Nearly all big players are working with clouds and also medium sizes companies are planing to use it or are already doing it. But what are the biggest stumbling stones and dangers?
The Coffee Break Content:
First of all we should think about the cloud provider business model and their main goals. Please don’t take it upon me if I formulate very directly :-)
- You should transfer all of your data into the cloud (data in is free) and never back to your infrastructure (data out will cost money)
- You should use provider specific offerings to get into a vendor lock-in. So their own tools will have the most fency features and are always offered as the “first choice”. (vendor lock-in: you cannot exchange the service with an alternative one from a different provider)
- You should forget the services you use. A forgotten test database running 24–7 without usage? You have to pay for the ordered service.
So what is my current recommendation to work with clouds?
Try to use exchangeable services like Kubernetes as runtime for your containers, nearly all providers are offering solutions to use kubernetes clusters. BTW there are a variety of offers besides Kubernetes…
Try to use open source components like free databases (e.g. PostgreSQL), build pipelines deployed with code (e.g. Gitlab CI), avoid usage of vendor specific tools. Of course the world is not black and white, so it could be a efficient and an acceptable approach to use vendor tools for dedicated functionalities like monitoring or reporting.
What would be my desired component / feature for the future?
Definitely a universal CLI / API to use with every cloud provider and the possibility to create your own adapters for your own infrastructure. Imagine the possibility to move all of your infrastructure components from one provider to another using a few commands in the shell? Usinng the cheapest provider for you CI:CD run on the fly, based on live costs? Deploying the backup infrastructure using a different provider? A endless list of possibilities…
The Coffee Break Statement:
It is essential to have up-to-date inventory of all your deployments including financial informations — in addition — please keep an eye on possible vendor lock-ins and how they could effect your business.
How could you keep going?
Have you ever heard about Terraform? I don’t want to advertise, but the approach is exactly in the right direction. Unfortunately, the HCL (HashiCorp Configuration Language) is not universally interchangeable for the cloud providers (for example how to provide a VM because of different attributes), but the management option via versionable files is the way to go. (provide, update and destroy using a description file)