The handshake analogy equates
- The number of people at a gathering to the number of handshakes required to greet them all; with
- The number of systems in an environment to the number of interfaces required to inter-link them (and associated complexity)).
1 person (system) = 0 handshakes (ie nobody else to shake hands with => 0 interfaces).
2 people (systems) = 1 handshake (1 interface)
3 people = 3 handshakes
4 people = 6 handshakes
5 people = 10 handshakes
You can see the rapid escalation of complexity here can’t you?
There’s one massive discrepancy between the two models though. A handshake generally takes only seconds. An OSS handshake can take months just getting security sign-off (within particularly risk-averse organisations) let alone coding and working through the ripple effect of modifications to down-stream systems/interfaces.
Web tech has helped, particularly through standardisation of messaging (think HTTP, XML, JSON) but microservices still need coding. Message buses and catalog-driven orchestration have also helped.
But the real moral of the story is to do whatever you can to keep the size of your systems party as small as possible. That might even include hiring a bouncer to kick out the undesirables who are already at your party (see ruthless simplification and the chess-board analogy)