PREFACE
xviii
but because of my lack of experience at the time, I was struggling with when and why
to apply it.
In this book, I’ll teach you the patterns for cloud-native applications, and yes, I’ll
show you many “formulas,” but I spend far more time on the context—the when and
why of applying these patterns. In fact, the patterns aren’t generally that hard (for
example, a request retry, covered in chapter 9, is a simple concept that’s easy to imple-
ment). But choosing when to apply a pattern, and exactly how to do it—that can be
tricky. There’s so much to understand about the context in which you’ll be applying
these patterns, and frankly, that context can be complex.
What is that context, then? It’s fundamentally one of distributed systems. When I
started my career more than 30 years ago, I didn’t know many people who worked on
distributed systems, and I didn’t take a distributed systems class in college. Yes, people
were working in this space but, honestly, it was pretty niche.
Today the vast majority of software is a distributed system. Some parts of your soft-
ware are running in the browser, and other parts on a server, or dare I say, a whole
bunch of servers. Those servers could be running in your corporate data center, or
they might be in a dark data center running in Prineville, Oregon, or both. And all of
those pieces are communicating over a network, probably the internet, and likely your
software’s data is also widely distributed. Simply put, cloud-native software is a distrib-
uted system. In addition, things are in a constant state of change—servers are moving
out from under you, networks have frequent outages, even if brief, and storage
devices may go belly up with no warning—yet your software is expected to remain run-
ning. That’s a pretty challenging context.
But it’s totally tractable! My goal with this book is to help you understand this con-
text and supply you the tools to become a proficient cloud-native software architect
and developer.
I’ve never been more intellectually stimulated than I am right now. This is in large
part because the technology landscape is shifting in significant ways, and cloud-native
is at the core. I absolutely love what I do for a living and I want nothing more than for
everyone, you in particular, to enjoy writing software as much as I do. And that’s why
I’ve written this book: I want to share with you the crazy cool problems we are working
on as an industry and help you on your journey to being able to solve these problems.
I am so honored to have the opportunity to play even a small part in your flight to
the cloud.