Cloud Native
Designing change-tolerant software
Cornelia Davis
  • MEAP began March 2017
  • Publication in Spring 2019 (estimated)
  • ISBN 9781617294297
  • 350 pages (estimated)
  • printed in black & white

Great introduction material that provides answers to all questions that come up when getting involved into cloud native development.

Gregor Zurowski

Author Cornelia Davis likes to say that "the cloud" is more about how you design your applications than where you deploy them. Cloud Native: Designing Change-tolerant Software is your guide to developing strong applications that thrive in the dynamic, distributed, virtual world of the cloud. This book presents a mental model for cloud-native applications, along with the patterns, practices, and tooling that sets them apart. In it, you'll find realistic examples and expert advice for working with apps, data, services, routing, and more.

Table of Contents detailed table of contents

Part 1: The Cloud-native Context: What are we Designing to? Defined

1. You Keep Using that Word: Defining Cloud

1.1. It’s Not Amazon’s Fault

1.2. Today’s Application Requirements

1.2.1. Zero Downtime

1.2.2. Shortened Feedback Cycles

1.2.3. Mobile and Multi-Device Support

1.2.4. Connected Devices — Also Known as the Internet of Things

1.2.5. Data-Driven

1.3. Cloud-Native Software

1.3.1. Defining Cloud-Native

1.3.2. Cloud-Native Software — The Pieces and Parts

1.3.3. A Model for Cloud-Native Software

1.3.4. Cloud-Native Software in Action

1.4. Cloud, Cloud-Native, None of the Above and Somewhere In-Between

1.5. Summary

2. Running Cloud-Native Applications in Production

2.1. The Obstacles

2.1.1. Snowflakes

2.1.2. Risky Deployments

2.1.3. Change Is the Exception

2.1.4. Production Instability

2.2. The Enablers

2.2.1. Continuous Delivery

2.2.2. Repeatability

2.2.3. Safe Deployments

2.2.4. Change Is the Rule

2.3. Summary

3. The Platform for Cloud-Native Software

3.1. The Cloud(-/native) Platform Evolution

3.2. Cloud-Native Dial Tone

3.3. The Platform Supports the Entire SDLC

3.4. Enable Operational Excellence

3.4.1. Repeatability

3.4.2. Security, Change-Control, Compliance (the Control Functions)

3.4.3. Autonomy

3.4.4. Reliability

3.5. Support Microservice-Based Software Architectures

3.5.1. Multi-Tenancy

3.5.2. That Which Is Distributed Once Was Not

3.6. Summary

Part 2: Cloud-Native Foundations

4. It’s not Just Request/Response

4.1. We are (Usually) Taught Imperative Programming

4.2. (Re)Introducing Event-driven Computing

4.3. My Global Cookbook

4.3.1. Request/Response

4.3.2. Event-driven

4.4. Different Styles, Similar Challenges

4.5. Summary

5. Scale Out and Statelessness

5.1. Cloud-native Apps Have Many Instances Deployed

5.2. Stateful Apps in the Cloud

5.2.1. Decomposing the Monolith and Binding to the Database

5.2.2. Poorly Handling Session State

5.3. HTTP Sessions and Sticky Sessions

5.4. Stateful Services and Stateless Apps

5.4.1. Stateful Services are Special Services

5.4.2. Making Apps Stateless

5.5. Summary

6. Application Configuration: Not Just Environment Variables

6.1. Why are we even talking about config?

6.1.1. Contextual Variability Through the SDLC

6.1.2. Contextual Variability From Horizontal Scaling

6.1.3. Contextual Variability From Infrastructure Changes

6.1.4. Contextual Variability Through, Well, the Need to Change Something

6.2. Configuration in the Application Source

6.3. Bringing in System Values

6.4. Bringing in Application Configuration

6.5. Summary

7. The Application Lifecycle

7.1. App Lifecycle Impacts

7.2. Single App, Multiple Instances

7.2.1. Blue/Green Deployments

7.2.2. Rolling Upgrades

7.3. Coordinating Across Different Apps

7.4. Example: Credential Rotation and App Lifecycle

7.5. Dealing with Ephemeral Runtime Environments

7.6. Visibility of App Lifecycle State

7.6.1. Example: Health Endpoints and Probes

7.7. Serverless

7.8. Summary

8. Routing: Centralized or Distributed, Keep up with Changes

9. Resilient Connections: Retries and Message Queues

10. Service Versioning, Parallel deploys, API Gateways

11. Troubleshooting: Needle in the Haystack

12. Cloud-native Data: Breaking the Data Monolith

13. The Unified Log: Changing the Source of Truth

About the Technology

We are amid a radical change in how we design and build applications. With cloud platforms like AWS, Azure, and Google Cloud, even small teams can take full advantage of web-scale distributed application patterns and practice. Users and customers have higher expectations for reliability, availability, and performance. Cloud-native software promises near-zero downtime, shortened feedback cycles, multi-device support, and improved cost control. All this means developers need to learn new skills and techniques, along with a new way of thinking about application design.

What's inside

  • The application lifecycle of Cloud Native apps
  • Automated configuration management
  • Multi-tenant services, versioned services, and parallel deploys
  • Understanding Cloud Native Routing
  • Managing dependencies between apps and services

About the reader

Requires intermediate programming skill with Java or a similar language. Some experience with server-side development is helpful.

About the author

Cornelia Davis is the Sr. Director of Technology at Pivotal Software. A teacher at heart, Cornelia has spent the last 25 making better software and better software developers.

Manning Early Access Program (MEAP) Read chapters as they are written, get the finished eBook as soon as it’s ready, and receive the pBook long before it's in bookstores.
buy
MEAP combo $49.99 pBook + eBook + liveBook
MEAP eBook $39.99 pdf + ePub + kindle + liveBook

FREE domestic shipping on three or more pBooks