Рет қаралды 2,119
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 KZbin 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