• Strangling the Monolith - Applied Patterns & Practices From The Trenches @ Lightweight Java Usergroup Munich 2022

    Many developers have been there. A beautifully crafted system that has helped the company grow slowly deteriorates into a big ball of mud. The calls for a rewrite are becoming louder and louder, but these big-bang rewrites historically have a high risk of failure. Is there a way to iteratively step out of the mud? We at Flixbus faced a similar situation and were looking for answers - and we found one! The strangler (fig) pattern which allowed us to incrementally evolve even our high-risk core services towards a modern reactive system architecture. This sounds easy, but our path was paved with hard learning and many failures. In this session I will present the patterns and practices that helped us on our journey & the many pitfalls we have found.

  • Strangling the Monolith - Applied Patterns & Practices From The Trenches @ NDC Oslo 2022

    Many developers have been there. A beautifully crafted system that has helped the company grow slowly deteriorates into a big ball of mud. The calls for a rewrite are becoming louder and louder, but these big-bang rewrites historically have a high risk of failure. Is there a way to iteratively step out of the mud? We at Flixbus faced a similar situation and were looking for answers - and we found one! The strangler (fig) pattern which allowed us to incrementally evolve even our high-risk core services towards a modern reactive system architecture. This sounds easy, but our path was paved with hard learning and many failures. In this session I will present the patterns and practices that helped us on our journey & the many pitfalls we have found.

  • The One Question To Haunt Everyone: What is a DDD Aggregate @ #DDDFoundations '22

    There is one question that I am getting asked at almost every conference or meetup: What is and what isn't an Aggregate? How do we design an Aggregate? To be honest, it's not an easy answer, even for experienced practitioners. In this session I am summarizing the current state of affairs regarding Aggregate design in the Domain-Driven Design community.

  • Functional Aggregate Design: Processes, Temporality & Automata Theory

    In the last years more and more practitioners of Domain-Driven Design agree that Aggregates should be rather viewed as processes that have an inherent temporal aspect to them. Very often they are mentioned as life-cycles that can adapt their behavior over time. Aggregates are then defined as a combination of Commands (stimuli from the environment), Behaviors (reactions to incoming stimuli that can change the system’s state & response mechanisms) and Events (system signals in response to changes in state). Modelling processes is nothing new in computing though. Automata theory can give us some mathematical foundations with which we can formally design our Aggregates in a purely functional and composable way. In this talk I will explain why we need process-oriented models, and which concepts from automata theory can help us in deriving a functional and temporal design for our Aggregates. We will also explore some operations that enable compositions on these models like unions and projections. The talk will be accompanied by concrete code examples showing how such Aggregates could look like in real-world scenarios.

  • Flow Effeciencies - Do More By Doing Less

  • Hands-on: Measuring the intangible

    A repeating pattern I have discovered during discussions with participants of DDDEU over the last years was always that people are not able to calculate risk and potential value for intangible assets like "organisational flexibility" in the presence of uncertainty for adopting the modern organisational patterns and principles that the DDD community embraces. Senior managers in larger organisations are seldomly convinced to board such an endeavour just by opinions and subjective assessments. During these conversations I regularly ask if people have thought about creating a business case that would enable senior management to make a risk vs. value potential decision. And most of the time people do not know how to create such a case, because these "intangibles" seem impossible to measure. But they are! It is possible by employing statistical methods to derive probabilities for ranges of possible outcomes that are built from various sources of information, i.e. calibrated expert knowledge. Said information can be annotated with an "expected value" when discovered, and other quantitative and qualitative data that doesn't seem obvious in the beginning. This workshop would teach the basics of bayesian probabilities, how to calibrate people to better estimate ranges of possible outcomes (50% confidence, 70% confidence, 90% confidence), how to weigh results by the expected value of

  • What is an Aggregate?

    This presentation will explore the question "What is a DDD Aggregate" following various conversations and confusions experienced in the wild.

  • Domain-Driven Organisation Design

    I am trying to explore how the properties of Complex Adaptive Systems can contribute towards an adaptable organisation design, and what conclusions we at FlixBus have drawn from these insights.