Terceira parte da série sobre Saiba projetar APIs confiáveis e robustas.
À medida que mais organizações se preocupam com a importância da arquitetura orientada a eventos (EDA) para seus programas de TI, as empresas estão mudando suas tecnologias e práticas de um estilo puramente RESTful para um que incorpora REST e o que venho chamando de EVENTful estilo.
Essa abordagem híbrida faz sentido para a maioria das organizações e oferece bastante flexibilidade e oportunidade. Mas há desafios para fazer esse tipo de alteração e uma das primeiras coisas com que lidar é o problema clássico de "nomear as coisas".
Nesta série contínua, eu introduzi a noção geral de padrões EVENTful e cobri a primeira das quatro abordagens comuns: Notificação de Evento ou EN . Neste artigo (parte três), explorarei uma abordagem poderosa para a implementação de EDA chamada estado realizado por evento ou ECS.
O que é Event-carried State Transfer?
As mensagens Event-carried State Transfer (ECS) são semelhantes às notificações de eventos simples que abordamos anteriormente.
No entanto, em vez de apenas fornecer informações de alerta superficial como “Mike acabou de se conectar ao servidor-001”, as mensagens do ECS carregam todas as informações relacionadas ao evento em questão.
A versão ECS dessa mensagem conteria detalhes adicionais importantes. Por exemplo, pode conter informações completas sobre o registro da conta de Mike, juntamente com detalhes adicionais, como dados de localização do dispositivo móvel quando ele fez login e informações relacionadas à segurança, como seu perfil de controle de acesso atribuído.
Isso torna as mensagens do ECS muito poderosas. Como o ECS é um tipo de mensagem “pesado”, normalmente é usado para armazenar dados em um banco de dados ou transferir grandes blocos de dados de um sistema para outro.
Por exemplo, as informações de login descritas acima podem ser usadas para atualizar o registro do usuário de Mike no banco de dados ou adicionar aos dados de registro para todos que acessam seu sistema.
Na verdade, você pode pensar nas mensagens do ECS como os objetos de recurso JSON comumente usados para gravar dados em sistemas RESTful. Isso torna as mensagens do ECS uma abordagem útil quando você está mapeando sua mudança de implementações RESTful para EVENTful.
Outra vantagem importante da abordagem ECS é que, ao transportar detalhes dos dados que foram adicionados ou alterados, você pode reduzir o tráfego na rede.
A consistência dos dados
O padrão de mensagem do ECS também tem algumas implicações importantes para serviços de armazenamento de dados.
Em primeiro lugar, ao usar mensagens do ECS transmitidas para várias fontes, você introduz a possibilidade de inconsistência no armazenamento de dados. Isso acontece quando o Storage System A (SSA) processa e armazena as informações da mensagem do ECS antes do Storage System B (SSB).
Essa inconsistência pode durar apenas alguns milissegundos, mas, em um sistema de alto tráfego que envia milhares de mensagens ECS, a probabilidade de uma leitura inconsistente aumenta rapidamente.
Duplicação de Dados
Em sistemas que dependem de uma única fonte de verdade ou padrão de armazenamento de dados de sistema de registro (SOR), o registro ECS precisa ter todos os dados possivelmente relevantes para garantir que o armazenamento de dados seja mantido atualizado.
Incluir esses dados inalterados pode ser importante quando o sistema de armazenamento de dados precisa validar a integridade das informações antes de salvá-las e processá-las para uso futuro.
Resumindo
As mensagens de estado transportadas por eventos representam um grande compromisso com a mudança da infraestrutura RESTful para a EVENTful.
Quando sua organização está pronta para passar de notificações simples para o uso de implementações EVENTful para ler e gravar dados vitais, a abordagem ECS é uma adição valiosa ao seu kit de ferramentas EDA.
Entretanto, esteja ciente de que, ao passar para o nível de ECS, você precisará lidar com o eventual problema de consistência e com a possibilidade de duplicação de dados e tamanhos de mensagens maiores.
Se você deseja continuar a oferecer suporte à gravação de dados em suas implementações EVENTful e também deseja reduzir o tamanho dos payloads das mensagens, seria melhor usar outro estilo de mensagem EDA: Event Streaming (ES).
Este artigo foi escrito por Mike Amundsen e publicado originalmente em Prensa.li.