What is Serverless Computing?
Serverless computing (serverless) is a cloud computing execution model in which the cloud provider (AWS, Azure, or Google Cloud) runs the server, and dynamically manages the allocation of machine resources. Pricing is based on the actual amount of resources used to run the code or consumed by an application, rather than on pre-purchased units of capacity. These codes are usually running inside stateless containers which are triggered by events including http requests, database events, file uploads, and monitoring alerts. When the code is sent to the server, it is usually in the form of a function, hence why serverless is sometimes called Function as a Service (FaaS).
Good to Know:
The name “serverless” itself is quite deceiving. Serverless does not mean that there is no server. It isn’t decentralised, like peer to peer. It simply means that you do not rely on the server all of the time. Therefore, you can save lots of money by avoiding having to pay for servers even when they are not in use. Instead, you are only paying for the number of resources used. You also save on maintenance as you aren’t managing a server or an OS, which means you're not managing the patches and maintenance that go with it.
There are of course, downsides to serverless computing. By saving on maintenance, you are relying on a third party to fully control and manage these operations (vendor lock-in), which could be seen as a positive, but for companies who like full transparency and control, this can be challenging. Additionally, performance is not always guaranteed. Performance may suffer because code may spin down when not in use. You also cannot attach profilers or debuggers and it is not good for high-performance computing.
In addition to no server management and cost-saving benefits, serverless computing also has other plus factors including:
- Serverless architecture is easily scalable
- Easy to action quick deployments and updates
- Decreased latency as code can run closer to the end-user
As well as degraded performance, potential vendor lock-in, and a lack of suitability for high-performance computing, serverless also has the following challenges:
- Testing and Debugging becomes more difficult
- New security concerns
- Not built for long-running processes as it may actually increase costs
Who will Benefit?
Serverless Computing is suitable for developers who want to decrease their go-to-market time and build lightweight, flexible applications that can be scaled or updated quickly, and developers who want to push some or all of their application functions close to end users for reduced latency.
Want to know more?
I’m looking to host a specialist webinar on Serverless Computing in August, so if you’re keen to dive further into the world of serverless, drop me a message on LinkedIn, or follow our events page for updates and sign up links!