Many forces affect software today: larger datasets, geographical disparities, complex company structures, and the growing need to be fast and nimble in the face of change. Proven approaches such as service-oriented and event-driven architectures are joined by newer techniques such as microservices, reactive architectures, DevOps, and stream processing. Many of these patterns are successful by themselves, but as this practical ebook demonstrates, they provide a more holistic and compelling approach when applied together.
Author Ben Stopford explains how service-based architectures and stream processing tools such as Apache Kafka can help you build business-critical systems. You'll learn how to apply patterns including Event Sourcing and CQRS, and how to build multi-team systems with microservices and SOA using patterns such as "inside out databases" and "event streams as a source of truth." These approaches provide a unique foundation for how these large, autonomous service ecosystems can communicate and share data.
- Learn why streaming beats request-response based architectures in complex, contemporary use cases
- Understand why replayable logs such as Kafka provide a backbone for both service communication and shared datasets
- Explore how event collaboration and event sourcing patterns increase safety and recoverability with functional, event-driven approaches
- Build service ecosystems that blend event-driven and request-driven interfaces using a replayable log and Kafka's Streams API
- Scale beyond individual teams into larger, department- and company-sized architectures, using event streams as a source of truth
This open access book is Complimented by Confluent. You can download Designing Event-Driven Systems ebook for free in PDF format (5.4 MB).
Table of Contents
Setting the Stage
The Origins of Streaming
Is Kafka What You Think It Is?
Beyond Messaging: An Overview of the Kafka Broker
Designing Event-Driven Systems
Events: A Basis for Collaboration
Processing Events with Stateful Functions
Event Sourcing, CQRS, and Other Stateful Patterns
Rethinking Architecture at Company Scales
Sharing Data and Services Across an Organization
Event Streams as a Shared Source of Truth
Consistency, Concurrency, and Evolution
Consistency and Concurrency in Event-Driven Systems
Transactions, but Not as We Know Them
Evolving Schemas and Data over Time
Implementing Streaming Services with Kafka
Kafka Streams and KSQL
Building Streaming Services