O que é registro de serviços?
Um registro de serviços é um banco de dados para armazenamento das estruturas de dados de comunicação no nível das aplicações. Ele funciona como uma localização central onde os desenvolvedores de aplicações podem registrar e localizar os esquemas usados para aplicações específicas.
Importância e relação com microsserviços
O design dos softwares modernos depende de microsserviços distribuídos e levemente acoplados que usam interfaces de programação de aplicações (APIs) para trocar dados.
Essa troca de dados entre aplicações é essencial dentro e fora das grandes empresas. Para manter sua empresa funcionando, todas as suas aplicações enviam e recebem dados o tempo todo. Então, é muito importante assegurar a integridade desses dados. E como garantir que todas as aplicações possuam as funcionalidades necessárias para consumir essas informações críticas? Uma das principais soluções é um registro de serviços.
Um sistema de mensageria que transporta dados, como Apache Kafka, por exemplo, não oferece verificação de dados nativa. O que acontece se um produtor envia dados que não são consumíveis? Por exemplo, e se um produtor adicionar ou remover um campo ou mudar o formato dos dados? Se o cliente não souber dessas mudanças, não será possível processá-los corretamente. No pior dos casos, o sistema inteiro pode parar.
Antes de realizar qualquer troca de informação, o cliente precisa conhecer a estrutura dos dados usados pelo produtor. Essa estrutura se chama esquema. O cliente também precisa saber quando alguma mudança é feita nesse esquema. Os dados precisam evoluir sem causar disrupção no sistema de mensageria.
Um produtor pode enviar o esquema para o cliente manualmente, por exemplo, anexando-o a um email. No entanto, como ocorre em muitos processos manuais, isso pode ser complicado, suscetível a erros e difícil de auditar. O resultado é que os serviços param de funcionar, e não é fácil determinar a causa da falha.
Uma outra forma de disponibilizar as informações registro de serviços é por meio de uma plataforma acessível. Ele funciona como uma localização central onde os desenvolvedores de aplicações produtoras de dados podem registrar os esquemas usados para aplicações específicas. Os desenvolvedores de clientes também usam os registros de serviços para localizar esse esquema e, assim, viabilizar o consumo dos dados daquele produtor. Alguns dos esquemas que podem ser armazenados em um registro de serviços são Apache Avro, JSON Schema e Google Protocol Buffer.
Além dos esquemas, seu registro de serviços pode armazenar outros recursos, também chamados de "artefatos". Por exemplo, as especificações de uma API para comunicação síncrona no nível das aplicações também pode ser armazenada no registro de serviços. À medida que os serviços aumentam e ficam mais complexos, o registro de serviços se torna mais útil.
O registro de serviços é um conceito que já existe há muitos anos. No entanto, há pouco tempo ele voltou ao centro das atenções por se adequar perfeitamente a essa função tão necessária no mundo dos microsserviços. O registro de serviços funciona como única fonte de informações sobre a estrutura dos dados de uma determinada aplicação, aprovado por desenvolvedores de aplicações para produtores e clientes e é compatível com uma abordagem de "priorização de contrato". Em vez de programar a aplicação para só depois oferecer um contrato, de modo que as outras aplicações ou organizações possam se comunicar com a sua aplicação, o registro de serviços especifica o contrato primeiro, incluindo entradas, saídas, especificações de payload e até mesmo possíveis regras de validação. Tudo é compilado para que não haja dúvidas sobre o funcionamento das interações.
Recursos da Red Hat
Registros de serviço e Apache Kafka
Vamos analisar como um registro de serviços funciona utilizando o Apache Kafka como caso de uso. O registro de serviços é perfeito para esse caso de uso específico porque o Kafka não disponibiliza a estrutura dos dados para o cliente automaticamente nem oferece verificação de dados. Como o Kafka não analisa nem lê seus dados, ele não usa recursos essenciais. Por isso, ele não é capaz de distribuir os dados para os clientes de maneira rápida e direta. Se o Kafka verificasse os dados, o desempenho seria muito mais baixo. Então, a falta de governança de dados não é um problema com o Kafka. Pelo contrário, ela possibilita uma de suas maiores vantagens: alto desempenho.
No entanto, é preciso implementar outra governança na estrutura dos dados para assegurar o consumo adequado de dados pelas aplicações. A solução é o registro de serviços, que fornece e aplica as regras.
Clientes e produtores trocam dados pelo Kafka. Com um registro de serviços, eles podem documentar, compartilhar e combinar os metadados que definem o tráfego desde o início, evitando futuros erros relacionados a eles. Os metadados são fornecidos em forma de esquemas armazenados no registro de serviços.
O desenvolvedor da aplicação produtora insere o esquema no registro de serviços, o que assegura sua adesão às especificações do seu próprio esquema. O registro de serviços chega até mesmo a rejeitar dados ruins que não estejam de acordo com o esquema registrado.
Os esquemas podem ser registrados pelo desenvolvedor de uma aplicação produtora específica, como no exemplo acima. Eles também podem ser registrados por uma organização, para uso geral da equipe de desenvolvimento. Neste segundo caso, o registro de serviços funciona como uma biblioteca para desenvolvedores de aplicações produtoras e clientes.
Da mesma forma, os desenvolvedores de clientes também utilizam o registro de serviços como uma biblioteca, recuperando esquemas para criar aplicações que consumam os dados das aplicações produtoras. Quando os esquemas são alterados, o registro de serviços disponibiliza o esquema atualizado para os clientes.
Registros de serviços: conheça os benefícios
Um registro de serviços oferece as seguintes vantagens para a empresa e sua equipe de desenvolvimento:
Desacoplamento da estrutura dos dados e aplicações
Você pode utilizar um registro de serviços para desacoplar a estrutura dos dados das aplicações, além de usar uma interface REST para compartilhar e gerenciar suas estruturas de dados e descrições de API no ambiente de execução.
Dados com qualidade superior
Um registro de serviços valida o esquema e detecta erros nos dados para assegurar sua integridade. O registro de serviços pode incluir regras para assegurar que o conteúdo carregado seja válido sintática e semanticamente, além de compatível com versões anteriores e posteriores. No entanto, ele impedirá um produtor de enviar dados ruins que não estejam em conformidade com o esquema.
Fonte de informações documentada única
O registro de serviços oferece uma única fonte de informações, validada por todas as partes envolvidas.
Maior produtividade do desenvolvedor
O registro de serviço possibilita a reutilização consistente de esquemas e designs de API. Assim, o desenvolvedores economizam tempo ao criar uma aplicação produtora ou cliente.
Redução de custos
A identificação precoce de erros de dados, previne aumento no tempo de desenvolvimento para corrigir problemas no processo.
Blog da Red Hat
Tudo relacionado à Red Hat: soluções, treinamentos e certificações Red Hat, casos de sucesso de clientes, novidades dos nossos parceiros e notícias sobre projetos das comunidades open source.