Blog

Agnostic Technology Architecture - Don't Get Hand-Cuffed to the Cloud

, John Comber

Introduction

All the large cloud vendors (AWS, Google, Microsoft) have their own implementations of serverless runtime technology. For example, for serverless function execution, AWS provides Lambda Functions, Google has the Google Run environment and Microsoft offers Azure Functions. There are also 'low-code' options (e.g. Microsoft Logic Apps).

Advantages

The major benefit of using the cloud for compute is when executing workflows with 'spiky' demand. The vendors provide the ability to easily scale based on any number of factors.

The cost effectiveness of using the cloud for compute tasks isn't so clear cut when executing workflows with a reasonably constant demand.

Disadvantages

The major disadvantage of using a specific vendors serverless cloud execution environment is being hand-cuffed to that technology - unless you want to go through the pain of refactoring the IaC to port the code to an alternate vendor or to bring it on premises. This is really hard / nigh on impossible if you've invested in a low-code offering.

I've worked with companies who have chosen the low-code route because it's easier for first and second line support people to maintain - rather than having to staff a dedicated development team. However, there have been instances where the limits of the technology have only been realised once a significant investment in development has already taken place.

Recommendations

If you need a highly scalable and portable execution platform then I'd recommend containerisation. All the major cloud vendors have container execution offerings and, if necessary, containers can also be hosted on premises. If you get a significant cloud billing shock then you're not tied to a specific vendor's technology.

The code executed by the container can be developed in whatever language you'd like (JS on Node, C# on .Net, etc.) and the runtime environment (e.g. Docker / Kubernetes) can be configured to scale as required.