Balancing Coupling in Software Design – Vladik Khononov

video:

We are used to treating coupling as the necessary evil. Hence, we aim to break systems apart into the smallest services possible, in the ever-lasting quest of decoupling everything. But what results are we getting by following this reasoning? — Instead of the promised land of evolvable systems, many such “decouple everything” endeavors lead straight into the chains of distributed monoliths. Can we do better? What if there is a better way to handle coupling in distributed systems? Or even, what if instead of fighting coupling, we can use it as a heuristic for designing systems that are actually evolvable and maintainable? That’s exactly what you will learn in this session: what coupling is, and how you can use it as a design tool. We will start by taking a journey through time, and explore the different models of evaluating coupling. Next, we will combine the existing knowledge into a coherent model — a simple function for evaluating a system’s decomposition into components. This function will allow you to assess the expected effort for evolving a system and use it as a heuristic for optimizing architectural design decisions.

Tags

Follow us

Read our latest news from Virtual DDD on any of these social networks!

Recent videos

Impact Mapping – The Secret Sauce

Details "Impact mapping is a lightweight, collaborative planning technique for teams that want to make a big impact with software products. It is based on user interaction design, outcome-driven planning and mind mapping. Impact maps help delivery teams and...

Pragmatic Architecture: How to Know When It’s Enough

Details Overengineering wastes time and effort, while underengineering creates future pain. How do you strike the right balance? This talk explores how you can use the balanced coupling model to achieve the just-right engineering. You’ll learn to predict volatility of...