Meltano: como o Time de Plataforma de Dados da Gupy utiliza a ferramenta e faz contribuições para a comunidade Open Source

minutos de leitura

13 de fevereiro de 2023

Escrito por
Amanda Kunath e Marcos Alves

Meltano, taps e targets

O Meltano é uma ferramenta Open Source que serve para unir as capacidades de Extração e Carregamento, onde cada uma dessas capacidades são entendidas como Plugins. Ele pode ser entendido como uma “cola” entre esses plugins. Também possui alguns plugins para transformação de dados e possibilita que a orquestração dos processos seja feita por meio do Apache Airflow.

O Meltano permite que você extraia e carregue facilmente dados de fontes arbitrárias (bancos de dados, APIs SaaS e até mesmo arquivos) usando os taps e targets que assumem o papel dos plugins de extração. Esses plugins utilizam-se da especificação singer (singer spec) que nada mais é do que um padrão de código aberto para troca de dados entre sistemas arbitrários. Tap e target são os termos utilizados pelo Singer para determinar respectivamente um plugin de origem e destino. 

Como é nosso processo de ELT

O Time de Plataforma de Dados da Gupy utiliza algumas ferramentas como o Meltano e o Airflow no seu processo de ELT.  O ELT pode ser entendido como o fluxo de dados entre origens e destinos, sendo que cada letra representa uma etapa desse processo:

E = Extract (Extração)

L = Load (Carga)

T = Transform (Transformação)

A extração é o processo de coletar dados de fontes e a carga é o processo de armazenar os dados transformados em um local central. Já a  transformação é o processo de modificar o formato ou conteúdo dos dados coletados para torná-los compatíveis com o sistema de destino.

Na Gupy utilizamos apenas a solução de Extração (E) e Carregamento (L) do Meltano. A Transformação é feita pelo dbt, uma ferramenta que possibilita a transformação, testes e documentação, e a orquestração é feita pelo Apache Airflow. As escolhas das ferramentas foram feitas para termos flexibilidade, manutenibilidade e composição.

Manutenibilidade em desenvolvimento de código é a facilidade ou dificuldade em modificar um código, de adicionar novas dependências, migrá-las para novas versões, e ter dependências estáveis que não causem problemas no código.  Flexibilidade diz respeito ao quão fácil é implementar mudanças no código. Finalmente, a composição diz respeito à escrita concisa do código, onde as operações são feitas de maneira organizada e com o mínimo de código possível, facilitando reuso.

Por que escolhemos o Meltano?

O Meltano foi escolhido com base nos três requisitos mencionados acima, e principalmente por permitir que o time tivesse flexibilidade. Ele possui um hub com diversos conectores disponíveis, possibilitando que os dados sejam extraídos e enviados para diversas plataformas (lançando mão do padrão Singer). Isso permite que sejam utilizados em combinação para mover os dados de qualquer fonte para qualquer destino (bancos de dados, arquivos, APIs e qualquer outro que se possa imaginar).

Apesar de possuir muitas opções no Hub, ainda existem conectores que não estão disponíveis, mas que podem ser desenvolvidos por qualquer pessoa. Para fazer o desenvolvimento desses conectores, está disponível o Meltano Singer SDK, que possibilita o desenvolvimento rápido de Taps e Targets. O SDK (software development kit) é um projeto 100% Open Source que possui licença Apache 2.0. Ele criou um padrão de desenvolvimento para o Singer, que trouxe agilidade e segundo relatos de desenvolvedores, possibilita o desenvolvimento de conectores com cerca de 70% menos código. Neste repositório do GitHub é possível ler o código fonte, reportar problemas e contribuir com a comunidade.

Para iniciar o desenvolvimento é super simples: é preciso ter o Cookiecutter instalado (uma ferramenta capaz de criar projetos através de templates) e inicializar o projeto com o template para Taps ou Targets. Em ambos os casos, o desenvolvimento envolverá a alteração de apenas duas ou três classes.

Quando o projeto do Data Lake foi iniciado na Gupy, alguns Taps e Targets que seriam necessários ainda não estavam disponíveis, mas foram desenvolvidos pelo time de Plataforma de Dados a partir do SDK. Foi desenvolvido o Target S3 Parquet, com o intuito de carregar dados diretamente no storage da AWS em arquivos com o formato Parquet. Recentemente o Target foi incluído no Meltano Hub e pode ser acessado aqui.

Como foi o processo de publicação da nossa contribuição?

Como já mencionado anteriormente, o Meltano é uma ferramenta Open Source. Para o desenvolvimento de novos Taps ou Targets, a maneira mais rápida é a partir do Meltano Singer SDK, o que os torna automaticamente compatíveis com o Singer Spec.

Quando fizemos nossa contribuição, utilizamos o Meltano Singer SDK e criamos um repositório de código público, o que possibilitou que o desenvolvimento fosse rastreado e analisado pela comunidade do Meltano. Após análise, o Target desenvolvido foi publicado no Meltano Hub.

Importância da contribuição para o Open Source

Open source nada mais é do que um termo em inglês que significa código aberto e diz respeito ao código-fonte de um software, sem um custo de licença. As ferramentas Open Source são compartilhadas online pelos desenvolvedores, na maioria dos casos, e qualquer pessoa pode ter acesso a elas.

Embora o software em si não tenha custo direto para os clientes, manter o código e torná-lo seguro tem um custo contínuo. Neste ponto entra a importância da contribuição com o Open Source: a comunidade de voluntários e as empresas que estão utilizando as ferramentas desenvolvem e mantém o código de maneira colaborativa. A licença do programa permite que qualquer pessoa mantenha e o modifique o código, possibilitando que a pessoa que está utilizando saiba como o software funciona e possa fazer modificações inovadoras, trazendo benefícios para toda a comunidade.

Além do Target S3 Parquet, o Time de Plataforma de Dados desenvolveu Taps que estão em análise (Tap Sensedata e Tap SuiteQL). Esses Taps também estão em repositórios públicos e futuramente poderão entrar no Meltano Hub. Dessa maneira continuamos contribuindo com a comunidade e apoiando os projetos Open Source.

A Gupy é uma empresa que possui uma cultura forte e incentiva os colaboradores a sempre contribuir com o coletivo e com o social. Portanto, o desenvolvimento e compartilhamento desses componentes com a comunidade Open Source foi um caminho natural, já que a empresa sempre está buscando meios de transformar positivamente a sociedade.

E esta é apenas uma das muitas ações realizadas pelos Gupiers!

Quer fazer parte do nosso time também? Então dê uma olhada em nossas vagas abertas em tecnologia: https://tech-career.gupy.io/