Contratos de dados
As responsabilidades são distribuídas entre domínios em uma arquitetura federada, o que pode dificultar a supervisão de dependências e a obtenção de insights de uso de dados. Os contratos de dados podem ajudar a obter insights de uso de dados, pois fornecem informações sobre quem possui cada produto de dados. Os contratos de dados ajudam você a definir padrões e gerenciar com confiança os pipelines de dados. São essenciais para um gerenciamento de dados robusto, fornecendo informações sobre:
Quais produtos de dados estão sendo consumidos.
Quais usuários estão consumindo quais produtos de dados.
Quais finalidades estão levando os usuários a consumir produtos de dados específicos.
A distribuição e o uso de produtos de dados têm duas dimensões: preocupações técnicas e preocupações comerciais. As preocupações técnicas incluem o tratamento de pipeline de dados e as expectativas mútuas de estabilidade de dados. As preocupações comerciais incluem os contratos de finalidade de compartilhamento de dados, que definem os objetivos de uso, privacidade e finalidade, incluindo as limitações.
As duas dimensões envolvem funções diferentes. Em geral, você deve contar com os proprietários de aplicativos ou engenheiros de dados para preocupações técnicas e com os proprietários de produtos ou representantes de negócios para preocupações comerciais.
Contratos de dados
Os contratos de dados são semelhantes aos contratos de serviço ou contratos de entrega de dados.
Em uma arquitetura maior ou distribuída, pode ser difícil para você supervisionar as alterações. Você pode simplificar a supervisão implementando o controle de versão e o gerenciamento de compatibilidade, sempre que tiver um produto de dados popular e amplamente usado.
Se os aplicativos estiverem acoplados, isso indicará que há um alto grau de interdependência entre os aplicativos acoplados. Os aplicativos que acessam ou consomem dados de outros aplicativos sempre são prejudicados quando acoplados. As alterações na estrutura de dados, por exemplo, provavelmente afetarão diretamente outros aplicativos que acessam ou consomem esses dados. Nas situações em que você tem muitos aplicativos juntos, é comum encontrar um efeito cascata em que uma pequena alteração em um único aplicativo afeta muitos outros aplicativos. Devido à maior probabilidade de efeitos não intencionais depois de pequenas alterações, muitos arquitetos e engenheiros de software evitam criar arquiteturas acopladas.
Um contrato de dados garante a compatibilidade da interface e inclui os termos de serviço e um SLA (contrato de nível de serviço). Os termos de serviço descrevem como os dados podem ser usados, por exemplo, restringindo o uso apenas para desenvolvimento, teste ou produção. Os SLAs descrevem a qualidade necessária da entrega e da interface de dados. Os detalhes de qualidade que você pode especificar em um SLA incluem:
- Tempo de atividade
- Taxas de erro
- Disponibilidade
- Reprovação
- Um roteiro
- Números de versão
Você pode colocar os metadados que capturam esses detalhes sob controle do código-fonte, o que permite o disparo automático de validações e implantações. Para obter mais informações sobre o controle do código-fonte, confira Controle do código-fonte no Azure Data Factory.
Os contratos de dados fornecem insights sobre o acoplamento e as dependências entre domínios e aplicativos. Um contrato também permite testes de contrato, o que garante que todas as alterações no aplicativo e na interface sejam validadas em relação aos requisitos de dados dos consumidores. Você pode saber quando os fluxos de dados ficam vulneráveis a alterações na fonte de dados upstream, detectando o descompasso de esquema. Para saber mais, confira Descompasso de esquema no fluxo de dados de mapeamento.
Os contratos de dados geralmente fazem parte de estruturas de ingestão controladas por metadados. Você pode armazenar contratos de dados em registros de metadados em um metastore gerenciado de maneira centralizada. Nesse local central, os contratos de dados desempenham um papel importante em várias áreas de ingestão de dados, incluindo:
Execução de pipeline
Criação de produto de dados
Validação de tipo de dados
Esquemas
Padrões de interoperabilidade
Versões de protocolo
Regras padrão sobre dados ausentes
Os contratos de dados envolvem grandes volumes de metadados técnicos. Para documentar os pipelines de dados e produtos de dados, você deve ter uma descrição clara das fontes de dados, todas as transformações às quais os dados foram submetidos e como você finalmente fornecerá os dados.
Em uma arquitetura distribuída, você distribui uma estrutura de pipeline de dados em diferentes domínios e os domínios estão em conformidade com uma forma de trabalho comum. Como os domínios processam os próprios dados, o controle e a responsabilidade permanecem com eles, enquanto a estrutura e os metadados permanecem sob a governança central.
Ao implementar um método federado, comece aos poucos. Comece com noções básicas, como armazenamento de metadados para validação de esquema, identificadores empresariais e referências a outros conjuntos de dados no repositório de metadados compartilhados. Adicione suporte à linhagem de dados para ajudar a visualizar a movimentação de dados. Inicialize os processos e use bibliotecas, como Great Expectations, para implementar controles para validação de qualidade de dados técnicos.
Todos os controles devem fazer parte dos procedimentos de integração contínua. Capture todas as informações de runtime, incluindo métricas e logs, e torne essas informações parte da base de metadados para obter insights de estabilidade do pipeline de dados. Essa configuração garante que você tenha um loop de comentários entre os domínios e a ferramenta cockpit de gerenciamento central.
À medida que você estabiliza toda a movimentação de dados, capture quais atributos de dados (como tabelas e colunas) são usados por quais consumidores de dados e use essas informações para continuar a escalar. Você pode incluir essas informações no metastore gerenciado de maneira centralizada. As informações de uso de dados permitem que você detecte alterações interruptivas e identifique os efeitos nos produtores e consumidores de dados. Se um conjunto de dados de produtos de dados não tiver consumidores, você poderá permitir que ele sofra alterações disruptivas. Use o controle do código-fonte (como o Git) para permitir um processo de handshake entre os provedores e consumidores dos dados.
Contratos de compartilhamento de dados
Os contratos de compartilhamento de dados são uma extensão dos contratos de dados. Os contratos descrevem o uso, a privacidade e a finalidade dos dados, incluindo as limitações. Os contratos de compartilhamento de dados são independentes da interface e oferecem insights sobre quais dados são usados para uma finalidade específica. Eles também funcionam como entrada para controles de segurança de dados. Você pode usar um contrato de compartilhamento de dados para descrever quais filtros ou proteções de segurança devem ser aplicados aos dados.
Os contratos de compartilhamento de dados também ajudam a evitar a falha de comunicação no uso de dados. Os proprietários de domínios devem discutir os problemas de compartilhamento e uso de dados, antes que os dados sejam compartilhados. Ter uma compreensão comum é fundamental para a capacidade de controlar os dados e seu respectivo uso, bem como de garantir que você possa agregar valor à organização. Depois que todos os proprietários de domínio chegarem a um entendimento colaborativo, documente isso em um contrato de compartilhamento de dados. Nesse contrato, você também pode abordar áreas como:
Qualidade dos dados funcionais
Histórico
Gerenciamento do ciclo de vida dos dados
Distribuição adicional de dados
Aplique classificações e condições, como rótulos de confidencialidade ou condições de filtragem, para proteger os dados.
O diagrama da seção anterior mostra determinados elementos rotulados como sidecar de produto de dados. Um sidecar de produto de dados é um componente ou uma camada para injetar a execução da política, como os controles de acesso a dados ou métodos de saída de consumo de dados. É uma abstração de segurança que usa contratos de dados para lidar com a imposição de segurança sobre os dados de domínio. Você pode criar um sidecar de produto de dados no repositório de contratos de dados como ACL (lista de controle de acesso) ou exibição sem servidor, ou você pode criar um usando um conjunto de dados duplicado, que você seleciona e filtra para um consumidor específico. De qualquer forma, o objetivo é derivar as exibições de segurança dos contratos de dados de maneira totalmente automatizada.
Conecte os atributos de contrato de dados e a documentação. Forneça um contexto semântico e uma relação com o glossário, para que os consumidores possam entender como os requisitos de negócios são convertidos em uma implementação real. Se uma relação com os termos de negócios for importante para a organização, implemente políticas como permitir que os contratos de dados sejam estabelecidos apenas depois que todos os atributos de produto de dados estiverem vinculados às entidades de termos de negócios. Você também pode aplicar esse tipo de política a alterações contextuais como os ajustes de relação ou definição.
Usar contratos de dados
Comece a usar contratos de dados aos poucos. Não faça muitas alterações ao mesmo tempo. Os contratos de dados exigem uma mudança cultural e os usuários precisam de tempo para se familiarizarem com eles e entenderem a importância da propriedade de dados. Você também precisa encontrar o ponto ideal entre poucos e muitos atributos de metadados nos contratos de dados.
As etapas a seguir descrevem o processo de implementação de contratos de dados para a organização.
Verifique se os pipelines de dados técnicos são estáveis. Os casos de uso não poderão chegar à produção, se os pipelines que eles percorrem passarem por interrupções inesperadas.
Estabeleça processos simples e pragmáticas, à medida que você começar a usar contratos de compartilhamento. Você pode começar criando um formulário ou modelo simples no Microsoft Forms. Escreva usando uma linguagem clara e concisa, que os leitores possam entender facilmente. O foco dessa primeira fase é uma mudança cultural e a coleta de requisitos. Não complique demais as coisas. Aceite os processos manuais, limite os requisitos iniciais de metadados e itere até que esses requisitos sejam estáveis.
Depois de estabelecer claramente os primeiros processos, comece a substituir os formulários manuais por um aplicativo Web, banco de dados e/ou fila de mensagens. A equipe de governança de dados central ainda deverá ser responsável pela supervisão durante essa fase. A essa altura, a granularidade de acesso a dados normalmente granular, com foco em pastas ou arquivos. Sempre que possível, use APIs REST para provisionar automaticamente as políticas de acesso a dados ou ACLs.
Define os proprietários de dados ou administradores de dados como os responsáveis por um fluxo de trabalho robusto para gerenciamento de aprovação. Agora a função de governança de dados central deverá supervisionar as aprovações apenas de uma função secundária e examinar todos os contratos de dados regularmente. Neste ponto, você deve ter um catálogo de dados como o Azure Purview em execução, que mostre todos os produtos de dados prontos para consumo. Melhore a funcionalidade de imposição de dados e segurança, permitindo seleções e filtragens refinadas e use técnicas como a máscara dinâmica de dados para impedir que os dados sejam duplicados.
No estágio final do percurso de implementação do contrato de dados, tudo deve ser feito por autoatendimento e totalmente automatizado. O aprendizado de máquina automatizado deve prever as aprovações de dados. Segurança
No final do percurso, tudo será feito por autoatendimento e totalmente automatizado. Isso inclui a imposição de segurança automatizada e o aprendizado de máquina para prever as aprovações de dados. As exibições seguras, por exemplo, são implantadas automaticamente após a aprovação.
Os contratos de dados são uma adição relativamente nova, mas importante, à arquitetura da malha de dados, proporcionando transparência para o uso de dados e as dependências. Concentre-se na estabilidade técnica e na padronização, à medida que você começa a usar contratos de dados e, em seguida, use um processo de lições aprendidas, à medida que você itera. Crie e automatize lentamente a governança de dados, para que você não aumente a sobrecarga da organização.
Como parte da documentação do contrato de dados, você também precisa dos termos de serviço e dos SLAs (contratos de nível de serviço). Use os SLAs para descrever os requisitos de qualidade para a entrega de dados e as interfaces, incluindo tempo de atividade, taxas de erro e disponibilidade. Os SLAs também podem incluir os requisitos de substituição, roteiro e número de versão que você precisa definir.