Cloud computing is the new normal, businesses no longer wish to run or maintain their infrastructure and the cloud’s elastic capability means they only pay for what they need.
As cloud adoption and trust grows, so does the breadth of services available for consumption. There are well-known services such as Amazon’s Elastic Compute Cloud (EC2) for compute, Simple Storage Service (S3) for storage and the eponymous Amazon Relational Database Service. Microsoft have their equivalents to these services in Azure. Some solutions offered through the cloud are decidedly more niche – the Elastic Transcoder for transcoding videos on demand for example and there are a huge number of SaaS solutions that can replace many common business applications.
How can we improve on Infrastructure as a Service?
IaaS is probably the most flexible way of running compute in the cloud. With complete control over your virtual machine, you can install exactly the software you require and set up the virtual machine precisely how you wish. However, there are significant overheads involved, both in its set-up and ongoing operation; even with the adoption of infrastructure as code and other deployment services such as Chef.
With IaaS you have a number of decisions to make at the outset. What size and type of machine do you require? What resources does it need? When it’s up and running, the virtual machines need to be monitored and maintained. With finite control over everything from the operating system to memory, CPU and storage available it adds complexity, especially when all you want to do is run your application in the cloud.
There have been moves towards simplifying the infrastructure – Containerisation for example. Containerisation is a lightweight alternative to full machine virtualisation where the application is encapsulated in a container. This container-led approach cuts down a huge amount of duplication and wasted resources because multiple containers can run on a single operating system, in their own securely-segregated area, as opposed to virtualisation which requires each virtual machine to have its own operating system.
Simplification is key
The cloud presents an opportunity to rearchitect an application. It is no longer a case of plan, develop, test, release in a so-called waterfall approach. Developers are now looking for continuous improvement – agility. However technical debt, the technology deficit that can accrue in software development when businesses focus on quick wins over long-term strategy, is difficult to pay off. The cloud offers businesses a blank sheet of paper to start afresh.
There is now the opportunity with the cloud to go one step further and remove the management of servers entirely from the equation – it’s call serverless computing or ‘Function as a Service’ and it’s gaining a following.
What is serverless computing?
Of course, it’s a misnomer that no servers are involved. What serverless computing provides is another layer of abstraction on top of traditional cloud infrastructure. Developers no longer need to worry about servers – virtual or physical. Instead, serverless computing allows you to run code directly in the cloud, without provisioning or managing servers.
It is often described as event-based architecture. An event initiates a function – a piece of code – that responds to the event. The event could be a click of a button on your website, machine-to-machine communication or third-party call your application. It means you only pay for the execution time of your code it and it removes all the overheads of an Infrastructure as a Services (IaaS) cloud setup.
What are the benefits of serverless?
There are a number of benefits to this approach:
You only pay when code is executing, down to the millisecond, you do not pay for servers lying idle
The functions that you run will automatically scale up, there are no dashboards to manage
Administration is automated, you do not have to update underlying software when a patch is available
Deployment of new software is instantaneous
On the flip-side, as businesses are billed for execution time, code optimisation is crucial. It is a completely new and different way of thinking about the cloud; the well-established cloud concept of pay-as-you-go evolves into pay-per-use.
Serverless for everything?
Given the right use cases, a serverless approach can be a very cost effective way of operating in the cloud. Examples might include cases where developers handle tasks that respond to events for instance, such as in the growing area of the Internet of Things. Another use case is a serverless back end to a mobile client, such as an app. There are still some challenges to complete serverless operation, as the tools and techniques used to manage and control play catch-up, but the reasons to not consider serverless are rapidly reducing.
With many companies adopting a microservices-based architecture, there is the additional opportunity that the serverless approach can replace one or many of these microservices modules.
Serverless – another great reason to consider the cloud
The cloud now offers so many variants and services that it has something to offer every business. In fact, it is no longer really about one particular cloud solution – the cloud now touches many aspects of the business from simple file storage through to CRM or ERP systems and on to core business infrastructure.
Serverless computing – in the right scenario and with the right support – is another option that could be perfect for many businesses and a great reason to consider the cloud.