Foreword
The Internet has fundamentally changed the way that we interact with computers. Prior to the 21st century, if you wanted to interact with a computer, the computer was usually relatively near by (in the case of time-shared and terminal-based mainframes) or right in front of you (in the case of a personal computer).
Something changed, however, around the turn of the millennium. High-bandwidth, low-latency internet connections became more common. Surfaces with which to access the Internet, such as laptops, tablets, phones, and watches, began enabling humans around the world to remain as connected to the digital world as they would like.
At the same time, advances in processors, memory, storage, and network have enabled facilities densely packed with servers to pop up around the globe. Not only that, many of these facilities rent out their hardware for anyone to use, for a price. All it takes is an Internet connection, a good idea, and a small amount of capital to launch the next multi-billion dollar industry.
Unfortunately, the most successful practices, design patterns, and best known methods often remain elusive to all but a select set of engineers and scientists at the biggest institutions. Even if someone wanted to recreate and explore some of the same challenges, how would they find or fund the sheer number of machines required to do so?
This book is for anyone who wants to learn how to design, build, and operate computer systems. Whether you have an idea that you want to bring to life, or have an existing system that you want to get running in the best shape possible, or if you just want to learn what goes on behind the scenes in a multi-million-server infrastructure — there is something in this book for you.
And while the field of computer systems is constantly evolving, I hope to share with you some of the techniques that have stood the test of time — battle-hardened through many millions of machine-years of operation. At the same time, I hope to pique your curiosity in some of the newer emerging fields, so that perhaps your own ideas may help advance these fields.
I believe that we are at the precipice of a new paradigm of computing — planetary scale computing. Just as we had to rethink what it meant to build and operate computers when moving from mainframes to personal computers and from personal computers to warehouse-scale computers, so too will we need to revisit our assumptions about computers that span the globe.
My goal is to paint a picture of what is possible and how to achieve it based on my own experience and the experience of others. I hope to expand the realm of possibility in your mind so that you do not settle for the wrong solution to a problem. I am excited for you to join me on this journey. Onward!
— Justin J. Meza, San Francisco, 2024