The fundamental theme is to get servers out of the path of software development and focus on building features unique to your product or solution. However, there are several competing cloud providers and a rich marketplace of third-party services, so it can be difficult to navigate when trying to get started. There are also several tiers of serverless offerings, ranging from the DIY to the fully-serviced platforms.
If you are already familiar with this concept, and want to know why you should care about it, Read more here.
Functions as a Service (FaaS)
In its lowest atomic form, we have Functions as a Service, or FaaS. In this environment, we deploy functions to a provider, AWS Lambda for example, and pay per execution and per compute time (measured in 100ms increments + tiers of RAM). Google has Cloud Functions, Microsoft has Azure Functions, IBM has OpenWhisk, and there are several smaller vendors who focus solely on FaaS offerings. The easiest path to deployment is to write your functions in JavaScript using the Node.js runtime, but you can also use Python/.NET/Java (experience may vary between provider).
On top of manually invoking the function via a CLI (command-line tool), the cloud providers let you trigger your functions via events from their other services: respond to file storage or database events, handle HTTP requests via an API gateway, or handle items as they pass in/out of a queue. This allows the architecture to focus on tackling the interesting problems, and leave the IT/scaling/glue problems to the various cloud providers.
Service-as-a-Service
You are likely already familiar with some Service-as-a-Service offerings; SendGrid and Twilio are commonly used by many applications to handle transactional emails or send/receive SMS. Despite being free, Google Analytics is a great example of SaaS with its web-traffic analysis tools. This list goes on and on: authentication services, error logging, payment gateway, media management, and full-text search engines. Got the idea? Plug into an existing API, pay some money, and check off a task from your backlog. It is also worth pointing out that these products are much more robust and feature-rich than something you will be able to build yourself.
Platform-as-a-Service (PaaS) & Backend-as-a-Service (BaaS)
The definitions start to get blurry between Platform-as-a-Service and Backend-as-a-Service, but in this context, let’s just treat them as one. In this upper tier, you can get a single facade with many FaaS/SaaS offerings baked into the product. This approach tends to be a bit pricier than the first two, but it makes up for it with convenience. The one-stop-shop can be a bit overwhelming at first as you try to figure it out the XYZ way but also a bit freeing when many of your application’s core components have already been solved. If you are working on a greenfield project, take a look at PaaS/BaaS especially if you are making a mobile application.
As with all things in technology, there is no perfect or right answer to which X-as-a-Service direction is better. Personally, I prefer combining FaaS + SaaS to rapidly create my projects, but I am a developer at heart and enjoy designing cost-efficient scalable applications.