Serverless computing is a cloud computing execution model in which the cloud provider acts as the server, dynamically managing the allocation of machine resources. Pricing is based on the actual amount of resources consumed by an application, rather than on pre-purchased units of capacity.
It is a form of utility computing.
Serverless computing still requires servers, hence it is a misnomer. The name "serverless computing" is used because the server management and capacity planning decisions are completely hidden from the developer or operator. Serverless code can be used in conjunction with code deployed in traditional styles, such as microservices. Alternatively, applications can be written to be purely serverless and use no provisioned servers at all.
Serverless Is the Top-Growing Extended Cloud Service
A significant number of public cloud users are now leveraging services beyond just the basic compute, storage, and network services. Year over year, serverless was the top-growing extended cloud service with a 75 percent increase over 2017 (12 to 21 percent adoption). Container-as-a-service was the second highest growth rate at 36 percent (14 to 19 percent adoption). DBaaS SQL and DBaaS NoSQL were third and fourth (26 and 22 percent growth rates, respectively), but achieved this growth starting from a much larger base of use, with 35 and 23 percent adoption, respectively, in 2017.
WHAT ARE THE TOP USE CASES FOR SERVERLESS COMPUTE?
More and more developers are moving to serverless as a way to increase velocity and decrease monotony.
Here we describe some core use cases for serverless, though we encourage you to think beyond them. Serverless is incredibly flexible and can be used to address a wide variety of application problems. It is also extensible, making it easy to build in use cases that are not currently supported.
Auto-scaling Websites and APIs
Serverless websites and applications can be written and deployed without the front-work of setting up infrastructure. As such, it is possible to launch a fully functional site in days.
The best part is that serverless backends scale automatically with demand. No need to fear crashing when you get sudden surges of traffic.
Common Languages in use:
Serverless compute can be triggered from pub/sub topics or from event logs, giving you elastic, scalable event pipelines without the maintenance of complicated clusters.
These event streaming pipelines can power your analytics systems, update secondary data stores and caches, or feed monitoring systems.
Image and Video Manipulation
Serverless allows you to build performance-enhancing image and video services for any application. You can use serverless services to do things like dynamically resize images or change video transcoding for different target devices.
Applications are also increasingly relying on things like image recognition to improve user experience: for example, an ecommerce app that allows customers to photograph the front of their credit card instead of typing the numbers in manually.
With serverless, you can tap into the Google Vision API or Amazon Rekognition to recognise faces and images (e.g. for profile photos), or flag inappropriate content. You can automatically process and re-format user-uploaded images, or resize them into specific thumbnail dimensions.
Processing Events from SaaS
Modern applications are incredibly modular, in that they heavily utilise software from 3rd party SaaS providers (GitHub, Twilio, Auth0, Stripe) to deliver functionality. These SaaS providers don’t let you run functions on their system, but they do emit events.
Serverless lets you subscribe functions to those events, regardless of where those functions are hosted. You can use this to take action.
Pipe user data and activities to Salesforce to enhance lead flow. React to Stripe payments being processed. Automate GitHub workflows with functions running as webhook listeners. There are many, many rich possibilities here.
Individual cloud providers often don’t meet every business requirement on their own. Teams choose to utilise the strongest features from each vendor, requiring them to deploy services to multiple providers inside a single application. But the cloud providers themselves do not make it easy to do this.
Tooling abstracts away any necessary tweaking required to get functions to fit cloud vendors’ unique formats. This lets you easily deploy to any cloud provider you choose, thus maximising the efficacy of your application and utilising the best each cloud vendor has to offer.
When building an application, the first discussion is usually about which language to use. The language chosen isn’t always about what suits the project best, but rather which resources are already on-hand.
With serverless, applications can be multi-lingual. This fosters polyglot teams and enables seamless integration of services into an application that were written by specialised teams. It further prevents teams from getting locked into using the same language as their legacy software indefinitely; new languages can be used for new services and still talk to legacy services as needed.
Continuous Integration and Continuous Deployment (CI/CD)
The ability to rapidly iterate software is more important than it has ever been. CI/CD pipelines allow you to ship code in small increments, so that bug fixes and other updates can be shipped on a daily basis.
Serverless can automate many of these processes. Code checkins can trigger website builds and automatic redeploys, or PRs can trigger running automated tests to make sure code is well-tested before human review.
When you think about automation possibilities with serverless applications, it becomes easy to cut manual tasks out of your workflow.
More reading here: