{"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\/pt\/wiki\/event-driven-architecture\/","title":{"rendered":"Arquitetura orientada a eventos"},"content":{"rendered":"<p>Arquitetura orientada a eventos (EDA) \u00e9 um padr\u00e3o de design de software que confere uma estrutura para projetar e implementar aplica\u00e7\u00f5es ou sistemas que reagem a mudan\u00e7as no ambiente. Esse comportamento reativo normalmente abrange o recebimento, o processamento e o envio de eventos, permitindo que os componentes do sistema funcionem de maneira desacoplada, aumentando assim a escalabilidade e a adaptabilidade.<\/p>\n<h2>A G\u00eanese da Arquitetura Orientada a Eventos<\/h2>\n<p>A programa\u00e7\u00e3o orientada a eventos remonta aos prim\u00f3rdios das interfaces gr\u00e1ficas de usu\u00e1rio (GUIs) e tem suas origens no final dos anos 1960 e in\u00edcio dos anos 1970. O padr\u00e3o de design surgiu como uma solu\u00e7\u00e3o natural para gerenciar a\u00e7\u00f5es iniciadas pelo usu\u00e1rio, como cliques em bot\u00f5es ou pressionamentos de teclas, que s\u00e3o inerentemente imprevis\u00edveis e ass\u00edncronos. Neste contexto, surgiu a ideia de programa\u00e7\u00e3o orientada a eventos para lidar com o fluxo do programa que era determinado pelas a\u00e7\u00f5es do usu\u00e1rio, eventos gerados pelo sistema ou mensagens de outros programas.<\/p>\n<p>A ascens\u00e3o de sistemas e servi\u00e7os distribu\u00eddos no final da d\u00e9cada de 1990 e na d\u00e9cada de 2000 exigiu arquiteturas orientadas a eventos mais sofisticadas para lidar com a crescente complexidade das intera\u00e7\u00f5es, levando eventualmente \u00e0 cria\u00e7\u00e3o de sistemas que pudessem reagir a eventos internos e externos.<\/p>\n<h2>Revelada arquitetura orientada a eventos<\/h2>\n<p>Arquitetura Orientada a Eventos (EDA) \u00e9 um paradigma de arquitetura de software que se concentra na produ\u00e7\u00e3o, detec\u00e7\u00e3o, consumo e rea\u00e7\u00e3o a eventos. Esses eventos denotam uma mudan\u00e7a de estado, desencadeada por uma a\u00e7\u00e3o do usu\u00e1rio, como clicar no mouse ou pressionar uma tecla, ou por uma a\u00e7\u00e3o do sistema, como receber uma mensagem de outro sistema.<\/p>\n<p>Em um EDA, os componentes de um sistema interagem entre si produzindo e consumindo eventos, onde um evento \u00e9 definido como uma mudan\u00e7a significativa de estado. Esses componentes funcionam de maneira desacoplada, permitindo que os sistemas sejam mais flex\u00edveis, escal\u00e1veis e adapt\u00e1veis \u00e0s mudan\u00e7as nos requisitos ou nas condi\u00e7\u00f5es ambientais.<\/p>\n<h2>A Estrutura e Funcionamento da Arquitetura Orientada a Eventos<\/h2>\n<p>A estrutura interna de uma arquitetura orientada a eventos gira em torno de quatro componentes principais:<\/p>\n<ol>\n<li><strong>Produtores de eventos:<\/strong> Os componentes que criam eventos e os publicam no canal de eventos.<\/li>\n<li><strong>Canal do Evento:<\/strong> O canal para distribui\u00e7\u00e3o de eventos.<\/li>\n<li><strong>Consumidores de eventos:<\/strong> Os componentes que se inscrevem no canal de eventos para consumir eventos.<\/li>\n<li><strong>Processadores de eventos:<\/strong> Os componentes que reagem aos eventos, geralmente executando uma a\u00e7\u00e3o espec\u00edfica.<\/li>\n<\/ol>\n<p>O processo de uma EDA segue estas etapas:<\/p>\n<ol>\n<li>Um Produtor de Eventos detecta uma mudan\u00e7a de estado e cria um evento.<\/li>\n<li>O evento \u00e9 publicado no Canal de Eventos.<\/li>\n<li>Os Consumidores de Eventos inscritos no Event Channel consomem o evento.<\/li>\n<li>Os processadores de eventos processam o evento e possivelmente iniciam outras a\u00e7\u00f5es.<\/li>\n<\/ol>\n<p>Esse processo permite o acoplamento de servi\u00e7os em tempo real, ass\u00edncrono e flex\u00edvel, o que contribui para a capacidade de resposta, escalabilidade e resili\u00eancia do sistema.<\/p>\n<h2>Principais recursos da arquitetura orientada a eventos<\/h2>\n<p>EDA exibe v\u00e1rias caracter\u00edsticas distintas:<\/p>\n<ol>\n<li><strong>Assincronicidade:<\/strong> Produtores e consumidores de eventos n\u00e3o precisam interagir ou mesmo estar ativos ao mesmo tempo.<\/li>\n<li><strong>Dissocia\u00e7\u00e3o:<\/strong> Produtores e consumidores de eventos n\u00e3o est\u00e3o diretamente ligados, o que promove independ\u00eancia e isolamento.<\/li>\n<li><strong>Resposta em tempo real:<\/strong> A EDA permite que os sistemas respondam imediatamente \u00e0s informa\u00e7\u00f5es em tempo real.<\/li>\n<li><strong>Escalabilidade:<\/strong> Devido \u00e0 sua natureza ass\u00edncrona e dissociada, a EDA pode facilmente ser dimensionada para acomodar mais produtores, consumidores ou eventos.<\/li>\n<li><strong>Resili\u00eancia:<\/strong> A falha numa parte do sistema n\u00e3o perturba necessariamente todo o sistema.<\/li>\n<\/ol>\n<h2>Tipos de arquitetura orientada a eventos<\/h2>\n<p>Existem v\u00e1rios tipos de Arquiteturas Orientadas a Eventos, diferindo principalmente na forma como lidam com eventos:<\/p>\n<ol>\n<li><strong>Notifica\u00e7\u00e3o de evento:<\/strong> O tipo mais b\u00e1sico de EDA, no qual um produtor de eventos simplesmente envia uma notifica\u00e7\u00e3o de que um evento ocorreu, mas nenhuma a\u00e7\u00e3o \u00e9 explicitamente necess\u00e1ria.<\/li>\n<li><strong>Transfer\u00eancia de estado baseada em eventos:<\/strong> O evento traz uma mudan\u00e7a de estado na carga \u00fatil, que os consumidores podem usar para atualizar seu pr\u00f3prio estado.<\/li>\n<li><strong>Fonte de eventos:<\/strong> Todas as altera\u00e7\u00f5es no estado do aplicativo s\u00e3o armazenadas como uma sequ\u00eancia de eventos. Esses eventos podem ent\u00e3o ser consultados ou o estado pode ser reconstru\u00eddo reproduzindo os eventos.<\/li>\n<li><strong>CQRS (segrega\u00e7\u00e3o de responsabilidade de consulta de comando):<\/strong> Um EDA mais complexo, onde o modelo de atualiza\u00e7\u00e3o do estado \u00e9 separado do modelo de leitura do estado. Isso pode melhorar o desempenho, a escalabilidade e a seguran\u00e7a.<\/li>\n<\/ol>\n<table>\n<thead>\n<tr>\n<th>Tipos de EDA<\/th>\n<th>Caracter\u00edstica chave<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Notifica\u00e7\u00e3o de Evento<\/td>\n<td>Notifica\u00e7\u00e3o simples, nenhuma a\u00e7\u00e3o necess\u00e1ria<\/td>\n<\/tr>\n<tr>\n<td>Transfer\u00eancia de estado baseada em eventos<\/td>\n<td>Mudan\u00e7a de estado na carga \u00fatil<\/td>\n<\/tr>\n<tr>\n<td>Fonte de Eventos<\/td>\n<td>Sequ\u00eancia armazenada de eventos<\/td>\n<\/tr>\n<tr>\n<td>CQRS<\/td>\n<td>Modelos separados para atualiza\u00e7\u00e3o e leitura de estado<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Implementando e gerenciando arquitetura orientada a eventos<\/h2>\n<p>Os EDAs s\u00e3o comumente empregados em cen\u00e1rios onde os dados em tempo real e a capacidade de resposta s\u00e3o cruciais, como sistemas de negocia\u00e7\u00e3o de a\u00e7\u00f5es, plataformas de com\u00e9rcio eletr\u00f4nico ou sistemas IoT. No entanto, gerenciar e depurar EDAs pode ser um desafio devido \u00e0 sua natureza ass\u00edncrona e distribu\u00edda.<\/p>\n<p>Os principais problemas incluem rastreamento de eventos, consist\u00eancia de dados e ordem de eventos. Esses desafios podem ser mitigados com registro adequado, identificadores de correla\u00e7\u00e3o para rastrear cadeias de eventos, garantir idempot\u00eancia e implementar procedimentos robustos de tratamento e recupera\u00e7\u00e3o de erros.<\/p>\n<h2>Compara\u00e7\u00f5es e distin\u00e7\u00f5es<\/h2>\n<p>EDA contrasta com arquiteturas mais tradicionais orientadas a solicita\u00e7\u00f5es, como Arquitetura Orientada a Servi\u00e7os (SOA) ou Transfer\u00eancia de Estado Representacional (REST). Enquanto SOA e REST normalmente envolvem comunica\u00e7\u00e3o s\u00edncrona e direta e contratos rigidamente definidos, EDA enfatiza intera\u00e7\u00e3o indireta e ass\u00edncrona e contratos de eventos flex\u00edveis.<\/p>\n<table>\n<thead>\n<tr>\n<th>Arquitetura<\/th>\n<th>Comunica\u00e7\u00e3o<\/th>\n<th>Intera\u00e7\u00e3o<\/th>\n<th>Contrato<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>SOA<\/td>\n<td>S\u00edncrono<\/td>\n<td>Direto<\/td>\n<td>R\u00edgido<\/td>\n<\/tr>\n<tr>\n<td>DESCANSAR<\/td>\n<td>S\u00edncrono<\/td>\n<td>Direto<\/td>\n<td>R\u00edgido<\/td>\n<\/tr>\n<tr>\n<td>EDA<\/td>\n<td>Ass\u00edncrono<\/td>\n<td>Indireto<\/td>\n<td>Flex\u00edvel<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Perspectivas e tecnologias futuras em arquitetura orientada a eventos<\/h2>\n<p>A tend\u00eancia crescente para microsservi\u00e7os e sistemas distribu\u00eddos, combinada com o aumento do processamento de dados em tempo real, torna os EDAs cada vez mais relevantes. Espera-se que tecnologias emergentes, como computa\u00e7\u00e3o sem servidor, an\u00e1lise em tempo real e IoT, impulsionem ainda mais a ado\u00e7\u00e3o de EDAs.<\/p>\n<p>No futuro, podemos esperar melhorias nas ferramentas de gerenciamento de eventos, nos recursos de depura\u00e7\u00e3o e rastreamento e nos padr\u00f5es de arquitetura avan\u00e7ados para melhor suporte aos EDAs.<\/p>\n<h2>Servidores proxy e arquitetura orientada a eventos<\/h2>\n<p>Os servidores proxy atuam como intermedi\u00e1rios para solicita\u00e7\u00f5es de clientes que buscam recursos de outros servidores, fornecendo diversos n\u00edveis de funcionalidade, seguran\u00e7a e privacidade. Num contexto EDA, os servidores proxy podem desempenhar um papel na gest\u00e3o do tr\u00e1fego de eventos, no equil\u00edbrio de cargas e no fornecimento de medidas de seguran\u00e7a adicionais. Por exemplo, um servidor proxy orientado a eventos pode rotear eventos dinamicamente com base em seu conte\u00fado, carga ou outros fatores, aumentando assim a adaptabilidade e a robustez do sistema.<\/p>\n<h2>Links Relacionados<\/h2>\n<p>Para obter mais informa\u00e7\u00f5es sobre Arquitetura Orientada a Eventos, consulte os seguintes 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 \u2013 estilo de arquitetura orientada a eventos<\/a><\/li>\n<li><a href=\"https:\/\/www.ibm.com\/cloud\/learn\/event-driven-architecture\" target=\"_new\" rel=\"noopener nofollow\">IBM \u2013 O que \u00e9 arquitetura orientada a eventos?<\/a><\/li>\n<li><a href=\"https:\/\/martinfowler.com\/articles\/201701-event-driven.html\" target=\"_new\" rel=\"noopener nofollow\">Martin Fowler \u2013 O que voc\u00ea quer dizer com \u201corientado a 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\/pt\/wp-json\/wp\/v2\/wiki\/477131","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oneproxy.pro\/pt\/wp-json\/wp\/v2\/wiki"}],"about":[{"href":"https:\/\/oneproxy.pro\/pt\/wp-json\/wp\/v2\/types\/wiki"}],"version-history":[{"count":0,"href":"https:\/\/oneproxy.pro\/pt\/wp-json\/wp\/v2\/wiki\/477131\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/oneproxy.pro\/pt\/wp-json\/wp\/v2\/media\/468337"}],"wp:attachment":[{"href":"https:\/\/oneproxy.pro\/pt\/wp-json\/wp\/v2\/media?parent=477131"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}