Balancing Coupling in Software Design (Vlad Khononov)
Вставка
- Опубліковано 20 лип 2024
- 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.
ABOUT VLAD
Vlad Khononov is a software engineer with over 15 years of industry experience, during which he has worked for companies large and small in roles ranging from webmaster to chief architect. Vlad is a long-time proponent of domain-driven design and evolutionary architecture and currently helps companies make sense of their business domains, untangle monoliths, and tackle complex architectural challenges.
Vlad maintains an active media career as a public speaker and blogger. He has spoken at numerous industry conferences - including O’Reilly Software Architecture, DDD Europe, and NDC - about subjects such as domain-driven design, microservices, and software architecture in general. In addition to his media work, he co-organizes the Domain-Driven Design Israel and Tel Aviv Software Architecture meetup groups.
Vladik lives in Northern Israel with his wife and an almost-reasonable number of cats.
- LinkedIn: / vladikk
- Twitter: @vladikk
- GitHub: @vladikk
- vladikk.com
TIMESTAMPS
0:00 Intro
1:57 About me
3:33 Coupling
5:26 Agenda
5:50 (1) What is coupling
8:25 (2) Dimensions of coupling
9:08 (Dimension 1) Strength
11:43 Coupling models
13:05 Integration strength (levels)
22:54 Integration strength (levels comparison)
23:58 Example: Integration strength
28:31 (Dimension 2) Distance
34:08 (Dimension 3) Volatility
34:56 Subdomains
38:18 (3) Use coupling as a design tool / heuristic
38:32 Balancing the dimensions of coupling
45:32 Example: Microservices
47:59 Example: Domain-Driven Design
49:50 (4) Wrap up
53:49 Additional resources (books, training)
55:46 Q&A. Discussion
TECH EXCELLENCE
- Subscribe to our UA-cam channel / @techexcellence
- Join our Meetup Group www.meetup.com/techexcellence
- Follow us on LinkedIn / techexcellenceio
- Follow us on Twitter / techexcellence_
- Join our Discord Community / discord
#SoftwareArchitecture #DesignPrinciples #Coupling #Cohesion #Modularity #Complexity #softwareengineering #techexcellence - Наука та технологія
Thank you TE (Valentina Cupac) & Vlad Khononov for this GREAT session.
KEY TAKEAWAY: DIMENSIONS OF COUPLING DESCRIBE THE NATURE OF A RELATIONSHIP BETWEEN TWO CONNECTED COMPONENTS. COMBINING THESE DIMENSIONS WE ARE GETTING FORMULA WHICH REFLECTS THE COST OF CHANGES.
Keep on.
You're welcome, great key takeaway!
Fantastic session by Vlad.. 👏👏👏
Thank you!
Great video, thank you so much!
Glad that it was helpful!
Balancing coupling with what?
Balancing the dimensions of coupling (strength, distance and volatility) in software