inbox / things to add to this:
- Consider your “distribution boundaries”. Are you gluing separate components together? Be aware of performance tradeoffs for monolithic vs distributed systems. source.
- “Every remote call travels on the cyber equivalent of a horse and carriage.”
- How fine/coarse-grained are your interfaces? The more distributed, the coarser your interfaces should be
- “All sorts of places in the system will change shape to minimize remote calls.”
- Introduce public vs private methods.
- Conflict between REST structural model and the need for “coarse-grained” interfaces at remote boundaries.
- The “remote facade” pattern (same source) is a way to work around this: Certain objects that explicitly (unavoidably, to anyone using them)