En un sistema distribuido, los componentes se ejecutan en procesos separados o en máquinas distintas. Estos componentes pueden ser servicios de aplicación, réplicas de bases de datos o trabajadores en segundo plano. Como el sistema se divide en tantas partes, es habitual que un componente necesite comunicarse con otro para lograr algo, y puede tener que esperar la respuesta de ese componente.
Puede pensar en la coordinación como esta comunicación entre componentes. Por ejemplo, un servicio puede esperar a que otro apruebe una solicitud. Una base de datos puede esperar la confirmación de sus réplicas. Un trabajador puede esperar un bloqueo. Cada una de estas esperas añade dependencia, y la dependencia es donde los sistemas distribuidos encuentran problemas.
Este artículo examina por qué la coordinación supone un reto para los sistemas distribuidos. Aborda por qué la coordinación se vuelve difícil, cómo crece a medida que el sistema escala y cómo puede reducirse. Los diseñadores que minimizan los puntos en los que los componentes deben esperarse entre sí pueden construir sistemas más resilientes, más escalables y más fáciles de operar.
La idea central es que la independencia suele ser preferible a la coordinación. Cuando un componente puede avanzar por sí mismo, sin esperar a otros, el sistema tiende a tolerar los fallos, los picos de latencia y la carga con mayor elegancia. Las estrategias para gestionar la coordinación, cuando no puede evitarse, son el tema de las secciones siguientes.
Fuente: ByteByteGo · Resumido por HeadlinesBriefing