# Lutz Hühnken: Crafting Resilient Systems with Event-Driven Design

EP-183 | September 10, 2024 | 44:45



Topics: Architecture, DevOps


How can event-driven architecture transform your software design? Lutz Hühnken of Upvest shares his insights on crafting resilient systems that scale and simplify complex workflows. Discover the power of event-driven design in this engaging conversation.





## Show Notes

### Introduction

In this episode of Maintainable, Robby speaks with [Lutz Hühnken](https://www.linkedin.com/in/lutzh/), Head of Engineering Excellence at [Upvest](https://www.reactivesystems.eu/), about the transformative power of event-driven architecture in software development. Lutz brings his extensive experience to the table, discussing how breaking down complex systems into manageable modules and leveraging event-driven design can lead to more resilient and maintainable software.

### Topics Discussed

- **[00:05:32] Introduction to Well-Maintained Software**: Lutz shares his thoughts on the key characteristics of maintainable software, emphasizing modularity and simplicity.
- **[00:10:24] Challenges with "Magic" in Code**: The pitfalls of relying too much on frameworks and ORMs, including examples from Lutz’s experience with Hibernate.
- **[00:11:16] Understanding Event-Driven Architecture**: Lutz explains the fundamentals of event-driven architecture and its advantages over traditional command-driven approaches.
- **[00:13:50] The Role of Promises in Event-Driven Systems**: How clear design-time responsibilities ensure reliability in event-driven communication.
- **[00:15:43] Choreography vs. Orchestration**: The debate between these two approaches to managing workflows and why Lutz favors choreography for most systems.
- **[00:17:57] Onboarding Developers in Event-Driven Systems**: Tips for effectively integrating new team members into an event-driven architecture.
- **[00:26:52] The Role of Engineering Excellence at Upvest**: Lutz discusses his new role and the importance of systems thinking in guiding architectural decisions.
- **[00:34:55] Managing Technical Debt**: Lutz offers insights into balancing feature development with addressing technical debt, emphasizing the importance of a healthy investment distribution.

### Key Takeaways

- Breaking down large systems into smaller modules with clear boundaries can significantly enhance maintainability.
- Event-driven architecture offers a powerful way to decouple system components, making them more resilient and scalable.
- Developers should be cautious of "magic" in code, such as heavy reliance on ORMs, which can obscure underlying complexities and hinder maintainability.
- Choreography often provides a more scalable and maintainable approach than orchestration in managing complex workflows.
- Technical debt should be managed proactively, with regular investments in refactoring and productivity enhancements to maintain long-term software health.

### Resources Mentioned

- [Lutz Hühnken's Blog](https://www.reactivesystems.eu/)
- [Event-Driven Architecture](https://martinfowler.com/articles/201701-event-driven.html) by Martin Fowler
- [The Open Society and Its Enemies](https://www.amazon.com/Open-Society-Its-Enemies-One/dp/0691210843) by Karl Popper
- [Event-Driven Architecture Reading List](https://github.com/lutzh/awesome-event-driven-architecture#readme)

### Connect with Lutz Hühnken

- [LinkedIn](https://www.linkedin.com/in/lutzh/)
- [Mastodon](https://mastodon.social/@lutzhuehnken)
- [Bluesky](https://bsky.app/profile/lutzh.bsky.social)

### Thanks to Our Sponsor!

Turn hours of debugging into just minutes! AppSignal is a performance monitoring and error-tracking tool designed for Ruby, Elixir, Python, Node.js, Javascript, and other frameworks.

It offers six powerful features with one simple interface, providing developers with real-time insights into the performance and health of web applications.

Keep your coding cool and error-free, one line at a time!&nbsp;

Use the code **maintainable** to get a 10% discount for your first year. [Check them out!](https://www.appsignal.com/?utm_source=maintainable&utm_medium=podcast)








## Transcript



