Originally posted on SogetiLabs: https://labs.sogeti.com/why-you-should-stop-spinning-up-vms
If I would get paid a euro for each time someone says ‘Let’s spin up a VM for that!’ or ‘We have this VM running anyway’, I would have been a rich man.
Although I do advocate reuse, stuffing many services on a machine ‘because it runs there anyway’ will cause a huge problem if there is a shift in architecture or platform. In the end all services need to be carved out and that can be a real pain in the behind. Also it does not really scale, for obvious reasons.
Yes let’s put everything in a pod/container!
A big cluster of VMs is still just infrastructure chewing away your money in the cloud. Do not forget that in many cases, a k8s cluster, Service Fabric cluster or whatever-cluster-cloud-native-you-like in the end is mostly a bunch of VMs running 24/7 for a lot of money.
We underestimate the power of simplicity
Let’s take an example. If you want to run a simple process, for example ingest some data and put it in a store, you could go full ETL/ELT. Alternatively you can leverage simple things, like Azure Functions or LogicApps. With connectors to almost all services, it is really easy and simple to ingest data using these services.
And it’s cheap too!
Azure Functions (ran in Azure) run really cheap, as the first million(!) executions are free anyway.
What about portability?
If you start out with Azure Functions on the Azure Platform, and later on need to run on a cluster like Kubernetes, you’re in luck. Azure Functions run basically anywhere so hosting them in a container or pod, should be a piece of cake. Development is also easy exactly because of the portability.
How to start?
Microsoft has done really great work in the training area. For Azure Functions, you can simply go to: Create serverless logic with Azure Functions – Learn | Microsoft Docs. This module will get you started easily.
Want to kickstart your development? Reach out and we’ll help!