{"id":477131,"date":"2023-08-09T09:08:09","date_gmt":"2023-08-09T09:08:09","guid":{"rendered":""},"modified":"2023-09-05T11:14:05","modified_gmt":"2023-09-05T11:14:05","slug":"event-driven-architecture","status":"publish","type":"wiki","link":"https:\/\/oneproxy.pro\/es\/wiki\/event-driven-architecture\/","title":{"rendered":"Arquitectura basada en eventos"},"content":{"rendered":"<p>La arquitectura basada en eventos (EDA) es un patr\u00f3n de dise\u00f1o de software que confiere una estructura para dise\u00f1ar e implementar aplicaciones o sistemas que reaccionan a los cambios en el entorno. Este comportamiento reactivo generalmente abarca la recepci\u00f3n, el procesamiento y el env\u00edo de eventos, lo que permite que los componentes del sistema funcionen de manera desacoplada, mejorando as\u00ed la escalabilidad y la adaptabilidad.<\/p>\n<h2>La g\u00e9nesis de la arquitectura basada en eventos<\/h2>\n<p>La programaci\u00f3n basada en eventos se remonta a los primeros d\u00edas de las interfaces gr\u00e1ficas de usuario (GUI) y tiene sus or\u00edgenes a finales de los a\u00f1os 1960 y principios de los 1970. El patr\u00f3n de dise\u00f1o surgi\u00f3 como una soluci\u00f3n natural para gestionar acciones iniciadas por el usuario, como clics de botones o pulsaciones de teclas, que son inherentemente impredecibles y asincr\u00f3nicas. En este contexto, surgi\u00f3 la idea de programaci\u00f3n basada en eventos para lidiar con el flujo del programa que estaba determinado por acciones del usuario, eventos generados por el sistema o mensajes de otros programas.<\/p>\n<p>El auge de los sistemas y servicios distribuidos a finales de los a\u00f1os 1990 y 2000 requiri\u00f3 arquitecturas impulsadas por eventos m\u00e1s sofisticadas para manejar la creciente complejidad de las interacciones, lo que finalmente condujo a la creaci\u00f3n de sistemas que pudieran reaccionar ante eventos tanto internos como externos.<\/p>\n<h2>Se revela la arquitectura basada en eventos<\/h2>\n<p>La arquitectura basada en eventos (EDA) es un paradigma de arquitectura de software que se centra en la producci\u00f3n, detecci\u00f3n, consumo y reacci\u00f3n a eventos. Estos eventos denotan un cambio de estado, desencadenado por una acci\u00f3n del usuario, como hacer clic con el mouse o presionar una tecla, o por una acci\u00f3n del sistema, como recibir un mensaje de otro sistema.<\/p>\n<p>En un EDA, los componentes de un sistema interact\u00faan entre s\u00ed produciendo y consumiendo eventos, donde un evento se define como un cambio significativo de estado. Estos componentes funcionan de manera desacoplada, lo que permite que los sistemas sean m\u00e1s flexibles, escalables y adaptables a los requisitos o condiciones ambientales cambiantes.<\/p>\n<h2>La estructura y el funcionamiento de la arquitectura basada en eventos<\/h2>\n<p>La estructura interna de una arquitectura basada en eventos gira en torno a cuatro componentes principales:<\/p>\n<ol>\n<li><strong>Productores de eventos:<\/strong> Los componentes que crean eventos y los publican en el canal de eventos.<\/li>\n<li><strong>Canal de eventos:<\/strong> El conducto para la distribuci\u00f3n de eventos.<\/li>\n<li><strong>Consumidores de eventos:<\/strong> Los componentes que se suscriben al canal de eventos para consumir eventos.<\/li>\n<li><strong>Procesadores de eventos:<\/strong> Los componentes que reaccionan ante eventos, generalmente ejecutando una acci\u00f3n espec\u00edfica.<\/li>\n<\/ol>\n<p>El proceso de una EDA sigue estos pasos:<\/p>\n<ol>\n<li>Un productor de eventos detecta un cambio de estado y crea un evento.<\/li>\n<li>El evento se publica en el canal de eventos.<\/li>\n<li>Los consumidores de eventos que est\u00e1n suscritos al canal de eventos consumen el evento.<\/li>\n<li>Los procesadores de eventos procesan el evento y posiblemente inician otras acciones.<\/li>\n<\/ol>\n<p>Este proceso permite un acoplamiento flexible, as\u00edncrono y en tiempo real de servicios, lo que contribuye a la capacidad de respuesta, escalabilidad y resistencia del sistema.<\/p>\n<h2>Caracter\u00edsticas clave de la arquitectura basada en eventos<\/h2>\n<p>EDA exhibe varias caracter\u00edsticas distintas:<\/p>\n<ol>\n<li><strong>Asincronicidad:<\/strong> Los productores y consumidores de eventos no necesitan interactuar ni estar activos al mismo tiempo.<\/li>\n<li><strong>Desacoplamiento:<\/strong> Los productores y consumidores de eventos no est\u00e1n directamente vinculados, lo que promueve la independencia y el aislamiento.<\/li>\n<li><strong>Respuesta en tiempo real:<\/strong> EDA permite que los sistemas respondan inmediatamente a informaci\u00f3n en tiempo real.<\/li>\n<li><strong>Escalabilidad:<\/strong> Debido a su naturaleza asincr\u00f3nica y desacoplada, EDA puede escalar f\u00e1cilmente para adaptarse a m\u00e1s productores, consumidores o eventos.<\/li>\n<li><strong>Resiliencia:<\/strong> El fallo en una parte del sistema no necesariamente afecta a todo el sistema.<\/li>\n<\/ol>\n<h2>Tipos de arquitectura basada en eventos<\/h2>\n<p>Existen varios tipos de Arquitecturas controladas por eventos, que se diferencian principalmente en la forma en que manejan los eventos:<\/p>\n<ol>\n<li><strong>Notificaci\u00f3n de eventos:<\/strong> El tipo m\u00e1s b\u00e1sico de EDA, en el que un productor de eventos simplemente env\u00eda una notificaci\u00f3n de que se ha producido un evento, pero no se requiere ninguna acci\u00f3n expl\u00edcita.<\/li>\n<li><strong>Transferencia de estado basada en eventos:<\/strong> El evento conlleva un cambio de estado en la carga \u00fatil, que los consumidores pueden utilizar para actualizar su propio estado.<\/li>\n<li><strong>Abastecimiento de eventos:<\/strong> Todos los cambios en el estado de la aplicaci\u00f3n se almacenan como una secuencia de eventos. Luego se pueden consultar estos eventos o se puede reconstruir el estado reproduciendo los eventos.<\/li>\n<li><strong>CQRS (Segregaci\u00f3n de responsabilidad de consulta de comando):<\/strong> Un EDA m\u00e1s complejo, donde el modelo para actualizar el estado est\u00e1 separado del modelo para leer el estado. Esto puede mejorar el rendimiento, la escalabilidad y la seguridad.<\/li>\n<\/ol>\n<table>\n<thead>\n<tr>\n<th>Tipos de AED<\/th>\n<th>Funci\u00f3n clave<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Notificaci\u00f3n de eventos<\/td>\n<td>Notificaci\u00f3n simple, no se requiere ninguna acci\u00f3n<\/td>\n<\/tr>\n<tr>\n<td>Transferencia de estado basada en eventos<\/td>\n<td>Cambio de estado en la carga \u00fatil.<\/td>\n<\/tr>\n<tr>\n<td>Abastecimiento de eventos<\/td>\n<td>Secuencia almacenada de eventos<\/td>\n<\/tr>\n<tr>\n<td>CQRS<\/td>\n<td>Modelos separados para actualizaci\u00f3n y lectura de estado.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Implementaci\u00f3n y gesti\u00f3n de una arquitectura basada en eventos<\/h2>\n<p>Los EDA se emplean com\u00fanmente en escenarios donde los datos en tiempo real y la capacidad de respuesta son cruciales, como los sistemas de negociaci\u00f3n de acciones, las plataformas de comercio electr\u00f3nico o los sistemas de IoT. Sin embargo, gestionar y depurar EDA puede resultar complicado debido a su naturaleza asincr\u00f3nica y distribuida.<\/p>\n<p>Las cuestiones clave incluyen el seguimiento de eventos, la coherencia de los datos y el orden de los eventos. Estos desaf\u00edos se pueden mitigar con un registro adecuado, identificadores de correlaci\u00f3n para rastrear cadenas de eventos, garantizar la idempotencia e implementar procedimientos s\u00f3lidos de recuperaci\u00f3n y manejo de errores.<\/p>\n<h2>Comparaciones y distinciones<\/h2>\n<p>EDA contrasta con arquitecturas m\u00e1s tradicionales basadas en solicitudes, como la Arquitectura Orientada a Servicios (SOA) o la Transferencia de Estado Representacional (REST). Mientras que SOA y REST normalmente implican comunicaci\u00f3n directa y sincr\u00f3nica y contratos r\u00edgidamente definidos, EDA enfatiza la interacci\u00f3n indirecta y asincr\u00f3nica y contratos de eventos flexibles.<\/p>\n<table>\n<thead>\n<tr>\n<th>Arquitectura<\/th>\n<th>Comunicaci\u00f3n<\/th>\n<th>Interacci\u00f3n<\/th>\n<th>Contrato<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>SOA<\/td>\n<td>Sincr\u00f3nico<\/td>\n<td>Directo<\/td>\n<td>R\u00edgido<\/td>\n<\/tr>\n<tr>\n<td>DESCANSAR<\/td>\n<td>Sincr\u00f3nico<\/td>\n<td>Directo<\/td>\n<td>R\u00edgido<\/td>\n<\/tr>\n<tr>\n<td>EDA<\/td>\n<td>Asincr\u00f3nico<\/td>\n<td>Indirecto<\/td>\n<td>Flexible<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Perspectivas y tecnolog\u00edas futuras en la arquitectura basada en eventos<\/h2>\n<p>La creciente tendencia hacia los microservicios y los sistemas distribuidos, combinada con el aumento del procesamiento de datos en tiempo real, hace que las EDA sean cada vez m\u00e1s relevantes. Se espera que las tecnolog\u00edas emergentes, como la inform\u00e1tica sin servidor, el an\u00e1lisis en tiempo real y el IoT, impulsen a\u00fan m\u00e1s la adopci\u00f3n de EDA.<\/p>\n<p>En el futuro, podemos esperar ver mejoras en las herramientas de gesti\u00f3n de eventos, capacidades de depuraci\u00f3n y seguimiento, y patrones arquitect\u00f3nicos avanzados para soportar mejor los EDA.<\/p>\n<h2>Servidores proxy y arquitectura basada en eventos<\/h2>\n<p>Los servidores proxy act\u00faan como intermediarios para las solicitudes de clientes que buscan recursos de otros servidores, proporcionando distintos niveles de funcionalidad, seguridad y privacidad. En un contexto EDA, los servidores proxy pueden desempe\u00f1ar un papel en la gesti\u00f3n del tr\u00e1fico de eventos, equilibrar cargas y proporcionar medidas de seguridad adicionales. Por ejemplo, un servidor proxy controlado por eventos podr\u00eda enrutar eventos din\u00e1micamente seg\u00fan su contenido, carga u otros factores, mejorando as\u00ed la adaptabilidad y solidez del sistema.<\/p>\n<h2>Enlaces relacionados<\/h2>\n<p>Para obtener m\u00e1s informaci\u00f3n sobre la arquitectura basada en eventos, consulte los siguientes recursos:<\/p>\n<ol>\n<li><a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/architecture\/guide\/architecture-styles\/event-driven\" target=\"_new\" rel=\"noopener nofollow\">Microsoft: estilo de arquitectura basada en eventos<\/a><\/li>\n<li><a href=\"https:\/\/www.ibm.com\/cloud\/learn\/event-driven-architecture\" target=\"_new\" rel=\"noopener nofollow\">IBM: \u00bfQu\u00e9 es la arquitectura basada en eventos?<\/a><\/li>\n<li><a href=\"https:\/\/martinfowler.com\/articles\/201701-event-driven.html\" target=\"_new\" rel=\"noopener nofollow\">Martin Fowler: \u00bfQu\u00e9 quiere decir con \u201cimpulsado por eventos\u201d?<\/a><\/li>\n<\/ol>","protected":false},"featured_media":468337,"menu_order":0,"template":"","meta":{"_acf_changed":false,"content-type":"","inline_featured_image":false,"footnotes":""},"class_list":["post-477131","wiki","type-wiki","status-publish","has-post-thumbnail","hentry"],"acf":{"faq_title":"Frequently Asked Questions about <mark>Event-Driven Architecture: A Comprehensive Analysis<\/mark>","faq_items":[{"question":"What is Event-Driven Architecture (EDA)?","answer":"<p>Event-Driven Architecture (EDA) is a software design pattern that focuses on the production, detection, consumption, and reaction to events. An event is a significant change in state, usually triggered by a user or system action. The components of an EDA interact by producing and consuming these events, enabling a high degree of decoupling and adaptability.<\/p>"},{"question":"What are the key components of an Event-Driven Architecture?","answer":"<p>The key components of an Event-Driven Architecture are Event Producers that create events, an Event Channel that facilitates the distribution of events, Event Consumers that consume the events, and Event Processors that respond to the events.<\/p>"},{"question":"What are the key features of an Event-Driven Architecture?","answer":"<p>The key features of an Event-Driven Architecture include asynchronicity, decoupling, real-time responsiveness, scalability, and resilience.<\/p>"},{"question":"What types of Event-Driven Architecture exist?","answer":"<p>There are several types of Event-Driven Architectures, including Event Notification, Event-Based State Transfer, Event Sourcing, and Command Query Responsibility Segregation (CQRS).<\/p>"},{"question":"How does Event-Driven Architecture compare to Service Oriented Architecture (SOA) or Representational State Transfer (REST)?","answer":"<p>While SOA and REST typically involve synchronous, direct communication and rigidly defined contracts, Event-Driven Architecture emphasizes asynchronous, indirect interaction and flexible event contracts.<\/p>"},{"question":"What are the future perspectives and technologies related to Event-Driven Architecture?","answer":"<p>With the growing trend towards microservices and distributed systems and the rise of real-time data processing, the relevance of Event-Driven Architectures is increasing. Technologies such as serverless computing, real-time analytics, and IoT are expected to further drive the adoption of EDAs.<\/p>"},{"question":"How can proxy servers be used or associated with Event-Driven Architecture?","answer":"<p>In an EDA context, proxy servers can play a role in managing event traffic, balancing loads, and providing additional security measures. For example, an event-driven proxy server might dynamically route events based on their content, load, or other factors, thereby enhancing the system's adaptability and robustness.<\/p>"}]},"_links":{"self":[{"href":"https:\/\/oneproxy.pro\/es\/wp-json\/wp\/v2\/wiki\/477131","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oneproxy.pro\/es\/wp-json\/wp\/v2\/wiki"}],"about":[{"href":"https:\/\/oneproxy.pro\/es\/wp-json\/wp\/v2\/types\/wiki"}],"version-history":[{"count":0,"href":"https:\/\/oneproxy.pro\/es\/wp-json\/wp\/v2\/wiki\/477131\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/oneproxy.pro\/es\/wp-json\/wp\/v2\/media\/468337"}],"wp:attachment":[{"href":"https:\/\/oneproxy.pro\/es\/wp-json\/wp\/v2\/media?parent=477131"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}