What Is Serverless Computing?
Serverless computing is a cloud execution model in which a cloud provider dynamically allocates only the computing resources and storage needed to run specific code, and then charges users. Of course, there are still servers involved, but provisioning and maintenance are entirely handled by the provider. From the perspective of teams writing and deploying code, Chris Munns, serverless advocate at Amazon, said at a 2017 conference: “There are no servers to manage or provision. This does not include bare metal, virtual, or containers. Anything that has to do with host management, host patching, or handling at the operating system level is a serverless world.”
Advantages And Disadvantages Of Serverless Computing
From that description, it should be clear that the two biggest benefits of serverless computing are: Developers can focus on the business goals of the code they write rather than infrastructure issues. Rather than buying physical hardware or leasing cloud instances that are mostly idle, organizations only pay for the compute resources they actually use in a very granular way.
Serverless Vendors: Google Cloud Functions, Azure Functions, And AWS Lambda
Modern serverless computing began in 2014 with the launch of AWS Lambda, Amazon’s cloud service-based platform. Following Azure Functions in 2016, Microsoft has finally reached production status with Google Cloud Functions, which has been in beta since 2017. The three services differ slightly in their limitations, strengths, supported languages, and how they work. Rohit Akiwatkar gives an excellent and detailed account of the differences between the three. He is also running IBM Cloud Functions, which is based on the open source Apache OpenWhisk platform.
Of all the serverless computing platforms, AWS Lambda stands out the most and has taken the most time to evolve and mature. InfoWorld covers updates and new features added to AWS Lambda over the past year.
As is the case with many software realms, the serverless world has seen the evolution of a software stack that brings together the various components needed to build serverless applications. Each stack consists of a programming language in which to write code, an application framework that provides structure for the code, and a set of triggers that the platform will understand and use to initiate code execution.