Serverless computing is where a cloud provider manages the allocation of machine resources dynamically and then charges on the actual amount of resources used.
The term itself is loosely defined and may mean different things to different vendors.
The server-less name derives from the fact that the developer no longer needs to own a server to run software. The software is run as required by the cloud operator and the main advantage gained is that the software developer does not need to worry about IT/server related tasks such as infrastructure management, capacity and scaleability.
The idea of serverless computing is not new. In the early days of computing (when not many companies could afford their own server) many organisations had to pay per task on a utility computing basis. However the modern idea is Function as a Service (FaaS) where the provider executes the application on a pay-as-you-go basis but does not store data.
Although a few others tried previously, the first successful serverless model was Amazon’s AWS Lambda. Initially only supporting node.js, it now supports C#, Java and Python plus others. Google (Google Cloud Functions), IBM (OpenWhisk) and Microsoft (Azure) have since offered similar services.
Advantages of Serverless Computing
Cost. You do not need to invest in hardware, IT personnel and you only pay for what you use. If no-one is using your application then there is zero cost.
No Server Management. You don’t need to have technical knowledge of server infrastructures. Systems are usually very fault tolerant and have high availability.
Scaleability. The hardware will scale up and down as is necessary to run the application. There is zero cost if your application is not running.
Disadvantages of Serverless Computing
Despite the obvious list of advantages, there can be a downside to serverless computing which you need to be aware of.
It may cost more than you expect. Not all applications are suitable for pay-as-you-go. Apps that consume many resources may turn out to be expensive to run and would be far more cost effective on your own server.
Latency affects performance. If no-one is using your application the serverless vendor will spin down your application to the point that it no longer exists on their physical server. While this is financially advantageous, the app may take a long time to reload, especially if it requires large run-time libraries or frameworks. This delay could be considerable and very undesirable.
Debugging problems. If you do have a problem then you may not have the debug and profiling tools that you find on standard servers. This situation should improve in the future.
Vendor lock-in. There’s a danger of vendor lock-in as serverless computing implementation varies between suppliers. This can lead to lack of financial and technical control.