¿Qué es la arquitectura desacoplada y cómo se implementa?

Una arquitectura desacoplada es donde los diferentes componentes / capas que componen el sistema interactúan entre sí mediante interfaces bien definidas en lugar de depender estrechamente el uno del otro. Con dicha arquitectura, los componentes / capas se pueden desarrollar de forma independiente sin tener que esperar a que se completen sus dependencias. Esto conduce a un desarrollo canalizado , lo que resulta en un desarrollo más ágil y más rápido. Esto también mejora la capacidad de prueba de los componentes. Por lo general, desacoplar la interfaz de usuario de su backend dependiente trae más beneficios y a menudo se ignora. Puede manejar su interfaz de usuario web a través de API bien definidas que devuelven JSON / XML / ATOM o cualquier formato conveniente en su entorno. Con tales API definidas, los desarrolladores de UI pueden usar datos simulados durante el desarrollo en lugar de esperar a que los desarrolladores de back-end completen sus tareas. Dado que la UI y los desarrolladores de back-end producen su trabajo en paralelo, el tiempo de inactividad y la integración repetida se pueden minimizar. Dado que los desarrolladores de la interfaz de usuario generalmente están adelantados en el ciclo de desarrollo, esto ayuda a los desarrolladores de back-end a finalizar los formatos de datos con iteraciones mínimas. El desacoplamiento también ayuda a reemplazar / evolucionar cada lado independientemente del otro. Por ejemplo, si migra sus servicios de back-end de Java a Scala por cualquier motivo, tiene poco impacto en su interfaz de usuario y viceversa.

Los sistemas de colas de mensajes como SQS de Amazon o RabbitMQ pueden ayudar con la escalabilidad al reducir los componentes estrechamente acoplados en su arquitectura web.