What do Docker, Kubernetes, and Prometheus have in common? All of these cloud native technologies are written in the Go programming language. This practical book shows you how to use Go's strengths to develop cloud native services that are scalable and resilient, even in an unpredictable environment. You'll explore the composition and construction of these applications, from lower-level features of Go to mid-level design patterns to high-level architectural considerations.
Each chapter builds on the lessons of the last, walking intermediate to advanced developers through Go to construct a simple but fully featured distributed key-value store. You'll learn best practices for adopting Go as your development language for solving cloud native management and deployment issues.
- Learn how cloud native applications differ from other software architectures
- Understand how Go can solve the challenges of designing scalable distributed services
- Leverage Go's lower-level features, such as channels and goroutines, to implement a reliable cloud native service
- Explore what "service reliability" is and what it has to do with cloud native
- Apply a variety of patterns, abstractions, and tooling to build and manage complex distributed systems
Table of contents
- I. Going Cloud Native
- 1. What Is a “Cloud Native” Application?
- 2. Why Go Rules the Cloud Native World
- II. Cloud Native Go Constructs
3. Go Language Foundations
- Basic Data Types
- Container Types: Arrays, Slices, and Maps
- Control Structures
- Error Handling
- Putting the Fun in Functions: Variadics and Closures
- Structs, Methods, and Interfaces
- The Good Stuff: Concurrency
4. Cloud Native Patterns
- The Context Package
- Layout of this Chapter
- Stability Patterns
- Concurrency Patterns
5. Building a Cloud Native Service
- Let’s Build a Service!
- Generation 0: The Core Functionality
- Generation 1: The Monolith
- Generation 2: Persisting Resource State
- Generation 3: Implementing Transport Layer Security
- Containerizing Your Key-Value Store
- III. The Cloud Native Attributes
6. It’s All About Dependability
- What’s the Point of Cloud Native?
- It’s All About Dependability
- What Is Dependability and Why Is It So Important?
- Achieving Dependability
- The Continuing Relevance of the Twelve-Factor App
- What Is Scalability?
- The Four Common Bottlenecks
- State and Statelessness
- Scaling Postponed: Efficiency
- Service Architectures
8. Loose Coupling
- Tight Coupling
- Communications Between Services
- Request-Response Messaging
- Loose Coupling Local Resources with Plug-ins
- Hexagonal Architecture
- Keeping on Ticking: Why Resilience Matters
- What Does It Mean for a System to Fail?
- Cascading Failures
- Play It Again: Retrying Requests
- Service Redundancy
- Healthy Health Checks
- What Is Manageability and Why Should I Care?
- Configuring Your Application
- Feature Management with Feature Flags
- What Is Observability?
- The “Three Pillars of Observability”
- Title: Cloud Native Go
- Release date: April 2021
- Publisher(s): O'Reilly Media, Inc.
- ISBN: 9781492076339
You might also like
Head First Design Patterns, 2nd Edition
You know you don’t want to reinvent the wheel, so you look to design patterns—the lessons …
Software Engineering at Google
Today, software engineers need to know not only how to program effectively but also how to …
40 Algorithms Every Programmer Should Know
Learn algorithms for solving classic computer science problems with this concise guide covering everything from fundamental …
Building Microservices, 2nd Edition
Distributed systems have become more fine-grained as organizations shift from code-heavy monolithic applications to smaller, self-contained …