Cloud Native Infrastructure: Patterns for Scalable Infrastructure and Applications in a Dynamic Environment

Cloud Native Infrastructure: Patterns for Scalable Infrastructure and Applications in a Dynamic Environment

by Justin Garrison, Kris Nova


View All Available Formats & Editions
Members save with free shipping everyday! 
See details


Cloud native infrastructure is more than servers, network, and storage in the cloud—it is as much about operational hygiene as it is about elasticity and scalability. In this book, you’ll learn practices, patterns, and requirements for creating infrastructure that meets your needs, capable of managing the full life cycle of cloud native applications.

Justin Garrison and Kris Nova reveal hard-earned lessons on architecting infrastructure from companies such as Google, Amazon, and Netflix. They draw inspiration from projects adopted by the Cloud Native Computing Foundation (CNCF), and provide examples of patterns seen in existing tools such as Kubernetes.

With this book, you will:

  • Understand why cloud native infrastructure is necessary to effectively run cloud native applications
  • Use guidelines to decide when—and if—your business should adopt cloud native practices
  • Learn patterns for deploying and managing infrastructure and applications
  • Design tests to prove that your infrastructure works as intended, even in a variety of edge cases
  • Learn how to secure infrastructure with policy as code

Product Details

ISBN-13: 9781491984307
Publisher: O'Reilly Media, Incorporated
Publication date: 11/20/2017
Pages: 160
Sales rank: 1,264,346
Product dimensions: 6.80(w) x 9.00(h) x 0.50(d)

About the Author

Justin Garrison is an engineer at one of the world's largest media companies. He loves open source almost as much as he loves community. He is not a fan of buzzwords but searches for the patterns and benefits behind technology trends. He frequently shares his findings and tries to disseminate knowledge through practical lessons and unique examples. He is an active member in many communities and constantly questions the status quo. He is relentless in trying to learn new things and giving back to the communities who have taught him so much.

Kris Nova is a Senior Developer Advocate for Heptio with an emphasis in containers, infrastructure, and Kubernetes. She is an ambassador for the Cloud Native Computing Foundation.Prior to Heptio, Kris worked as a developer advocate for Microsoft, as well as an engineer on Kubernetes in Azure. She has a deep technical background in the Go programming language, and has authored many successful tools in Go. Kris is a Kubernetes maintainer, and the creator of kubicorn, a successful Kubernetes infrastructure management tool. She organizes a special interest group in Kubernetes, and is a leader in the community. She understands the grievances with running cloud native infrastructure via a distributed cloud native application. She lives in Seattle, WA, and spends her free time mountaineering.

Table of Contents

Introduction vii

1 What Is Cloud Native Infrastructure? 1

Cloud Native Benefits 2

Servers 3

Visualization 3

Infrastructure as a Service 4

Platform as a Service 4

Cloud Native Infrastructure 6

What Is Not Cloud Native Infrastructure? 7

Cloud Native Applications 9

Micro services 10

Health Reporting 10

Telemetry Data 12

Resiliency 13

Declarative, Not Reactive 16

How Do Cloud Native Applications Impact Infrastructure? 17

Conclusion 17

2 When to Adopt Cloud Native 19

Applications 20

People 21

Systems 21

Business 23

When You Don't Need Cloud Native Infrastructure 24

Technical Limitations 24

Business Limitations 26

Conclusion 27

3 Evolution of Cloud Native Deployments 29

Representing Infrastructure 30

Infrastructure as a Diagram 30

Infrastructure as a Script 32

Infrastructure as Code 34

Infrastructure as Software 36

Deployment Tools 38

Idempotency 40

Handling Failure 40

Conclusion 42

4 Designing Infrastructure Applications 43

The Bootstrapping Problem 44

The API 45

The State of the World 45

The Reconciler Pattern 49

Rule 1 Use a Data Structure for All Inputs and Outputs 50

Rule 2 Ensure That the Data Structure Is Immutable 50

Rule 3 Keep the Resource Map Simple 52

Rule 4 Make the Actual State Match the Expected State 53

The Reconciler Pattern's Methods 54

Example of the Pattern in Go 55

The Auditing Relationship 56

Using the Reconciler Pattern in a Controller 57

Conclusion 58

5 Developing Infrastructure Applications 59

Designing an API 59

Adding Features 60

Deprecating Features 61

Mutating Infrastructure 63

Conclusion 66

6 Testing Cloud Native Infrastructure 67

What Are We Testing? 68

Writing Testable Code 69

Validation 69

Entering Your Codebase 70

Self-Awareness 72

Types of Tests 73

Infrastructure Assertions 73

Integration Testing 76

Unit Testing 76

Mock Testing 77

Chaos Testing 78

Monitoring Infrastructure 84

Conclusion 84

Managing Cloud Native Applications 87

Application Design 88

Implementing Cloud Native Patterns 89

Application Life Cycle 90

Deploy 90

Run 91

Retire 93

Application Requirements on Infrastructure 93

Application Runtime and Isolation 94

Resource Allocation and Scheduling 95

Environment Isolation 96

Service Discovery 97

State Management 97

Monitoring and Logging 98

Metrics Aggregation 99

Debugging and Tracing 100

Conclusion 101

Securing Applications 103

Policy as Code 103

Deployment Gating 104

Conformity Testing 106

Compliance Testing 107

Activity Testing 108

Auditing Infrastructure 109

Immutable Infrastructure 111

Conclusion 112

Implementing Cloud Native Infrastructure 113

Where to Focus for Change 114

People 114

Architecture 115

Chaos Management 117

Applications 118

Predicting the Future 119

Conclusion 120

A Patterns for Network Resiliency 123

B Lock-in 129

C Box: Case Study 133

Index 137

Customer Reviews