El desacoplamiento en la arquitectura de software traslada la complejidad.
- por Derek Comartin
- Publicado en Derek Comartin (CodeOpinion)
- Seleccionado el
- Architecture
¿Qué sucede cuando alguien hace clic en el botón "Realizar pedido"?
Para el usuario final, es bastante sencillo: basta con pulsar un botón. Pero en un sistema complejo, detrás de ese botón puede haber muchas cosas. Debemos guardar el pedido, registrar el pago, cargar el importe a la tarjeta de crédito del cliente, reservar el inventario, enviar un correo electrónico de confirmación y, quizás, registrar los puntos de fidelización. También puede haber análisis, recomendaciones u otros procesos que reaccionen al pedido.
Debido a que suceden tantas cosas, también hay muchas cosas que pueden salir mal.
A menudo se nos dice que el desacoplamiento es genial. Usa abstracciones. Usa inyección de dependencias. Reemplaza las llamadas directas con mensajes y colas. Usa arquitectura de publicación-suscripción y basada en eventos.
Todas esas cosas pueden ser útiles, pero no son fines en sí mismas. Y lo que es más importante, no son gratuitas.
Cada paso que se da al alejarse de una llamada a un método en memoria añade un nuevo tipo de complejidad y un nuevo coste. Se puede obtener mayor capacidad de implementación independiente, extensibilidad, escalabilidad o características de disponibilidad diferentes. Pero se introduce algo nuevo que ahora hay que comprender, operar y depurar.