I find this to be a confusing term. The definition of serverless computing is that it doesn’t mean there is no computing infrastructure – it’s just that the “consumers” don’t have to think about them. Sounds great – I don’t have to think about under/over capacity, scale, fault tolerant etc.
Really – how is that?
That means it does depend on the application that is being deployed… This also means that the “audience” for this is very much the developer community. This goes back to the slide we see many times in terms of the “evolution of compute services” i.e. from physical deployments, to virtualisation, to platform as a service, to containers and now serverless – this is part of that journey.
SaaS and PaaS are types of serverless computing as it abstracts the consumer from the IaaS layer.
The application in a serverless context is going to be based on a micro-services architecture i.e. a set of decomposed modules that are both small and independent. This sounds remarkably similar to what we hear from the Container World…?
There are therefore a lot of similarities between a PaaS and serverless in terms of operational workload and developer productivity. The difference though is the behaviour of the workload for example:
– PaaS – meant for the 12 factor apps– this is the methodology for building software-as-a-service application
– Serverless – meant for jobs/functions/tasks
And the difference between an app and a job? Some notable differences being:
App – pushed to a live runtime, tends to be long running, scales via elastic instances/containers, distribute via load balancer
Job – uploaded to a ready to execute state, has a discrete start and finish, scales via concurrent processes , distributes via message queue. This code or function is developed and stored in the cloud in proximity to a related service. They are then triggered by events and APIs that execute the code using metered server resources, allocated, scheduled and maintained by the cloud provider. The resources have no persistent ownership or burden of management to the developer or organisation, and the consumer (code ‘owner’) is charged for the resources consumed and nothing else.
Going to iron.io – they have a great quote:
The Architect’s Dream: Reliable, Scalable and on Any Cloud
Iron.io’s microservices architecture, delivered via Docker containers, enables the world’s most innovative companies to transform large data sets into job processing that drives their revenue.
Conclusion: serverless is the next generation of deploying apps into Cloud Infrastructures – it doesn’t necessarily replace developers using a PaaS/Containers but allows a greater level of abstraction from both the infrastructure and the application itself. It is also worth noting (although obvious I hope) that not all apps can be deployed in this way. As always, the best way to learn more about it is to try it –
Where can you see it:
This post first appeared in Neil’s blog, Neil’s Thoughts.
Neil Fagan — Distinguished Architect
Neil Fagan is CTO of the UK Government Security and Intelligence Account in Global Infrastructure Services and chair of CSC’s Architecture & Engineering Community. He is an enterprise architecture expert, leading teams of architects who work on solutions from initial concept through delivery and support. He is co-creator of the CSC Global Architecture (A10) Capability Framework and created the Architecture Best Practice course at CSC, delivering it to hundreds of architects. He has received the Silver President’s Award twice.
See Neil’s full bio.