What makes a computer into something special? The answer is the software - the apps. Without software you've got nothing but a box sitting there doing nothing. But add some software and you've got something interesting - maybe open a web browser and surf the web. Maybe open a word processor and write a book. Maybe open Photoshop and edit some photos.
Of course over the past decade or so, another option has become available. Instead of running apps on a computer that you can see and touch, the 'Public Cloud' of Amazon AWS, Google Cloud Platform and others means that anyone with an internet connection, technical skills and some patience can run apps that are accessible over the internet, running on computers that are never seen.
This comes with it's own set of problems though. Have you ever been in the middle of replying to an email only to be told that your computer needs to update? The same thing happens in the Cloud - there's a continual background task to ensure that your 'virtual computer' is running properly, is up to date, has enough disk drive space etc.
As a software developer, this is frustrating. In an ideal world, the developer would create the software and just let it light up. Developers really don't care about the computer itself as long it has the right performance, capacity and features to run the software they've created.
Another matter is cost. Imagine your business has a process that needs to run occasionally - once a week or once a month. . Perhaps you had an Excel macro that reformatted a financial report. Wouldn't it be great if this service only runs when it's needed and spends the rest of the time asleep?
A couple of years ago, Amazon AWS introduced a new way to host applications. Instead of running your own virtual servers, instead you hand the code over to Amazon who then runs it for you as and when it's needed. Google has had something similar for a while under the guise of Google App Engine and Cloud Functions, however the AWS solution, called Lambda, allows the developer to split their app into separate functions and host those functions independently. Then use other services like DynamoDB to store data, Cognito to identify and authenticate users and ignore the system that runs the code altogether.
This all sounds great, but the reality has been that setting up all the different components to work together has required brain surgeon skill levels. The idea is to ignore the platform (compute, networking etc). Instead the developer needed to become an expert in these things. If the goal is to go from written code to running app quickly and easily, there was a gap.
Fortunately I'm not the only one that recognised this as a problem, and a variety of tools popped up to take away the hassle of configuring the AWS goliath. Since I'm familiar with Python coding, I decided to have a play with Zappa and so far I've been really pleased with the results. I've been able to get some running code onto AWS very quickly and without a great deal of code complexity or change. I'll be continuing my experimentation and hope to bring some examples for public consumption soon.