Chapter 5. Building a Cloud Native Service
Life was simple before World War II. After that, we had systems.1
Grace Hopper, OCLC Newsletter (1987)
In this chapter, our real work finally begins.
We’ll weave together many of the materials discussed throughout Part II to create a service that will serve as the jumping-off point for the remainder of the book. As we go forward, we’ll iterate on what we begin here, adding layers of functionality with each chapter until, at the conclusion, we have ourselves a true cloud native application.
Naturally, it won’t be “production ready”—it will be missing important security features, for example—but it will provide a solid foundation for us to build upon.
But what do we build?
Let’s Build a Service!
Okay. So. We need something to build.
It should be conceptually simple, straightforward enough to implement in its most basic form, but non-trivial and amenable to scaling and distributing. Something that we can iteratively refine over the remainder of the book. I put a lot of thought into this, considering different ideas for what our application would be, but in the end the answer was obvious.
We’ll build ourselves a distributed key-value store.
What’s a Key-Value Store?
A key-value store is a kind of nonrelational database that stores data as a collection of key-value pairs. They’re very different from the better-known relational databases, like Microsoft SQL Server or PostgreSQL, that we know and love.2 Where relational databases structure ...