As arquiteturas orientadas a eventos não exigiam novos sistemas de mensagens para que seus serviços interoperassem; Eles só precisavam de pequenos envelopes para transmitir todos os metadados aos sistemas de mensagens existentes. Esse foi o brilho por trás do projeto de código aberto CloudEvents.
Na semana passada, a Cloud Native Computing Foundation graduou a especificação CloudEvents, tornando-a um membro de pleno direito da pilha nativa de nuvem cada vez maior do CNCF.
Mas o formato simples já obteve sucesso em muitos serviços de produção no nível da nuvem.
Por exemplo, a Microsoft usa CloudEvents para anotar eventos no pacote de produtividade Microsoft 365. É também o modelo de evento padrão para os serviços de nuvem do Azure, bem como para o tempo de execução do DAPR, anotando bilhões de mensagens todos os dias. Os clientes empresariais da Microsoft também estão adotando a especificação para se conectarem mais estreitamente à infraestrutura da Microsoft.
“É um modelo de dados simples com foco na descrição do contexto de eventos que funciona com vários protocolos populares e codificações de dados de maneira uniforme, sem tentar inventar novos recursos de protocolo ou atrapalhar os recursos de protocolo existentes”, entusiasmou-se. O arquiteto principal da Microsoft, Clemens Vasters, em comunicado.
Como funciona o CloudEvents
O projeto surgiu do grupo de trabalho serverless CNCF, cuja missão era identificar as necessidades de quem adota tecnologias serverless.
Serverless trata da realização de chamadas de função de curta duração, que geralmente são incorporadas em uma Arquitetura Orientada a Eventos (EDA).
A EDA requer “muito código especializado no middleware para rotear os eventos de maneira adequada”, disse Doug Davis, copresidente da CloudEvents e do CNCF Serverless WG, em entrevista ao The New Stack. No entanto, isso requer muita tradução (“código cola”), pois um provedor de eventos, como uma Função como Serviço, pode ser executado em um barramento de comunicação diferente ou usar um protocolo diferente daquele que o resto do sistema pode usar.
Assim como acontece com o gerenciamento de API, os usuários precisavam de um nível mais alto de abstração para comunicar a “intenção” em vários sistemas, elaborou ainda mais o arquiteto SAP e colaborador principal do CloudEvents, Klaus Deißner.
“O processamento de curta duração orientado a eventos está impulsionando a adoção antecipada e casos de uso para empresas que esperam uma alta taxa de mudança com capacidade imprevisível e necessidades de infraestrutura estão surgindo” – white paper de 2018 do grupo de trabalho CNCF Serverless
Com CloudEvents, quando uma fonte gera uma mensagem, ela encapsula no cabeçalho da mensagem um evento de descrição. Quando a mensagem chega ao destino, esta descrição fornece ao receptor mais dados sobre o evento geral, que de outra forma seriam perdidos.
A descrição também pode ser usada para roteamento.
Por exemplo, uma solicitação pull do GitHub pode ser um CloudEvent em potencial. O evento é definido uma vez e um middleware, usando um analisador de expressão regular, pode rotear a solicitação para o repositório correto, com base nas informações da mensagem CloudEvents.
As mensagens podem ser anexadas aos CloudEvents do próprio produtor do evento ou por um adaptador simples.
“A questão é que você não precisa de um monte de infraestrutura por aí? Qualquer infraestrutura que você tenha hoje deve ter a capacidade de fazer coisas simples, como adicionar um cabeçalho HTTP ou ler um cabeçalho HTTP no lado receptor para descobrir o que fazer”, disse Davis.
Qual é a arquitetura para CloudEvents?
Uma das principais virtudes do CloudEvents é a sua simplicidade, disse Davis.
Em vez de criar um novo sistema de mensagens para computação nativa em nuvem, a CloudEvents amplia os protocolos de mensagens e serialização existentes, simplesmente aumentando a infraestrutura de eventos já existente.
“Não estamos criando um conjunto totalmente novo de middleware e estávamos muito conscientes de não fazer isso”, disse Davis. “Queríamos que as pessoas se adaptassem lentamente ao CloudEvents sem ter que reinventar toda a sua arquitetura de middleware.”
Ao usar HTTP, por exemplo, um novo cabeçalho é simplesmente adicionado à mensagem, seja em texto simples ou em formato binário.
A arquitetura completa do CloudEvents, que pode ser executada em diferentes formatos de mensagens e serialização, consiste em:
A especificação básica define um conjunto de atributos principais e opcionais, formatados como pares de valores-chave. Esta especificação também oferece regras associadas para o que constitui um CloudEvent.
Um formato para extensões para adicionar regras específicas de casos de uso, como suporte para diferentes padrões de rastreamento. As extensões geradas pelo usuário devem seguir a mesma convenção de nomenclatura e usar o mesmo sistema de tipos dos atributos padrão.
Codificações de formato de eventopara mapear os metadados para elementos de cabeçalho e carga útil de um protocolo de aplicativo (ou seja, JSON).
Ligações de protocolo defina como o CloudEvent está vinculado ao quadro de transporte de um protocolo de aplicativo (ou seja, a mensagem HTTP ou ligações WebHooks).
O projeto possui kits de desenvolvimento de software (SDKs) para nove linguagens de programação diferentes, bem como um conjunto robusto de ligações de protocolo.
Fonte: Apresentação CNCF
Quem usa CloudEvents?
Desde a sua estreia em 2018, CloudEvents foi aprimorado por mais de 340 colaboradores de 122 organizações diferentes.
No lado comercial, usuários notáveis incluem Adobe I/O Events, Alibaba Cloud EventBridge, Comissão Europeia, Google Cloud Eventarc e IBM Cloud Code Engine, entre outros.
Também é usado em muitos outros projetos CNCF. Usado no Knative Eventing, CloudEvents fornece uma maneira de construir aplicativos orientados a eventos no Kubernetes, permitindo que eles se integrem facilmente com Apache Camel, Tekton e Quarkus.
Ele também está incorporado no Argo, Falco, Harbour e Serverless Workflow da CNCF – um projeto relacionado do Serverless WG.
A equipe CloudEvents iniciou um novo projeto chamado xRegistry para desenvolver um conjunto padrão de APIs para registros. Os metadados também podem ser usados para análise subsequente.
YOUTUBE.COM/THENEWSTACK
A tecnologia avança rápido, não perca um episódio. Inscreva-se em nosso canal no YouTube para transmitir todos os nossos podcasts, entrevistas, demonstrações e muito mais.
SE INSCREVER
Joab Jackson é editor sênior do The New Stack, cobrindo computação nativa em nuvem e operações de sistema. Ele faz reportagens sobre infraestrutura e desenvolvimento de TI há mais de 25 anos, incluindo passagens pela IDG e pela Government Computer News. Antes disso, ele…
Este site utiliza cookies para melhorar sua experiência de navegação. Ao continuar, você concorda com o uso de cookies. Para mais informações, consulte nossa Política de Privacidade.
Funcional
Sempre ativo
O armazenamento ou acesso técnico é estritamente necessário para a finalidade legítima de permitir a utilização de um serviço específico explicitamente solicitado pelo assinante ou utilizador, ou com a finalidade exclusiva de efetuar a transmissão de uma comunicação através de uma rede de comunicações eletrónicas.
Preferências
O armazenamento ou acesso técnico é necessário para o propósito legítimo de armazenar preferências que não são solicitadas pelo assinante ou usuário.
Estatísticas
O armazenamento ou acesso técnico que é usado exclusivamente para fins estatísticos.O armazenamento técnico ou acesso que é usado exclusivamente para fins estatísticos anônimos. Sem uma intimação, conformidade voluntária por parte de seu provedor de serviços de Internet ou registros adicionais de terceiros, as informações armazenadas ou recuperadas apenas para esse fim geralmente não podem ser usadas para identificá-lo.
Marketing
O armazenamento ou acesso técnico é necessário para criar perfis de usuário para enviar publicidade ou para rastrear o usuário em um site ou em vários sites para fins de marketing semelhantes.