0%

Book Description

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 cloud native 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

  1. 1. What Is a “Cloud Native” Application?
    1. The Story So Far
    2. What Is Cloud Native?
      1. Scalability
      2. Observability
      3. Manageability
      4. Loose coupling
      5. Resilience
    3. Why Is Cloud Native a Thing?
  2. 2. Why Go Rules the Cloud Native World
    1. The Motivation Behind Go
    2. Features For a Cloud Native World
      1. Composition and Structural Typing
      2. Comprehensibility
      3. CSP-Style Concurrency
      4. Fast Builds
      5. Linguistic Stability
      6. Memory Safety
      7. Performance
      8. Static Linking
      9. Static Typing
  3. 3. Go Language Foundations
    1. Types
      1. Simple Numbers
      2. Complex Numbers
      3. Booleans
    2. Variables
      1. Short Variable Declarations
      2. Zero Values
    3. Constants
    4. Pointers
    5. Collections: Arrays, Slices, and Maps
      1. Arrays
      2. Slices
      3. Maps
    6. Control Structures
      1. Fun With for
      2. The if Statement
      3. The switch Statement
    7. Error Handling
      1. Creating an Error
    8. Putting the Fun in Functions: Variadics and Closures
      1. Functions
      2. Variadic Functions
      3. Anonymous Functions and Closures
    9. Structs, Methods, and Interfaces
      1. Structs
      2. Methods
      3. Interfaces
    10. The Good Stuff: Concurrency
      1. Goroutines
      2. Channels
      3. Select
18.221.187.121