Design Patterns for Cloud Native Applications

Book description

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

Publisher resources

View/Submit Errata

Table of contents

  1. Preface
    1. Conventions Used in This Book
    2. O’Reilly Online Learning
    3. How to Contact Us
    4. Acknowledgments
  2. 1. Introduction to Cloud Native
    1. What Is Cloud Native?
      1. Designed as a Collection of Microservices
      2. Use Containerization and Container Orchestration
      3. Automate the Development Life Cycle
      4. Dynamic Management
    2. Methodology for Building Cloud Native Apps
      1. Designing the Application
      2. Developing the Application
      3. Connectivity, Compositions, and APIs
      4. Automating the Development, Release, and Deployment
      5. Running in a Dynamic Environment
      6. Control Plane for Dynamic Management
      7. Observability and Monitoring
    3. Design Patterns for Building Cloud Native Apps
      1. Communication Patterns
      2. Connectivity and Composition Patterns
      3. Data Management Patterns
      4. Event-Driven Architecture Patterns
      5. Stream-Processing Patterns
      6. API Management and Consumption Patterns
    4. Reference Architecture for Cloud Native Apps
    5. Summary
  3. 2. Communication Patterns
    1. Synchronous Messaging Patterns
      1. Request-Response Pattern
      2. Remote Procedure Calls Pattern
      3. Summary of Synchronous Messaging Patterns
    2. Asynchronous Messaging Patterns
      1. Single-Receiver Pattern
      2. Multiple-Receiver Pattern
      3. Asynchronous Request-Reply Pattern
      4. Summary of Asynchronous Messaging Patterns
    3. Service Definition Patterns
      1. Service Definitions in Synchronous Communication
      2. Service Definition in Asynchronous Communication
    4. Technologies to Implement Synchronous Messaging Patterns
      1. RESTful Services
      2. GraphQL
      3. WebSocket
      4. gRPC
      5. Summary of Synchronous Messaging Technologies
    5. Technologies to Implement Asynchronous Messaging Patterns
      1. AMQP
      2. Kafka
      3. NATS
    6. Testing
    7. Security
    8. Observability and Monitoring
    9. DevOps
    10. Summary
  4. 3. Connectivity and Composition Patterns
    1. Connectivity Patterns
      1. Service Connectivity Pattern
      2. Service Abstraction Pattern
      3. Service Registry and Discovery Pattern
      4. Resilient Connectivity Pattern
      5. Sidecar Pattern
      6. Service Mesh Pattern
      7. Sidecarless Service Mesh Pattern
      8. Technologies for Implementing Service Connectivity Patterns
      9. Summary of Connectivity Patterns
    2. Service Composition Patterns
      1. Service Orchestration Pattern
      2. Service Choreography Pattern
      3. Saga Pattern
      4. Technologies for Implementing Service Composition Patterns
      5. Summary of Service Composition Patterns
    3. Summary
  5. 4. Data Management Patterns
    1. Data Architecture
    2. Types and Forms of Data
    3. Data Stores
      1. Relational Databases
      2. NoSQL Databases
      3. Filesystem Storage
      4. Data Store Summary
    4. Data Management
      1. Centralized Data Management
      2. Decentralized Data Management
      3. Hybrid Data Management
      4. Data Management Summary
    5. Data Composition Patterns
      1. Data Service Pattern
      2. Composite Data Services Pattern
      3. Client-Side Mashup Pattern
      4. Summary of Data Composition Patterns
    6. Data Scaling Patterns
      1. Data Sharding Pattern
      2. Command and Query Responsibility Segregation Pattern
      3. Summary of Data Scaling Patterns
    7. Performance Optimization Patterns
      1. Materialized View Pattern
      2. Data Locality Pattern
      3. Caching Pattern
      4. Static Content Hosting Pattern
      5. Summary of Performance Optimization Patterns
    8. Reliability Patterns
      1. Transaction Pattern
      2. Summary of Transaction Reliability Pattern
    9. Security: Vault Key Pattern
      1. How it works
      2. Summary of the Vault Key Pattern
    10. Technologies for Implementing Data Management Patterns
      1. Relational Database Management Systems
      2. Apache Cassandra
      3. Apache HBase
      4. MongoDB
      5. Redis
      6. Amazon DynamoDB
      7. Apache HDFS
      8. Amazon S3
      9. Azure Cosmos DB
      10. Google Cloud Spanner
      11. Summary of Technologies
    11. Testing
    12. Security
    13. Observability and Monitoring
    14. DevOps
    15. Summary
  6. 5. Event-Driven Architecture Patterns
    1. Event-Driven Architecture
      1. Exactly Once Processing
      2. Message Broker Categories
      3. CloudEvents
      4. Event Schema
    2. Event-Delivery Patterns
      1. Producer-Consumer Pattern
      2. Publisher-Subscriber Pattern
      3. Fire and Forget Pattern
      4. Store and Forward Pattern
      5. Polling Pattern
      6. Request Callback Pattern
      7. Summary of Event-Delivery Patterns
    3. State Management Patterns
      1. Event Sourcing Pattern
      2. Summary of State Management Pattern
    4. Orchestration Patterns
      1. Mediator Pattern
      2. Pipe and Filter Pattern
      3. Priority Queue Pattern
      4. Summary of Orchestration Patterns
    5. Technologies for Event-Driven Architecture
      1. Apache ActiveMQ
      2. RabbitMQ
      3. Amazon SQS
      4. Amazon SNS
      5. Azure Event Grid
      6. Azure Service Bus Queues
      7. Google Cloud Pub/Sub
      8. Summary of Message Broker Technologies
    6. Testing
    7. Security
    8. Observability and Monitoring
    9. DevOps
    10. Summary
  7. 6. Stream-Processing Patterns
    1. What Is a Stream?
    2. What Is Stream Processing?
    3. Streaming Data Processing Patterns
      1. Transformation Pattern
      2. Filters and Thresholds Pattern
      3. Windowed Aggregation Pattern
      4. Stream Join Pattern
      5. Temporal Event Ordering Pattern
      6. Machine Learner Pattern
      7. Summary of Streaming Data Processing Patterns
    4. Scaling and Performance Optimization Patterns
      1. Sequential Convoy Pattern
      2. Buffered Event Ordering Pattern
      3. Course Correction Pattern
      4. Watermark Pattern
      5. Summary of Scaling and Performance Optimization Patterns
    5. Reliability Patterns
      1. Replay Pattern
      2. Periodic Snapshot State Persistence Pattern
      3. Two-Node Failover Pattern
      4. Summary of Reliability Patterns
    6. Technologies
      1. Esper
      2. Siddhi
      3. ksqlDB
      4. Apache Spark
      5. Apache Flink
      6. Amazon Kinesis
      7. Azure Stream Analytics
      8. Google Dataflow
      9. Summary of Stream-Processing Technologies
    7. Testing
    8. Security
    9. Observability and Monitoring
    10. DevOps
    11. Summary
  8. 7. API Management and Consumption Patterns
    1. API Management Patterns
      1. API Gateway Pattern
      2. API Microgateway Pattern
      3. Service Mesh Sidecar as an API Gateway Pattern
      4. Technologies for Implementing API Management Patterns
      5. Summary of API Management Patterns
    2. API Consumption Patterns
      1. Direct Frontend-to-Microservices Communication Pattern
      2. Frontends Consuming Services Through API Gateway Pattern
      3. Backend for Frontends Pattern
      4. Summary of API Consumption Patterns
    3. Summary
  9. 8. Cloud Native Patterns in Practice
    1. Building an Online Retail System
      1. Product Catalog
      2. Order Management
      3. Order Tracking and Prediction
      4. Product Recommendations
      5. Customer and Partner Management
    2. Building the High-Level Architecture
    3. Building External APIs
    4. Connecting Services
    5. Performing Data Management
    6. Using Event-Driven Architecture
    7. Using Stream Processing
    8. Implementing Dynamic Management in a Cloud Environment
    9. Summary
  10. Index

Product information

  • Title: Design Patterns for Cloud Native Applications
  • Author(s): Kasun Indrasiri, Sriskandarajah Suhothayan
  • Release date: May 2021
  • Publisher(s): O'Reilly Media, Inc.
  • ISBN: 9781492090717