3 ms·
>Cross-team communication, documentation, API publishing and adherence goes from being very low impact within an org to suddenly being critically important. To
by breischl 6y ago
>Cross-team communication, documentation, API publishing and adherence goes from being very low impact within an org to suddenly being critically important.
Totally agree, but I think this is underappreciated by many. People tend to wave this away by just saying we'll just use Swagger/gRPC/whatever-doc-gen-tool, but that's not the main problem. The problem is that each service needs to have some coherent purpose, and must adhere to that purpose. Changes to that must be reflected through a proper API change and migration. But that requires thought, discipline, and (sometimes slow) work.
When you inevitably run into a situation where you could instead throw a quick hack into the wrong service that will make things work now the temptation to do it very strong (bonus points if this is due to regulatory changes). But now you have an undocumented behavior dependency between those services - they're coupled in a subtle way. And eventually the accretion of those results in a distributed monolith instead of a plain-old monolith.
>domain driven design is helpful for splitting into distributed services: split along domain lines with minimum inter-service dependencies
Definitely, yes. But then when your business evolves in some way that causes all your domains to be inappropriate, you're up a creek again. I don't think there's really a solution to that, though.