Una opción popular de arquitectura de alto nivel en un programa moderno es un sistema de microservicios basado en REST. Esto tiene varias ventajas, como acoplamiento flojo, reutilización fácil, restricción limitada de tecnologías que se pueden usar, alta escalabilidad, etc.
Pero uno de los problemas que preveo en dicha arquitectura es la poca visibilidad de cuáles son las dependencias de una aplicación. Por ejemplo, supongamos que tengo una aplicación que utiliza un conjunto de llamadas REST a diario. Esta aplicación también utiliza un segundo conjunto de llamadas REST, pero solo una vez por trimestre. Si escaneara los registros de la última semana, vería todas las llamadas diarias, pero probablemente no vería las llamadas trimestrales. Cuando llega el momento de refactorizar, las llamadas trimestrales tienen un alto riesgo de ruptura.
¿Qué patrones o herramientas se pueden usar para reducir este riesgo y proporcionar una mayor visibilidad de cuáles son las dependencias de una arquitectura débilmente acoplada?