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.
"Great introduction material that provides answers to all questions that come up when getting involved into cloud native development."
~ Gregor Zurowski
Part 1: Cloud-Native Defined
1. Writing Cloud-native Applications
1.1. You Keep Using that Word Defining "Cloud"
1.1.1. It's not Amazon's Fault
1.1.2. Today's Application Requirements
1.1.3. A New Platform
1.1.4. The Cloud Native Application Model
1.1.5. When to not be Cloud-Native
1.1.6. The Cloud-Native Maturity Model
2. Running Cloud-native Applications in Production
2.1. The Obstacles
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.3. Safe Deployments
2.2.4. Change is the Rule
2.3. The Role of Platform
Part 2: Cloud-Native Apps
3. Apps in Context
3.1. The Cloud Context
3.1.1. Contextual Variability Through the SDLC
3.1.2. Contextual Variability From Horizontal Scaling
3.1.3. Contextual Variability From Infrastructure Changes
3.1.4. Contextual Variability Through, Well, the Need to Change Something
3.2. Example: Hello <Insert Configuration Here>
3.2.1. Getting Started What's All This About Using Environment Variables?
3.2.3. Building the App
3.3. Eliminating, Embracing and Avoiding Contextual Differences
4. Stateless Apps
4.1. Example: Hello Who?
4.1.2. Building the App
4.1.3. Run it in the Cloud
4.2. Sticky Sessions
4.3. There is State Just not in the App
4.4. How to Create Stateless Apps
5. Application Configuration
5.1. What is Configuration?
5.2. How does the App Draw in System Environment and Configuration Data?
5.3. From Where does the Configuration Data Come?
5.3.1. The "From Where" for System Environment Context
5.3.2. The "From Where" for Application Configuration Context
5.3.3. When is Configuration Data Loaded?
5.4. Ex: Credential Rotation
5.5. Putting the How, From-where and When Together
6. The Application Lifecycle
Part 3: Cloud-Native Services
7. Cloud Native Services Introduced
8. Multi-tenant Services
9. Versioned Services and Parallel Deploys
Part 4: Cloud-Native Data
10. Cloud Native Data Introduced
11. Breaking the Data Monolith
12. Materialized Views and Caching
13. Event Sourcing and CQRS
Part 5: The Cloud-Native Collective
14. The Cloud Native Collective: Bringing it all Together
15. Cloud Native Routing
16. Policy-based Routing and API Gateways
17. Managing Dependencies
Part 6: Epilogue
18. Some type of a concluding chapter? Maybe a reference application?
About the TechnologyWe 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.
- 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