It’s not the first time one team makes a module with an API. The other team needs a few lines of data from that module but the filter in the API is bad, so just retrieve millions of rows and apply your own filter to get the two rows. There is no event trigger, so keep polling those two lines every second. Multiply with dozens of modules and a bunch of politics that refuse to make changes and you get a very sluggish application.
Sure yeah, this stuff happens all the time, and often persists until people start noticing the application being sluggish and they go and investigate and fix the slow points.
Alternatively you have tightly integrated software that only one team can work on and it takes years to come out and every time a feature needs to change its another 6 month job of reworking everything, and debugging and fixing security issues is a nightmare.
In most systems, not just computers, there’s a tradeoff between a highly integrated and high performance design, vs a modularized loosely coupled one that’s more adaptable and resilient.
Just look at automotives, Teslas have a unibody design that makes them cheap to build and low weight, that also makes them enormously expensive to repair and impossible to find aftermarket parts for.
Choosing maximally integrated is rarely the best path, there is always a middle ground, and one important difference between the paths is that it’s usually easier to go from modular to integrated than vice versa.
It’s not the first time one team makes a module with an API. The other team needs a few lines of data from that module but the filter in the API is bad, so just retrieve millions of rows and apply your own filter to get the two rows. There is no event trigger, so keep polling those two lines every second. Multiply with dozens of modules and a bunch of politics that refuse to make changes and you get a very sluggish application.
Sure yeah, this stuff happens all the time, and often persists until people start noticing the application being sluggish and they go and investigate and fix the slow points.
Alternatively you have tightly integrated software that only one team can work on and it takes years to come out and every time a feature needs to change its another 6 month job of reworking everything, and debugging and fixing security issues is a nightmare.
In most systems, not just computers, there’s a tradeoff between a highly integrated and high performance design, vs a modularized loosely coupled one that’s more adaptable and resilient.
Just look at automotives, Teslas have a unibody design that makes them cheap to build and low weight, that also makes them enormously expensive to repair and impossible to find aftermarket parts for.
Choosing maximally integrated is rarely the best path, there is always a middle ground, and one important difference between the paths is that it’s usually easier to go from modular to integrated than vice versa.