Serverless is the future of DevOps – or so I foresee. The upcoming wave of Serverless implementation was my greatest takeaway from the DevOps Talks Conference, Melbourne. Throughout the event, there were multiple sessions which explained the Serverless concept both beautifully and in an easy to understand fashion.
Not only have a handful of organisations already put Serverless systems into action (and the market), but the industry can be forecast to grow exponentially beyond this point.
What is Serverless you ask? Serverless computing is a cloud-computing execution model, in which the cloud provider dynamically manages the allocation of machine resources (infrastructure). Here, the pricing is based on the actual amount of resources consumed by customer application, rather than on pre-purchased units of capacity. This is turn also assists consumers select which cloud-computing provider to do business with.
There are multiple shades, or in other words different types, of Serverless:
Compute. As an end user, these programs provide IT services to consumers. Tools include:
- AWS Lambda
- Azure Functions
- Google Cloud Functions
Database. Here data is held back-end for a consumer in a cloud-provider. Tools include:
Containers. Holders of everything that make an application work, such as an “engine”, correct database, the right operating system, etc. Tools include:
- Azure Container Service
PAAS (Platform as a service): A service that says “We will take care of everything”. Tools include:
I attended the conference with a few of my coworkers, including Krishna PCK.
In brief, there are servers but end users do not see them – nor do they need to.
Through the use of Serverless systems, businesses and organisations alike can see huge benefits such as:
Reduced time to market and quicker software release.
Serverless systems works well with agile methodology and allow teams to focus on code, testing, deployment, automation, and releases. It works well as we are focusing on the core development, rather than on the infrastructure maintenance.
Lower operational and development costs.
As Infrastructure is managed by a Cloud provider, operational cost is lowered and developers no longer need to worry about the operations themselves. Paying only for what you need as a business, means that costs will be lowered.
A smaller cost to scale.
As Serverless cloud-computing automatically scales, there is no longer a need for developers to implement code to scale and administrators do not need to upgrade existing servers or add additional ones.
Reduces the complexity of software.
As Cloud providers manage the server(s), complexity can then be reduced in business software. It is important to note, however, that a business requires cloud expertise in order to reduce the complexity appropriately without infact generating issues. Providers of DevOps can offer this or if properly equipped can be done in-house.
Shiva Narayanaswamy. Source: DevOps Talks Conference
“Look ma, no Servers! Now how are we going to feed ourselves, son ?!”, a creatively titled talk by Shiva Narayanaswamy, discussed Lambda functions at length at the conference.
AWS Lambda is a Serverless compute service that runs code in response to events, as well as automatically manages the underlying compute resources (No Stress of Infrastructure).
With Lambda, code can be run for virtually any type of application or backend service – all with zero administration. A business need only upload their code and Lambda will take care of everything required to run and scale it with high availability.
Code can set up to automatically trigger from other AWS services or can be done directly from any web or mobile application.
Source: AWS Lambda
Scott Thomson from Google Cloud Platform also explained Serverless architecture and the benefits of Serverless and NoOps in his talk “Serverless, NoOps and DevOps is all marketing bunkus!”. GCP’s Serverless application hosting options are Cloud Functions and App Engine. Both services abstract the need to manage any servers, and will dynamically scale as needed.
Cloud Function is for smaller units of code that are triggered by cloud events or HTTP requests and are only billed per request, which can result in savings for applications with low or uneven traffic patterns. App Engine is for larger units of code (e.g. a website) that are triggered by HTTP or cloud events.
For customers that need more control, Kubernetes Engine and Compute Engine are lower-level services that require explicit management of servers. Kubernetes Engine does offload some of the server management by utilizing Kubernetes; however there is still some management of the underlying compute infrastructure, and requires effort on the customer’s operations and development team to automate scaling.
As we move into an Agile driven world, Serverless becomes more and more integral in delivery to enterprise. It’s important as businesses can spend more time on pressing and challenging work, as well as future iterations, rather than just worrying about infrastructure. This means that as an expert myself I can focus on productivity in my work and delivering polished software to the client – which is exciting!
The event gave me a snapshot of the future of DevOps and the future ahead. Furthermore, it also gave me a wake up call that everyone should be doing additional things in order to learn and keep up!