Chapter 5. Extending the Monolith

In Chapter 2, we explored building a serverless application from scratch. Greenfield development is fun, fast, and feels superefficient because there’s no legacy and historical decisions to deal with and everything is small and easy to move around. If you want to change your framework, language, or testing strategy, there’s not a whole lot you need to do before you can start to reap the rewards of your efforts.

Those of you who read the chapter titles probably know where I’m going with this: what if you don’t have a greenfield application? Most existing businesses have at least one application that can generously be described as an “heirloom”—it’s large, the architecture was set 20 years ago, and (worst of all) it’s absolutely critical to the business, so you can’t just shut it down and replace it with the latest fashion.

Fortunately, serverless is still interesting and useful for these large, gnarly applications that weren’t designed with serverless in mind. I actually want to embrace serverless as a tool for dealing with these applications. They often suffer from a bad reputation as creaky, subtle morasses with stubbornly low test coverage and achingly long push and qualification processes. My SRE friends would call them haunted graveyards:

It’s easy in this line of work to become superstitious: “This part of the system is risky—let’s not touch it.”

John Reese, Usenix SRECon 2017

This sounds like the opposite of what we want! By focusing on ...

Get Building Serverless Applications on Knative now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.