Linked e-resources
Details
Table of Contents
Intro
Table of Contents
About the Author
About the Technical Reviewer
Acknowledgments
Introduction
Part I: Business Applications
Chapter 1: What Is a Business Application?
Business Software
Domain Specific
How It Is Used
Measuring Importance
"Modern"
Summary
Chapter 2: The Status Quo (and How It Came to Be)
Business Application Architectures
The Status Quo
Green Screen
Rich Client
Web Applications
The Rise of Consumer Applications
Concurrent Practices
Agile
Test-Driven Development
Continuous Integration and Delivery
Observability
Summary
Part II: Design Prerequisites
Chapter 3: What Is a Reactive System?
What Is Reactive?
Reactive Manifesto
Responsive
Resilient
Elastic
Message Driven
Composing a Reactive System
Summary
Chapter 4: Why Build Business Applications As Reactive Systems?
Business Expectations
Developer Expectations
Property Alignment
Responsive
Resilient
Elastic
Message Driven
Summary
Chapter 5: What Is a Business Rule?
Thinking About Business Rules
Categorizations
Data at Rest
Side Effects
Derivable Data
Summary
Chapter 6: Managing Time
Answering "What Happened?"
Tracking Changes
Why Did That Happen?
Events
Commands
Understanding Time
Serialization of Time
Eventual Consistency
Bitemporality
Business Rule Changes
Summary
Part III: Design
Chapter 7: Constraints and Principles
Constraints
From REST to a Graph
Falcor
GraphQL
Why GraphQL
Being Real-Time
Principles
Never Forget
Message Driven
Read/Write Separation
Partial Availability
Design Flexibility
Modularity
Testability
Amenability to Change
Summary
Chapter 8: High-Level Data Flow
Event Sourcing and CQRS
Thinking in GraphQL Schemas
Scalars and Enums
Objects
Lists
Input Objects
Interfaces and Unions
Queries and Subscriptions
Mutations
Combining GraphQL + ES + CQRS
Summary
Chapter 9: Command Processor
What It Is, and Is Not
Requirements
Composing the Core Loop
Handling Failures
Infrastructure
Application
Enforcing Business Rules
How to Test
Testing the Command Processor
Testing Your Code
Summary
Chapter 10: Command Generator
Interaction with GraphQL
From Input Arguments into a Command
Appending to the Command Log
Returning the Mutation Result
Commands and Other Required Data
Handling Failures
Optimistic Locking
Timeouts
Testing the Command Generator
Command Submission
Command Creation
Summary
Chapter 11: Event Materializer
Defining the View Model
Event Materializer Behavior
Transactions
Consistency
Multiple Sources
Evolving the View Model
Communicating Changes to Others
GraphQL Subscriptions
Other Side Effects
Managing Failure
Testing
Summary
Table of Contents
About the Author
About the Technical Reviewer
Acknowledgments
Introduction
Part I: Business Applications
Chapter 1: What Is a Business Application?
Business Software
Domain Specific
How It Is Used
Measuring Importance
"Modern"
Summary
Chapter 2: The Status Quo (and How It Came to Be)
Business Application Architectures
The Status Quo
Green Screen
Rich Client
Web Applications
The Rise of Consumer Applications
Concurrent Practices
Agile
Test-Driven Development
Continuous Integration and Delivery
Observability
Summary
Part II: Design Prerequisites
Chapter 3: What Is a Reactive System?
What Is Reactive?
Reactive Manifesto
Responsive
Resilient
Elastic
Message Driven
Composing a Reactive System
Summary
Chapter 4: Why Build Business Applications As Reactive Systems?
Business Expectations
Developer Expectations
Property Alignment
Responsive
Resilient
Elastic
Message Driven
Summary
Chapter 5: What Is a Business Rule?
Thinking About Business Rules
Categorizations
Data at Rest
Side Effects
Derivable Data
Summary
Chapter 6: Managing Time
Answering "What Happened?"
Tracking Changes
Why Did That Happen?
Events
Commands
Understanding Time
Serialization of Time
Eventual Consistency
Bitemporality
Business Rule Changes
Summary
Part III: Design
Chapter 7: Constraints and Principles
Constraints
From REST to a Graph
Falcor
GraphQL
Why GraphQL
Being Real-Time
Principles
Never Forget
Message Driven
Read/Write Separation
Partial Availability
Design Flexibility
Modularity
Testability
Amenability to Change
Summary
Chapter 8: High-Level Data Flow
Event Sourcing and CQRS
Thinking in GraphQL Schemas
Scalars and Enums
Objects
Lists
Input Objects
Interfaces and Unions
Queries and Subscriptions
Mutations
Combining GraphQL + ES + CQRS
Summary
Chapter 9: Command Processor
What It Is, and Is Not
Requirements
Composing the Core Loop
Handling Failures
Infrastructure
Application
Enforcing Business Rules
How to Test
Testing the Command Processor
Testing Your Code
Summary
Chapter 10: Command Generator
Interaction with GraphQL
From Input Arguments into a Command
Appending to the Command Log
Returning the Mutation Result
Commands and Other Required Data
Handling Failures
Optimistic Locking
Timeouts
Testing the Command Generator
Command Submission
Command Creation
Summary
Chapter 11: Event Materializer
Defining the View Model
Event Materializer Behavior
Transactions
Consistency
Multiple Sources
Evolving the View Model
Communicating Changes to Others
GraphQL Subscriptions
Other Side Effects
Managing Failure
Testing
Summary