Building Reliable Services in Unreliable Environments
Matthew A. Titmus
Cloud_Native#
Go#
Learn how to use Go's strengths to develop services that are scalable and resilient even in an unpredictable environment. With this book's expanded second edition, Go developers will explore the composition and construction of cloud native applications, from lower-level Go features and mid-level patterns to high-level architectural considerations.
Each chapter in this new edition builds on the lessons of the previous chapter, taking intermediate to advanced developers through Go to construct a simple but fully featured distributed key-value store. You'll learn about Go generics, dependability and reliability, memory leaks, and message-oriented middleware. New chapters on security and distributed state delve into critical aspects of developing secure distributed cloud native applications.
With this book you will:
Table of Contents
Part I. Going Cloud Native
Chapter 1. What Is a "Cloud Native" Application?
Chapter 2. Why Go Rules the Cloud Native World
Part II. Cloud Native Go Constructs
Chapter 3. Go Language Foundations
Chapter 4. Cloud Native Patterns
Chapter 5. Building a Cloud Native Service
Part Ill. The Cloud Native Attributes
Chapter 6. Cloud Native Design Principles
Chapter 7. Scalability
Chapter 8. Loose Coupling
Chapter 9. Resilience
Chapter 10. Manageability
Chapter 11. Observability
Chapter 12. Security
Chapter 13. Distributed State
Matthew Titmus is a seasoned veteran of the software development industry. Since teaching himself to build virtual worlds in LPC, he's earned a surprisingly-relevant degree in molecular biology, written tools to analyze terabyte-sized datasets at a high energy physics laboratory, developed an early web development framework from scratch, wielded distributed computing techniques to analyze cancer genomes, and pioneered machine learning techniques for linked data.
He was an early adopter and advocate of both cloud native technologies in general and the Go language in particular. For the past several years he has specialized in helping companies migrate monolithic applications into a containerized, cloud native world, allowing them to transform the way their services are developed, deployed, and managed. He is passionate about what it takes to make a system production quality, and has spent a lot of time thinking about and implementing strategies for observing and orchestrating distributed systems.