Book Review: Event-Driven Architecture in Golang

Buchbesprechung: Event-Driven Architecture in Golang

Book review: Event-Driven Architecture in Golang Michael Stack

Event-Driven Architecture in Golang is a book by Michael Stack that explores building complex systems with asynchronicity and eventual consistency. Published by Packt in November 2022, the book consists of 384 pages and is available in print and e-book formats starting from 11.99 euros.

The book aims to address the needs of those interested in building event-oriented systems with Go, offering a more up-to-date resource compared to older works like Ted Faison’s Event-Based Programming: Taking Events to the Limit. Stack requires a minimum version of Go 1.17 and uses Windows 10 as the execution environment, but assures readers that a significant portion of the examples can also be executed under Ubuntu Linux and the Windows subsystem for Linux.

The first chapter of the book introduces the basics of event-driven design, utilizing hexagonal diagrams to visualize the event flow in various solutions. The chapter also includes a web store management system as an example, which is used throughout the rest of the book to provide hands-on experience. Stack highlights the advantages of event-oriented systems and briefly discusses potential problems that can arise from poorly structured event-oriented systems.

The book acknowledges the evolving software architecture landscape and the incorporation of event-driven development and design processes into development processes that involve other technologies such as domain-driven design and Command Query Responsibility Segregation (CQRS). Stack briefly touches on these topics to introduce and explore their relation to event-driven architecture.

In subsequent chapters, Stack presents methods and processes for planning event architectures and introduces event storming, a widely used practice in the domain-driven design field. The author provides clear explanations and makes the processes easily understandable.

The author then moves on to practical implementation by putting the web shop administration mentioned in the introduction into operation. The book covers adding domain events, event sourcing, and asynchronous connections using NATS JetStream. Stack also delves into experiments with data persistence using PostgreSQL and explores transnational messages and the architectural concept of a saga.

The final part of the book focuses on testing event-oriented systems, presenting different test procedures. Basic knowledge of software testing and testing Go applications is beneficial for readers looking to get the most out of this chapter. The author utilizes Docker as the execution environment, deploys to the AWS cloud, and employs Terraform for orchestration.

Stack concludes the book with a discussion of software systems that assist in monitoring event-oriented clusters. Although brief, this section provides practical insights.

Overall, Event-Driven Architecture in Golang is a valuable resource for anyone interested in event-oriented programming and development. It is particularly useful for individuals managing teams without prior experience in event-driven development. The book offers a comprehensive journey through event-oriented programming and provides readers with relevant and practical knowledge.

About the Reviewer:
Tam Hanna, the reviewer, has been involved with handheld computers and electronics since 2004. Currently, he focuses on interdisciplinary applications of information technology.

Leave a Reply