Solução para replicar dados entre fontes de dados

Replicar dados usando CDAP

Cask Data Application Platform, ou simplesmente CDAP, é uma plataforma que prove uma grande quantidade de recursos e ferramenta para Analise de Dados, Transformação ou no nosso caso, migração de dados entre diferentes Fontes de dados.

Primeiro acho importante mencionar como cheguei até o CDAP

Em uma bela manhã de sol...Não, pera! não estava sol.. ou estava? bem, não me recordo.
No inicio do ano (e hoje é dia 30/12, então posso escrever dessa forma), no meio de alguns projetos, me deparei com alguns problemas entre VPN para acessar os dados em um projeto, depois a necessidade de decompor em serviços preservando contextos de dados e os serviços possuírem seus próprios bancos de dados (para fins de uso adequado de recurso e scaling individual), até a necessidade desses dados serem atualizados frequentemente, de forma independente e em diferentes periodicidades.
No decorrer das pesquisas, encontramos uma solução rápida para atender nossa necessidade, sem muito trabalho ou necessidade de treinamento, foi o FDW (ou Foreign Data Wrapper) do PostgreSQL. E colhemos ótimos frutos, pois entregamos o que precisávamos e nosso maior problema, que era não usar banco via VPN, foi solucionado.

Fim. Ou não!

Não existe bala de prata e arquitetura nunca tem fim

Com o passar do tempo, o esforço com manutenção de uma aplicação fazendo sincronismo de dados, a constante necessidade de alteração das queries que buscam dados na origem, a eventual indisponibilidade ou falhas da aplicação que estava rodando em um cluster kubernetes, a limitação do FDW por diferentes fontes de dados, e até mesmo, a necessidade de interagir e evoluir essa replica de dados junto com outros times da empresa, nos fez questionar se não seria o momento de buscar algo mais adequado para replicar esses dados. E foi então, que o Gabriel Faraday, em suas leituras, encontrou o Data Fusion do Google, que parecia uma solução elegante para o problema e me falou sobre o que havia visto. Então tínhamos que buscar a certeza de que seria a solução adequada para nossos problemas.  
Enfim, fizemos uma reunião com um pessoal do Google que nos deram duas opções, uma como serviço (Data Fusion), outra através da implantação de uma VM (CDAP). Ambos são CDAP, mas o Data Fusion é a solução do Google, como serviço e como estávamos buscando testar e validar se para nós era realmente adequado, avaliando custo e o fato de ambos serem a mesma plataforma por trás, seguimos para o CDAP.

Por onde começar?

Bom, primeira coisa que fizemos, foi instalar o CDAP através de uma VM gerenciada pelo Google (na Google Cloud), pelo gerenciador de implantação. E caso você queira testar, use o gerenciador de implantação da Google Cloud que te da a maquina pronta para usar (você terá de habilitar o Cloud Deployment Manager V2 API para usar o gerenciador de implantação). Faça a busca por CDAP e implante uma instancia (pode ser a maquina default para iniciar).
Feito isso, usei um plugin de postgresql para alimentar um arquivo, coloquei no preview e "vualaaa", tudo acontece magicamente. Coloquei uma simples query para pegar os dados de uma ponta e jogar no arquivo, apenas arrastando duas caixinhas (uma de postgres e outra de file).

E depois?

Depois de implantar, você receberá no painel um endereço ip, usuário e senha. Acesse com esses dados e você será apresentado a um painel com alguns recursos. São eles: Namespace, Pipeline (draft e published), Hub e isso é tudo que você precisa entender para iniciar.
Namespace: É um agrupamento de pipeline. Pode ser nome de um departamento (caso vários usem, ou até ambiente). Ex: Produção
Pipeline: São os processos. Muito semelhante ao pipeline de CI/CD que usamos em nossas aplicações. Desde a preparação, coleta de dados em uma fonte de dados de origem, até transformação e inclusão dos dados transformados no destino. Um detalhe curioso é que nós trabalhamos com o rascunho (draft) e quando publicamos um pipeline, ele deve ser clonado caso você queira altera-lo, e a nova publicação (published) desse pipeline, gera uma nova versão - os antigos você pode simplesmente deletar.
Hub: No hub você encontra os plugins e drivers que você deve instalar e configurar para conseguir trabalhar com fontes de dados que não estão previamente configuradas - como Oracle ou PostgreSQL (geralmente tem o link do que você precisa). 

O que mais é possível fazer?

Pelo que explorei até agora, é possível criar pipelines programados (scheduled), instantâneos (real-time), é possível pegar de diferentes fontes, agrupar, transformar, executar qualquer query de banco, integrar com s3, gs, criar csv, conectar diferentes bancos e mais uma imensidão de coisas que vi, mas ainda não utilizei - é adequado afirmar que é uma solução muito elegante para qualquer time de BI.

Fico por aqui e deixo o convite para que você explore a ferramenta. Se sua necessidade gira em torno de migração, replica, transformação ou analise de dados, certamente CDAP vai te ajudar!

Abraços :)