O que significa ser controlado por evento e qual é a velocidade do tempo real?
Se pensarmos nisso, poderemos identificar muitos cenários orientados a eventos. Muitos deles exigem uma reação em tempo real.
O que queremos dizer com tempo real?
Uma reação em tempo real pode ser considerada uma resposta imediata. Vamos usar o exemplo de um atendente que trabalha em uma cafeteria e pergunta o que você deseja beber.
O atendente espera receber uma resposta imediata ou pelo menos uma resposta em breve. Caso contrário, ele poderá reformular a pergunta ou achar que você foi grosseiro. Dar uma resposta rápida é necessário e apropriado. O tempo de resposta pode variar um pouco, mas ainda é visto como "em tempo real". Portanto, retornar uma saudação deve acontecer rapidamente, mas não há problema em pensar brevemente sobre seu pedido para responder à pergunta do caixa.
Caso converta esse cenário para sistemas de software, os intervalos de tempo serão a parte mais importante: Tempo de Resposta, Tempo de Conclusão, Tempo de Acesso, Tempo de Inicialização e assim por diante. O usuário ou o aplicativo de acesso definem esses tempos.
Observação
As tarefas dos sistemas executam funções dentro do prazo preestabelecido em tempo real.
Recomendamos estar sempre atento ao que está acontecendo em seu sistema. Portanto, não se esqueça do óbvio: registrar em log, executar o monitoramento e medir os intervalos de tempo.
Importante
Lembre-se de especificar prazos e intervalos de tempo com antecedência, bem como configurar uma solução de monitoramento sem bloqueio para executar verificações.
Em resumo, concordamos que o termo em tempo real significa super-rápido ou imediato. A exatidão dessa velocidade é especificada pelo seu cenário.
Aplicativos controlados por eventos
Caso esteja pensando em um evento de clique, reconsidere essa ideia. Os aplicativos orientados a eventos usam o princípio de acionar e esquecer. O evento será enviado ao próximo sistema ou acionado nele. Esse sistema pode ser outro serviço, como um hub de eventos, um streaming ou um agente de mensagens como o Kafka. Não é necessário aguardar por uma resposta do próximo serviço no sistema. O acoplamento flexível é obtido pelo preço da consistência eventual, que precisa ser abordado em outro nível.
Para identificar as características de aplicativos controlados por evento, vamos examinar os principais padrões de arquitetura usando o exemplo de um cliente chamado Alex que está comprando um café e um cappuccino.
Notificação de eventos
Notificação de eventos é a notificação de um acontecimento ou evento específico. Cada evento é visto separadamente. O exemplo de um cliente chamado Alex que está comprando um café e um cappuccino talvez seja semelhante ao seguinte:
1. Evento: Alex compra um café.
2. Evento: Alex compra um cappuccino.
Um barista deverá escutar com atenção todos os eventos para anotar o pedido completo de Alex. Contudo, dois baristas também deverão preparar e servir as bebidas de modo independente.
Transferência de estado realizada por evento
Com a transferência de estado realizada por evento, todas as informações necessárias serão armazenadas em um evento único. Isso será útil caso um evento seja perdido ou o serviço não esteja escutando todos os eventos. Por exemplo, os eventos podem ser os seguintes:
1. Evento: Alex compra um café.
2. Evento: Alex compra um cappuccino, além do café.
Com um barista, ouvir somente o segundo evento talvez seja suficiente. Com dois baristas, o segundo deverá examinar o primeiro. É possível servir o pedido em conjunto, porém esse processo talvez demore mais do que servi-lo de modo completamente separado.
Fornecimento de eventos
Com o fornecimento de eventos, o foco será o armazenamento de eventos. Como você pode ver, os eventos são os mesmos que no primeiro exemplo. Mas a figura do barista é importante para esse conceito no momento em que ele recebe um evento e, a seguir, reflete sobre todos os eventos correspondentes para obter o estado atual de todos os pedidos feitos por Alex.
Com o segundo pedido, o barista saberá que o pedido de Alex consiste em um café ao lembrar que o primeiro pedido foi um cappuccino porque essa bebida acabou de ser pedida. Trabalhar em paralelo com um segundo barista não é tão fácil.
Quando adicionamos um caixa para receber os pedidos e servir as bebidas, os baristas podem trabalhar de forma independente para preparar as bebidas. Não precisam saber nada sobre os clientes. O atendente representa o repositório de eventos. Ele manterá os eventos nesse cenário. O fornecimento de eventos adicionará outra camada de complexidade e um desacoplamento.
1. Evento: Alex compra um café.
Atendente: (primeiro) pedido (para Alex): café
2. Evento: Alex compra um cappuccino.
Atendente: (segundo) pedido (para Alex): cappuccino
Dados telemétricos são eventos em tempo real
Também podemos pensar em outros exemplos. Imagine um cenário em que é preciso operar um sistema de refrigeração para fabricantes de alimentos ou medicamentos, por exemplo. Você precisa manter um controle constante da temperatura e de outros dados relevantes no seu sistema. O conhecimento e o controle automático de dados telemétricos serão fundamentais para obter êxito. Um sistema controlado por evento consiste em medir a telemetria a cada dois segundos e enviá-la a um sistema de controle em que os dados serão analisados, processados e gerenciados. Além disso, os dados deverão ser processados em tempo real porque é fundamental reagir de modo rápido a fim de evitar consequências desastrosas para os negócios.