# data[].attributes.headline
Orígenes de la arquitectura: desde los 60's hasta nuestros días.

# data[].attributes.subject
Orígenes de la arquitectura: desde los 60's hasta nuestros días.

# data[].attributes.body
SAGE: Semi-Automatic Ground Enviroment.

(1950's-1960's). Necesitaba reaccionar a eventos en tiempo real.

# data[].attributes.body
El sistema necesitaba reaccionar instantáneamente a los eventos producidos en la GUI. Se empieza a separar entre Frontend y Backend.

# data[].attributes.body
El crecimiento de servicios web impulsó el uso de esta arquitectura

# data[].attributes.body
Debido a los problemas de Linkedin al pasar a la arquitectura Event-Driven, los desarrolladores crearon Kafka en 2010. Hoy en día es utilizado por empresas como Spotify, Netflix o Uber,

# data[].attributes.headline
¿Qué es Event-Driven Architecture (EDA)?

# data[].attributes.subject
¿Qué es Event-Driven Architecture (EDA)?

# data[].attributes.body
Modelo de diseño de software construido alrededor de la captura y procesado de eventos que permite a los equipos identificar dichos eventos del sistema y así reaccionar y responder en tiempo real de manera asíncrona.

# data[].attributes.body
Un evento refiere al flujo de datos en tiempo real de manera secuencial e ilimitada generados por una acciones o cambios en el sistema.

La EDA se divide en tres componentes: productores de eventos, consumidores de eventos y enrutadores de eventos o brokers

# data[].attributes.body
Soporta altas cargas de trabajo al procesar eventos de manera asíncrona.

Permite escalar horizontalmente y gestionar más eventos sin afectar el rendimiento.

# data[].attributes.body
Los componentes se comunican mediante eventos, lo que reduce la dependencia directa entre ellos.

Permite cambiar o reemplazar componentes sin afectar a otros, facilitando el mantenimiento y la evolución del sistema.

# data[].attributes.body
Ideal para aplicaciones que necesitan responder de inmediato a eventos.

Aplicaciones como mensajería, sistemas IoT, y transacciones financieras pueden reaccionar en tiempo real.

# data[].attributes.body
Permite actualizaciones en la interfaz de usuario en respuesta a eventos.

Proporciona una experiencia de usuario más interactiva y fluida, ideal para aplicaciones dinámicas.

# data[].attributes.body
Escalabilidad

Despliegue

Mantenibilidad

Disponibilidad

# data[].attributes.body
Permite que cada consumidor puede escalar de forma independiente y reduce al máximo el acoplamiento entre los componentes.

# data[].attributes.body
Debido al bajo acoplamiento entre los componentes, es posible el despliegue sin preocuparse por dependencias o precondiciones

# data[].attributes.body
Los sistemas basados ​​en eventos suelen estar desacoplados, con módulos independientes que reaccionan a eventos específicos, lo cual facilita la modificación, prueba y actualización de los componentes sin afectar a los demás.

# data[].attributes.body
Los eventos y sus manejadores pueden procesarse de forma distribuida o asincrónica, reduciendo el tiempo de respuesta y optimizando la disponibilidad del servicio.

# data[].attributes.body
Stopford, B. (2018). Designing event-driven systems. O'Reilly Media, Incorporated.

https://medium.com/@yourstudybuddy/history-of-event-driven-concepts-b616a7afa2cb

https://www.ibm.com/topics/event-driven-architecture

https://solace.com/what-is-event-driven-architecture/

https://www.ibm.com/topics/event-driven-architecture

# data[].attributes.body
Los errores pueden llevar a estados inconsistentes o pérdida de datos.

Si un evento de pago falla en una app de servicios, no se registra el pago pero el sistema puede quedar en un estado erróneo.

# data[].attributes.headline
Complejidad de Depuración y Trazabilidad

# data[].attributes.subject
Complejidad de Depuración y Trazabilidad

# data[].attributes.body
La secuencia de eventos asincrónicos complica la identificación de la fuente de errores.

Un error en una aplicación de e-commerce que no se puede rastrear fácilmente hasta el evento que lo causó.

# data[].attributes.headline
Consumo de Recursos por Eventos Innecesarios

# data[].attributes.subject
Consumo de Recursos por Eventos Innecesarios

# data[].attributes.body
Procesar demasiados eventos aumenta el uso de memoria y CPU.