Bem-vindos ao curso de Data Mesh: controle e dependências! Meu nome é João Vitor e serei seu instrutor nessa jornada.
João é um homem branco de olhos e cabelos castanhos escuros. Usa barba e bigode curtos, e os cabelos são de comprimento médio, presos em um rabo de cavalo, com as laterais raspadas. Veste uma camiseta cinza com a logo da Alura. Ao fundo, há uma parede com iluminação esverdeada, parte de uma estante de livros e um objeto escrito "MBA USP ESALQ".
Neste curso, veremos alguns problemas que podem surgir ao desenvolver data products, além da plataforma de data mesh. Nossos data products terão dependências de outros data products, o que nos leva a alguns questionamentos:
Veremos algumas abordagens tradicionais para realizar essas atividades na arquitetura do data mesh, além de focar no controle e entendimento do comportamento dos data products através do estudo de métricas. Vamos lá?
Vamos utilizar um exemplo para entender o conceito de dependências de um data product.
Imaginemos uma empresa que oferece serviço de assinatura, como Netflix, Spotify ou a própria Alura, por exemplo. O nosso data product será uma ferramenta que determina o score (pontuação) do cliente, analisando se o assinante deixará de assinar o serviço agora ou futuramente. Esse data product coleta informações de diversas fontes de dados, ou seja, tem dependência de outras fontes de dados.
O primeiro sistema que tem como dependência o score do cliente é o player, por exemplo, se estivermos falando de uma empresa como a Spotify. O usuário escuta músicas e o player coleta diversas informações no momento em que a música é reproduzida.
Outro exemplo de dependência seria o navegador de catálogo, em caso de empresas como a Netflix, por exemplo. Através deste navegador de catálogo podemos coletar informações como o tempo que o usuário fica em determinada página, quais filmes se interessou e clicou, quais páginas navegou, entre outros.
A API de reviews (opiniões) é outra fonte de dados que podemos ter para o nosso data products. Ela coleta as informações acerca do ponto de vista das pessoas que assistiram ao filme, como notas e comentários, por exemplo. Por fim, outra dependência é o sistema de pagamentos, que possui informações como período de pagamento (mensalmente, anualmente etc), se deixou de pagar, entre outros.
Após a coleta, o score do cliente é entregue para uma API que deve utilizar as informações no momento final. Na plataforma de data mesh, como os times e data products são independentes, pode acontecer de uma das dependências não estar completa. Neste caso, como seria possível testar o data product se o sistema de pagamentos, por exemplo, ainda não estiver concluído?
Supondo que não seja conveniente aguardar a conclusão do sistema de pagamentos para testar o data product, temos a opção de construir um protótipo, um sistema falso ou uma falsa dependência, que agirá como se fosse o sistema de pagamentos (embora não o seja propriamente), permitindo a testagem do data product. A seguir, veremos algumas abordagens para a construção desse protótipo.
Tivemos a ideia de criar uma falsa dependência que simula o sistema de pagamentos. Dessa forma, quando o data product do score do cliente solicitar ao sistema de pagamento as informações acerca do cliente de id número 15, por exemplo, deve ser retornado quais pagamentos foram feitos ao longo do último ano.
Uma das possibilidades de simular esse comportamento é criar um teste para que, toda vez que o data product invoque o sistema de pagamento, seja retornada a informação necessária. Se esta informação for retornada através de uma API, podemos utilizar Mountebank, uma biblioteca que permite simular as requisições e as respostas do sistema. Sendo assim, o sistema falso é quem deve retornar a informação desejada, por isso precisamos ensiná-lo sobre o tipo de dado e a programação a ser executada. A isso, damos o nome de stubs.
Segundo a seção de stubs, do site da Mountebanck, eles definem-se como uma categoria de dublês de teste, onde substituímos um objeto de produção para fins de teste. Ainda segundo esta definição, os stubs são objetos que fornecem respostam prontas em uma requisição. Portanto, quando o invocamos durante o teste, não retornam nada além do que estão programados para executar.
Vamos nos ater ao exemplo da documentação. Note que sempre que é utilizado o método POST
e o caminho /customers/123
, retorna-se nas respostas uma localização Location
e, no corpo (body
), o e-mail do cliente. Se fizermos novamente esta solicitação, deve ser retornado um statusCode
de 400 e, no body
(corpo), a informação de que o e-mail já existe. Caso seja feita uma requisição diferente das mostradas, retorna-se o statusCode
de 404, ou seja, um erro.
No caso exemplificado, solicita-se o e-mail de um cliente e, se houver uma requisição determinada, o stub sempre deve retornar a mesma resposta.
Já sabemos que o stub pode ser uma solução ao construir uma resposta para auxiliar no teste do data product. No entanto, temos um problema: como essa verificação é feita pela própria equipe do data product, e não pela equipe do verdadeiro sistema de pagamento, o teste criado com o stub não conseguirá capturar os exemplos na base de dados, podendo gerar um erro, já que o código stub é diferente do que o real sistema de pagamento gera.
Neste caso, a plataforma de self service pode nos ajudar se a configurarmos para conhecer as portas de entrada das dependências, contendo metadados que informam para a plataforma de data mesh quais os outputs (resultado) da plataforma de pagamentos e como deve ocorrer a comunicação.
Se existem argumentos que devem ser passados para o sistema de pagamentos, o data product de score do cliente deve saber quais são graças à plataforma de self service. Dessa forma, a plataforma de self service ajuda a realizar os testes de data product de maneira apropriada, já que viabiliza a criação de stubs de acordo com as configurações que estarão no sistema final, e não de forma genérica.
O curso Data Mesh: gerenciando controle e dependências possui 50 minutos de vídeos, em um total de 41 atividades. Gostou? Conheça nossos outros cursos de Data Science em Data Science, ou leia nossos artigos de Data Science.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.