A development in the cloud computing environment has been that of serverless computing. As we will see it is particularly useful in some cost models for hosted cloud service providers and is a likely model for many future developments.
Firstly, what is serverless computing? Contrary to the name it does not imply a computing environment with no servers. In essence, it is a layer of abstraction that sits on top of the cloud, relieving the operator and developer of the need to manage resources. Simply put it is an architecture in which the cloud provider software dynamically allocates resources, in effect acting as the server.
This provides for easier applications development since the developer can ignore server-related concerns.
Serverless Computing – The History
In reality, serverless computing has been around since the early 2000s, but only really came to the fore in 2016 with the increasing adoption of cloud technologies and the announcement by Google of their Google Cloud Functions as part of their cloud platform. Since then IBM, Microsoft and Oracle have brought products to market to enable a serverless computing environment.
Currently, the emphasis is on integrating microservices into a serverless environment, with the intention of creating a microservices architecture.
Serverless Computing – The Benefits
Serverless computing provides tangible and intangible benefits:
- Capital cost. Servers can be underutilised or idle for a time, often quite extended periods of time. By maximising server utilisation in a serverless environment, purchasers and renters can use the optimal amount of server resources in a significantly more cost-effective manner.
- It allows a Cloud Service Provider to develop an easier costing and pricing model around actual resources consumed. In cellular service terms, it is a pay-as-you-go model, rather than a contracted level of the service model.
- Scalability, or rather an elasticity. The cloud provider is responsible for scaling capacity to demand. That means there is no need for developers and operators to set up autotuning schemas to balance resources and demand. Because cloud providers scale down as easily as up, the overall effect is that of elasticity rather than just scalability.
- Development efficiencies. The programmer does not need to be concerned with such technical issues as hyperthreading or directly handing web service requests. These are handled by the cloud provider. The developer can then concentrate on developing the application rather than on ancillary support issues.
Overall, a serverless computing environment provides cost, management and development advantages.
Serverless Computing – the Challenges
There are, of course, challenges associated with the serverless environment:
- The first is performance. In a serverless environment, low priority and inactive processes are in effect shut down or hibernated. When they are required, they must be spun-up again, meaning some latency before they are fully operational. Spinning up Java Runtime, for example, can add considerably to application latency.
- Serverless computing is not suitable for all environments. Some cloud providers apply resource limitations which are not suitable for Big Data processing or high-availability environments.
- A major issue is a security:
- Traditional end-user investigative and management tools are not applicable to a serverless environment. Users cannot install and manage software at the endpoint level.
- A single security flaw can be propagated throughout the entire serverless environment.
- While some vulnerabilities are covered by the cloud provider, the serverless environment is more vulnerable because of the significantly larger number of components.
- Privacy is also a concern, particularly in a shared services environment. However, most issues can be addressed.
- Monitoring and Debugging. Being on a layer of abstraction above that of the cloud provider, much traditional monitoring and debugging functions and techniques do not work.
Serverless Computing – the Opportunities
The opportunities associated with serverless computing seem to be linked with the use of software containers in Software as a Service and Functions as Service environments. Ultimately the impetus seems to be towards a microservices or micro functions architecture, in which developers are presented with a body of, in effect APIs to carry out common functions, both technical and operational. This leaves them to concentrate on developing the best possible applications in a shorter development cycle.
Another area is that of Fog Computing where a serverless environment at the cloud edge could be used to automate management of IoT devices, particularly in a production environment, releasing resources at the network and core computing levels.
In the meantime, the opportunities for adopters of serverless computing are principally those of financial benefit in that they can use the scalability and elasticity of the serverless environment to optimise the resources they need to provide. Cloud service providers can adopt a pay-as-you-go charging model, again bringing cost benefits to customers.
We aren’t quite there yet. There are, in particular, some issues around security, privacy and management of the serverless environment. They will be resolved in time.
Serverless Computing – it’s day will come.