Event-Driven Architecture in Golang

by Michael Stack

Software Development

Book Details

Book Title

Event-Driven Architecture in Golang: Building complex systems with asynchronicity and eventual consistency

Author

Michael Stack

Publisher

Packt Publishing

Publication Date

2022

ISBN

9781803238012

Number of Pages

384

Language

English

Format

PDF

File Size

5.0MB

Subject

Event-Driven Architecture

Table of Contents

  • Contents
  • Cover
  • Title Page
  • Copyright and Credits
  • Dedication
  • Contributors
  • Table of Contents
  • Preface
  • Part 1: Event-Driven Fundamentals
  • Chapter 1: Introduction to Event-Driven Architectures
  • Technical requirements
  • An exchange of facts
  • The MallBots application
  • Benefits of EDA
  • Challenges of EDA
  • Summary
  • Chapter 2: Supporting Patterns in Brief
  • Domain-driven design
  • Domain-centric architectures
  • Command and Query Responsibility Segregation
  • Application architectures
  • Summary
  • Further reading
  • Chapter 3: Design and Planning
  • Technical requirements
  • What are we building?
  • Finding answers with EventStorming
  • Understanding the business
  • Recording architectural decisions
  • Summary
  • Further reading
  • Part 2: Components of Event-Driven Architecture
  • Chapter 4: Event Foundations
  • Technical requirements
  • A tour of MallBots
  • Taking a closer look at module integration
  • Types of events
  • Refactoring side effects with domain events
  • Summary
  • Chapter 5: Tracking Changes with Event Sourcing
  • Technical requirements
  • What is event sourcing?
  • Adding event sourcing to the monolith
  • Using just enough CQRS
  • Aggregate event stream lifetimes
  • Summary
  • Chapter 6: Asynchronous Connections
  • Technical requirements
  • Asynchronous integration with messages
  • Implementing messaging with NATS JetStream
  • Making the Store Management module asynchronous
  • Summary
  • Chapter 7: Event-Carried State Transfer
  • Technical requirements
  • Refactoring to asynchronous communication
  • Adding a new order search module
  • Building read models from multiple sources
  • Summary
  • Chapter 8: Message Workflows
  • Technical requirements
  • What is a distributed transaction?
  • Comparing various methods of distributed transactions
  • Implementing distributed transactions with Sagas
  • Converting the order creation process to use a Saga
  • Summary
  • Chapter 9: Transactional Messaging
  • Technical requirements
  • Identifying problems faced by distributed applications
  • Exploring transactional boundaries
  • Using an Inbox and Outbox for messages
  • Summary
  • Part 3: Production Ready
  • Chapter 10: Testing
  • Technical requirements
  • Coming up with a testing strategy
  • Testing the application and domain with unit tests
  • Testing dependencies with integration testing
  • Testing component interactions with contract tests
  • Testing the application with end-to-end tests
  • Summary
  • Chapter 11: Deploying Applications to The Cloud
  • Technical requirements
  • Turning the modular monolith into microservices
  • Installing the necessary DevOps tools
  • Using Terraform to configure an AWS environment
  • Deploying the application to AWS with Terraform
  • Summary
  • Chapter 12: Monitoring and Observability
  • Technical requirements
  • What are monitoring and observability?
  • Instrumenting the application with OpenTelemetry and Prometheus
  • Viewing the monitoring data
  • Summary
  • Index
  • About Packt
  • Other Books You May Enjoy