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
Kafka: The Definitive Guide
Every enterprise application creates data, whether it’s log messages, metrics, user activity, outgoing messages, or something …
Learning React, 2nd Edition
If you want to learn how to build efficient React applications, this is your book. Ideal …
51+ hours of video instruction. Overview The professional programmer’s Deitel® video guide to Python development with …
Get Programming with Go
Summary Get Programming with Go introduces you to the powerful Go language without confusing jargon or …