Este put up foi coescrito com Hemant Aggarwal e Naveen Kambhoji da Kaplan.
KaplanInc. fornece a indivíduos, instituições educacionais e empresas uma ampla gama de serviços, apoiando nossos alunos e parceiros para atender às suas necessidades diversas e em evolução ao longo de suas jornadas educacionais e profissionais. Nossa cultura Kaplan capacita as pessoas a atingirem seus objetivos. Comprometida em promover uma cultura de aprendizagem, a Kaplan está mudando a face da educação.
Os engenheiros de dados da Kaplan capacitam a análise de dados usando Amazon Redshift e Tableau. A infraestrutura fornece uma experiência analítica para centenas de analistas internos, cientistas de dados e especialistas em frontend voltados para alunos. A equipe de engenharia de dados tem a missão de modernizar sua plataforma de integração de dados para que seja ágil, adaptável e fácil de usar. Para conseguir isso, eles escolheram a Nuvem AWS e seus serviços. Existem vários tipos de pipelines que precisam ser migrados da plataforma de integração existente para a Nuvem AWS, e os pipelines têm diferentes tipos de fontes, como Oracle, Microsoft SQL Server, MongoDB, Amazon DocumentDB (com compatibilidade com MongoDB)APIs, aplicativos de software program como serviço (SaaS) e Planilhas Google. Em termos de escala, no momento em que este artigo foi escrito, mais de 250 objetos estavam sendo extraídos de três instâncias diferentes do Salesforce.
Neste put up, discutimos como a equipe de engenharia de dados da Kaplan implementou a integração de dados do aplicativo Salesforce para o Amazon Redshift. A solução usa Serviço de armazenamento simples da Amazon como um knowledge lake, o Amazon Redshift como um knowledge warehouse, Fluxos de trabalho gerenciados pela Amazon para Apache Airflow (Amazon MWAA) como orquestrador e o Tableau como camada de apresentação.
Visão geral da solução
O fluxo de dados de alto nível começa com os dados de origem armazenados no Amazon S3 e, em seguida, integrados ao Amazon Redshift usando vários serviços da AWS. O diagrama a seguir ilustra essa arquitetura.
O Amazon MWAA é nossa principal ferramenta para orquestração de pipeline de dados e é integrado a outras ferramentas para migração de dados. Ao procurar uma ferramenta para migrar dados de um aplicativo SaaS como o Salesforce para o Amazon Redshift, nos deparamos com Fluxo de aplicativo da Amazon. Após alguma pesquisa, descobrimos que o Amazon AppFlow é bem adequado para nossa exigência de extrair dados do Salesforce. O Amazon AppFlow fornece a capacidade de migrar dados diretamente do Salesforce para o Amazon Redshift. No entanto, em nossa arquitetura, escolhemos separar os processos de ingestão e armazenamento de dados pelos seguintes motivos:
- Precisávamos armazenar dados no Amazon S3 (knowledge lake) como um arquivo e um native centralizado para nossa infraestrutura de dados.
- De uma perspectiva futura, pode haver cenários em que precisamos transformar os dados antes de armazená-los no Amazon Redshift. Ao armazenar os dados no Amazon S3 como uma etapa intermediária, podemos integrar a lógica de transformação como um módulo separado sem impactar significativamente o fluxo geral de dados.
- O Apache Airflow é o ponto central em nossa infraestrutura de dados, e outros pipelines estão sendo construídos usando várias ferramentas como Cola AWS. O Amazon AppFlow é uma parte da nossa infraestrutura geral e queríamos manter uma abordagem consistente em diferentes fontes e destinos de dados.
Para acomodar esses requisitos, dividimos o pipeline em duas partes:
- Migrar dados do Salesforce para o Amazon S3 usando o Amazon AppFlow
- Carregar dados do Amazon S3 para o Amazon Redshift usando o Amazon MWAA
Essa abordagem nos permite aproveitar os pontos fortes de cada serviço, mantendo a flexibilidade e a escalabilidade em nossa infraestrutura de dados. O Amazon AppFlow pode lidar com a primeira parte do pipeline sem a necessidade de nenhuma outra ferramenta, porque o Amazon AppFlow fornece funcionalidades como criar uma conexão com a origem e o destino, agendar o fluxo de dados e criar filtros, e podemos escolher o tipo de fluxo (incremental e carga whole). Com isso, conseguimos migrar os dados do Salesforce para um bucket do S3. Depois, criamos um DAG no Amazon MWAA que executa um comando Amazon Redshift COPY nos dados armazenados no Amazon S3 e transfer os dados para o Amazon Redshift.
Enfrentamos os seguintes desafios com essa abordagem:
- Para fazer dados incrementais, temos que alterar manualmente as datas do filtro nos fluxos do Amazon AppFlow, o que não é elegante. Queríamos automatizar essa alteração do filtro de knowledge.
- Ambas as partes do pipeline não estavam sincronizadas porque não havia como saber se a primeira parte do pipeline estava completa para que a segunda parte do pipeline pudesse começar. Queríamos automatizar essas etapas também.
Implementando a solução
Para automatizar e resolver os desafios acima mencionados, usamos o Amazon MWAA. Criamos um DAG que atua como o centro de controle do Amazon AppFlow. Desenvolvemos um operador Airflow que pode executar várias funções do Amazon AppFlow usando APIs do Amazon AppFlow, como criar, atualizar, excluir e iniciar fluxos, e esse operador é usado no DAG. O Amazon AppFlow armazena os dados de conexão em um Gerenciador de segredos da AWS segredo gerenciado com o prefixo appflow. O custo de armazenar o segredo está incluído na cobrança do Amazon AppFlow. Com isso, conseguimos executar o fluxo de dados completo usando um único DAG.
O fluxo de dados completo consiste nas seguintes etapas:
- Crie o fluxo no Amazon AppFlow usando um DAG.
- Atualize o fluxo com as novas datas do filtro usando o DAG.
- Após atualizar o fluxo, o DAG inicia o fluxo.
- O DAG aguarda a conclusão do fluxo verificando o standing do fluxo repetidamente.
- Um standing de sucesso indica que os dados foram migrados do Salesforce para o Amazon S3.
- Após a conclusão do fluxo de dados, o DAG chama o comando COPY para copiar dados do Amazon S3 para o Amazon Redshift.
Essa abordagem nos ajudou a resolver os problemas mencionados acima, e os pipelines de dados se tornaram mais robustos, simples de entender, diretos de usar sem intervenção guide e menos propensos a erros porque estamos controlando tudo de um único ponto (Amazon MWAA). Amazon AppFlow, Amazon S3 e Amazon Redshift são todos configurados para usar criptografia para proteger os dados. Também realizamos registro e monitoramento, e implementamos mecanismos de auditoria para rastrear o fluxo de dados e o acesso usando AWS CloudTrail e Amazon CloudWatch. A figura a seguir mostra um diagrama de alto nível da abordagem closing que adotamos.
Conclusão
Nesta publicação, compartilhamos como a equipe de engenharia de dados da Kaplan implementou com sucesso um pipeline de integração de dados robusto e automatizado do Salesforce para o Amazon Redshift, usando serviços da AWS como Amazon AppFlow, Amazon S3, Amazon Redshift e Amazon MWAA. Ao criar um operador Airflow personalizado para controlar as funcionalidades do Amazon AppFlow, orquestramos todo o fluxo de dados perfeitamente em um único DAG. Essa abordagem não apenas resolveu os desafios do carregamento incremental de dados e sincronização entre diferentes estágios do pipeline, mas também tornou os pipelines de dados mais resilientes, simples de manter e menos propensos a erros. Reduzimos o tempo para criar um pipeline para um novo objeto de uma instância existente e um novo pipeline para uma nova fonte em 50%. Isso também ajudou a remover a complexidade de usar uma coluna delta para obter os dados incrementais, o que também ajudou a reduzir o custo por tabela em 80–90% em comparação com um carregamento completo de objetos todas as vezes.
Com essa plataforma moderna de integração de dados, a Kaplan está bem posicionada para fornecer aos seus analistas, cientistas de dados e equipes voltadas aos alunos dados oportunos e confiáveis, capacitando-os a tomar decisões informadas e promover uma cultura de aprendizado e crescimento.
Experimente o Airflow com o Amazon MWAA e outros aprimoramentos para melhorar seus pipelines de orquestração de dados.
Para obter detalhes adicionais e exemplos de código do Amazon MWAA, consulte o Guia do usuário do Amazon MWAA e o Exemplos de Amazon MWAA Repositório GitHub.
Sobre os autores
Hemant Aggarwal é engenheiro de dados sênior na Kaplan India Pvt Ltd, ajudando no desenvolvimento e gerenciamento de pipelines ETL aproveitando a AWS e o desenvolvimento de processos/estratégias para a equipe.
Naveen Kambhoji é um gerente sênior na Kaplan Inc. Ele trabalha com engenheiros de dados na Kaplan para construir knowledge lakes usando serviços da AWS. Ele é o facilitador de todo o processo de migração. Sua paixão é construir sistemas distribuídos escaláveis para gerenciar dados na nuvem de forma eficiente. Fora do trabalho, ele gosta de viajar com sua família e explorar novos lugares.
Jimmy Matthews (em português) é um arquiteto de soluções da AWS, com experiência em tecnologia de IA/ML. Jimy é baseado em Boston e trabalha com clientes corporativos à medida que eles transformam seus negócios adotando a nuvem e os ajuda a construir soluções eficientes e sustentáveis. Ele é apaixonado por sua família, carros e artes marciais mistas.