Browse Chapters

Serverless Doesn’t Mean Limited

A common misconception about serverless is that they are only useful for simple tasks. This is not the case; serverless doesn’t mean limited.

While serverless functions tend to be conceptually simpler, that does not mean they are restricted or limited. A single serverless function (as part of a serverless app) may indeed be quite powerful.

Recall that a serverless function is a design pattern for writing applications and that a serverless app is composed of one or more serverless functions.

The most typical kind of serverless function is an HTTP request handler. The function is started for each inbound request. The function is then executed to completion and optionally returns an HTTP response.

Most web services can be written using this model, meaning that most web services can be written as serverless functions. As we saw in the previous chapter, even while serverless functions are stateless, state can easily be preserved via services like Fermyon Cloud’s Key/Value storage.

Let’s return to the architecture of the serverless app that powers Fermyon.com, Bartholomew.

Bartholomew is a dynamic content management system (as opposed to a static site generator like Hugo or Jekyll). It supports dynamically rendered content, templates, server-side scripting, and embedded shortcodes. Yet Bartholomew is entirely serverless in design. As you are reading this guide, each page you load is executing the Bartholomew serverless app, which is executing one or more serverless functions (in this case, once for the CMS, and potentially multiple times for assets like images, CSS, or JS files).

Bartholomew is just one illustration of how sophisticated applications can be built as serverless functions. Let’s move on to more examples.

Browse Chapters

Quickstart Your Serveless Apps with Spin

Get Started