With the immense cost savings and scalability the cloud provides, the rationale for building cloud native applications is no longer in question. The real issue is how. With this practical guide, developers will learn about the most commonly used design patterns for building cloud native applications using APIs, data, events, and streams in both greenfield and brownfield development.
You'll learn how to incrementally design, develop, and deploy large and effective cloud native applications that you can manage and maintain at scale with minimal cost, time, and effort. Authors Kasun Indrasiri and Sriskandarajah Suhothayan highlight use cases that effectively demonstrate the challenges you might encounter at each step.
• Learn the fundamentals of cloud native applications
• Explore key cloud native communication, connectivity, and composition patterns
• Learn decentralized data management techniques
• Use event-driven architecture to build distributed and scalable cloud native applications
• Explore the most commonly used patterns for API management and consumption
• Examine some of the tools and technologies you'll need for building cloud native systems
Author(s): Kasun Indrasiri, Sriskandarajah Suhothayan
Edition: 1
Publisher: O'Reilly Media
Year: 2021
Language: English
Commentary: Vector PDF
Pages: 314
City: Sebastopol, CA
Tags: Cloud Computing; Asynchronous Programming; Stream Processing; Microservices; GraphQL; Design Patterns; Application Development; Automation; WebSockets; Software Development Life Cycle; Container Orchestration; Event-Driven Architecture; RESTful API; Cloud-Native Applications; Data Management; gRPC
Copyright
Table of Contents
Preface
Conventions Used in This Book
O’Reilly Online Learning
How to Contact Us
Acknowledgments
Chapter 1. Introduction to Cloud Native
What Is Cloud Native?
Designed as a Collection of Microservices
Use Containerization and Container Orchestration
Automate the Development Life Cycle
Dynamic Management
Methodology for Building Cloud Native Apps
Designing the Application
Developing the Application
Connectivity, Compositions, and APIs
Automating the Development, Release, and Deployment
Running in a Dynamic Environment
Control Plane for Dynamic Management
Observability and Monitoring
Design Patterns for Building Cloud Native Apps
Communication Patterns
Connectivity and Composition Patterns
Data Management Patterns
Event-Driven Architecture Patterns
Stream-Processing Patterns
API Management and Consumption Patterns
Reference Architecture for Cloud Native Apps
Summary
Chapter 2. Communication Patterns
Synchronous Messaging Patterns
Request-Response Pattern
Remote Procedure Calls Pattern
Summary of Synchronous Messaging Patterns
Asynchronous Messaging Patterns
Single-Receiver Pattern
Multiple-Receiver Pattern
Asynchronous Request-Reply Pattern
Summary of Asynchronous Messaging Patterns
Service Definition Patterns
Service Definitions in Synchronous Communication
Service Definition in Asynchronous Communication
Technologies to Implement Synchronous Messaging Patterns
RESTful Services
GraphQL
WebSocket
gRPC
Summary of Synchronous Messaging Technologies
Technologies to Implement Asynchronous Messaging Patterns
AMQP
Kafka
NATS
Testing
Security
Observability and Monitoring
DevOps
Summary
Chapter 3. Connectivity and Composition Patterns
Connectivity Patterns
Service Connectivity Pattern
Service Abstraction Pattern
Service Registry and Discovery Pattern
Resilient Connectivity Pattern
Sidecar Pattern
Service Mesh Pattern
Sidecarless Service Mesh Pattern
Technologies for Implementing Service Connectivity Patterns
Summary of Connectivity Patterns
Service Composition Patterns
Service Orchestration Pattern
Service Choreography Pattern
Saga Pattern
Technologies for Implementing Service Composition Patterns
Summary of Service Composition Patterns
Summary
Chapter 4. Data Management Patterns
Data Architecture
Types and Forms of Data
Data Stores
Relational Databases
NoSQL Databases
Filesystem Storage
Data Store Summary
Data Management
Centralized Data Management
Decentralized Data Management
Hybrid Data Management
Data Management Summary
Data Composition Patterns
Data Service Pattern
Composite Data Services Pattern
Client-Side Mashup Pattern
Summary of Data Composition Patterns
Data Scaling Patterns
Data Sharding Pattern
Command and Query Responsibility Segregation Pattern
Summary of Data Scaling Patterns
Performance Optimization Patterns
Materialized View Pattern
Data Locality Pattern
Caching Pattern
Static Content Hosting Pattern
Summary of Performance Optimization Patterns
Reliability Patterns
Transaction Pattern
Summary of Transaction Reliability Pattern
Summary of the Vault Key Pattern
Technologies for Implementing Data Management Patterns
Relational Database Management Systems
Apache Cassandra
Apache HBase
MongoDB
Redis
Amazon DynamoDB
Apache HDFS
Amazon S3
Azure Cosmos DB
Google Cloud Spanner
Summary of Technologies
Testing
Security
Observability and Monitoring
DevOps
Summary
Chapter 5. Event-Driven Architecture Patterns
Event-Driven Architecture
Exactly Once Processing
Message Broker Categories
CloudEvents
Event Schema
Event-Delivery Patterns
Producer-Consumer Pattern
Publisher-Subscriber Pattern
Fire and Forget Pattern
Store and Forward Pattern
Polling Pattern
Request Callback Pattern
Summary of Event-Delivery Patterns
State Management Patterns
Event Sourcing Pattern
Summary of State Management Pattern
Orchestration Patterns
Mediator Pattern
Pipe and Filter Pattern
Priority Queue Pattern
Summary of Orchestration Patterns
Technologies for Event-Driven Architecture
Apache ActiveMQ
RabbitMQ
Amazon SQS
Amazon SNS
Azure Event Grid
Azure Service Bus Queues
Google Cloud Pub/Sub
Summary of Message Broker Technologies
Testing
Security
Observability and Monitoring
DevOps
Summary
Chapter 6. Stream-Processing Patterns
What Is a Stream?
What Is Stream Processing?
Streaming Data Processing Patterns
Transformation Pattern
Filters and Thresholds Pattern
Windowed Aggregation Pattern
Stream Join Pattern
Temporal Event Ordering Pattern
Machine Learner Pattern
Summary of Streaming Data Processing Patterns
Scaling and Performance Optimization Patterns
Sequential Convoy Pattern
Buffered Event Ordering Pattern
Course Correction Pattern
Watermark Pattern
Summary of Scaling and Performance Optimization Patterns
Reliability Patterns
Replay Pattern
Periodic Snapshot State Persistence Pattern
Two-Node Failover Pattern
Summary of Reliability Patterns
Technologies
Esper
Siddhi
ksqlDB
Apache Spark
Apache Flink
Amazon Kinesis
Azure Stream Analytics
Google Dataflow
Summary of Stream-Processing Technologies
Testing
Security
Observability and Monitoring
DevOps
Summary
Chapter 7. API Management and Consumption Patterns
API Management Patterns
API Gateway Pattern
API Microgateway Pattern
Service Mesh Sidecar as an API Gateway Pattern
Technologies for Implementing API Management Patterns
Summary of API Management Patterns
API Consumption Patterns
Direct Frontend-to-Microservices Communication Pattern
Frontends Consuming Services Through API Gateway Pattern
Backend for Frontends Pattern
Summary of API Consumption Patterns
Summary
Chapter 8. Cloud Native Patterns in Practice
Building an Online Retail System
Product Catalog
Order Management
Order Tracking and Prediction
Product Recommendations
Customer and Partner Management
Building the High-Level Architecture
Building External APIs
Connecting Services
Performing Data Management
Using Event-Driven Architecture
Using Stream Processing
Implementing Dynamic Management in a Cloud Environment
Summary
Index
About the Authors
Colophon