Post on 20-Jul-2015
Aprendizados de uma arquitetura Aprendizados de uma arquitetura dirigida a eventos (EDA/ECA)dirigida a eventos (EDA/ECA)
……Do conceito ao multiplataformaDo conceito ao multiplataforma
Guilherme Elias@guilhermelias
https://github.com/geliashttp://codingbyexample.org
http://br.linkedin.com/in/guilhermeeilas
• O que é?
Padrão de desenvolvimento de software :-)
• Serve para?
Detecção de eventos (sensor - trigger); Monitoramento de eventos (monitor);
EDA - Event-driven Architecture
•ECA – Event Condition Action
Nada mais do que um “regra”!
Ex.: Sinistro ocorrido!
Evento: Após o reconhecimento de um sinistroCondição: Caso o prejuízo presente 90% do valor do bem Ação: Inicia processo de ressarcimento do bem!
Evento: Após finalizar atendimento via helpdeskAção: Enviar SMS solicitando nota para o atendimento
EDA - Event-driven Architecture
•ECA – Event Condition Action • Event : … computacionalmente representa algo que ocorreu.
… simplesmente uma troca de estado.
EDA - Event-driven Architecture
http://en.wikipedia.org/wiki/Event
http://en.wikipedia.org/wiki/Event_driven_architecture
•ECA – Event Condition Action
• Condition :
EDA - Event-driven Architecture
•ECA – Event Condition Action
• Action :
Realização de uma operação;
Atualização de um estado;
EDA - Event-driven Architecture
•ECA – Event Condition Action
EDA - Event-driven Architecture
Simples Complexa
• Camadas de um estrutura EDA
I. Event Generator
Criação/Instalação de sensores;
… onMouseClick (listener) … após criar uma ordem de compra … após realizar baixa no estoque
EDA - Event-driven Architecture
• Considere …
Prover modelagens reusáveis!
Visar sempre o baixo acoplamento!
Apenas repassar informações/dados do contexto atual;
Dependencias;
EDA - Event-driven Architecture
• Camadas de um estrutura EDA
II. Event Channel
Mecanismo de tráfego de informações;
- XML - JSON - CSV - RDF (Resource Description Framework)
EDA - Event-driven Architecture
http://www.w3schools.com
• Considere …
Prover facilitadores para a criação do “contexto”;
Quanto menos verboso melhor (JSON)
Estruturar de forma que seja possível pesquisar;
EDA - Event-driven Architecture
• Camadas de um estrutura EDA
III. Event Processing Engine
Onde é IDENTIFICADA e EXECUTADA a “reação”;
EDA - Event-driven Architecture
• Considere … Deve possuir custo de processamento baixissimo;
Basicamente um interpretador; Um mesmo evento pode executar ações totalmente distintas;
Deve conseguir executar eventos de forma assíncrona;
Deve trafegar apenas informações necessárias;
EDA - Event-driven Architecture
• Modularidade / Componentização
Responsabilidades bem distribuidas;
Baixo Acoplamento;
EDA - Event-driven Architecture
EDA - Event-driven Architecture
http://martinfowler.com/articles/lmax.html
• Onde pode ser útil
Regras de Negócio (BPM) Sistemas de alerta/monitoramento Automação de tarefas operacionais
… onde consiga se criar um regra!
EDA - Event-driven Architecture
• Ferramentas de mercado
Droolshttp://www.jboss.org/drools/
Outras open sourcehttp://java-source.net/open-source/rule-
engines
EDA - Event-driven Architecture
Event-driven Architecture http://en.wikipedia.org/wiki/Event-driven_architecture
Artigos: http://www.di.unipi.it/~brogi/papers/JELIA06.pdf http://www.ibm.com/developerworks/websphere/library/techarticles/0810_mcginnes/0810_mcginnes.html http://dl.dropbox.com/u/20315902/EventDrivenArchitectureOverview_ElementalLinks_Feb2011.pdf
Event Sourcing: http://martinfowler.com/eaaDev/EventSourcing.html
ECA Rules http://en.wikipedia.org/wiki/Event_Condition_Action
Business Process Management http://en.wikipedia.org/wiki/Rule_engine http://en.wikipedia.org/wiki/Business_process_management
Referências e Links