Migração de Nuvem: Desafios e aprendizados em Engenharia de Dados
Escrito por Fernando Steimetz, Data Engineer na Pipefy.
Com o crescimento das operações em nuvem, a necessidade de flexibilidade e independência entre provedores tornou-se essencial para muitas organizações. A capacidade de migrar de uma nuvem para outra pode oferecer melhores preços, tecnologias, ou simplesmente alinhamento estratégico com os objetivos da empresa. No entanto, essa jornada de migração raramente é livre de obstáculos, especialmente em ambientes com grandes volumes de dados e requisitos específicos de integração. Vamos explorar as dificuldades encontradas na migração de nuvem da AWS para OCI (Oracle Cloud Infrastructure) pelo time de engenharia de dados da Pipefy, e como o uso de uma arquitetura agnóstica em Kubernetes facilitou esse processo.
Resumo da arquitetura do time de Engenharia de Dados
Aqui na Pipefy temos um time especializado em Engenharia de Dados com foco em centralizar dados de diferentes fontes para servir de apoio à nossa operação no dia-a-dia, para suportar tal operação, possuímos uma infraestrutura projetada para ser altamente flexível e independente de qualquer provedor de cloud, com o Kubernetes como pilar central. Todas as aplicações são desenvolvidas utilizando HELM e Charts personalizados, o que garante consistência, facilidade de manutenção e capacidade de escalabilidade de acordo com a demanda.
Por ser baseada no Kubernetes, essa arquitetura é totalmente agnóstica à infraestrutura subjacente. Isso significa que ela pode ser executada em qualquer provedor de cloud ou até mesmo em ambientes on-premises. Essa independência permite flexibilidade na escolha da infraestrutura, reduz riscos de existir uma dependência em relação a cloud, e torna nossa solução adaptável às necessidades de negócios em constante evolução.
O componente principal dessa arquitetura é o Apache Airflow, que gerencia fluxos de trabalho complexos por meio de DAGs. Essas DAGs realizam processos de ETL (Extract, Transform, Load), conectando-se a diversas fontes de dados e organizando as informações de forma eficiente.
Os dados processados são armazenados em um data lake estruturado no modelo de medalhão, composto por três camadas:
- Bronze: Armazena os dados as-is diretamente extraídos das fontes, sem transformações.
- Silver: Contém dados padronizados e limpos, prontos para serem enriquecidos ou refinados.
- Gold: Reúne dados prontos para consumo pelos times de Data Analytics, otimizados para análises e geração de valor.
Desafios na Migração de Nuvem para o Time de Engenharia de Dados
Para o time de engenharia de dados, migrar uma infraestrutura de dados entre provedores de nuvem vai além dos desafios comuns de migração e envolve questões críticas de governança, conformidade e reestruturação de arquiteturas de dados. Em nossa transição da AWS para a OCI, alguns pontos específicos trouxeram complexidade adicional, exigindo planejamento e adaptação.
Dependência de Serviços e SDKs Proprietários
Cada provedor de nuvem oferece um conjunto específico de APIs e SDKs que facilitam a interação com seus serviços. Na AWS, grande parte de nossas aplicações de dados, especialmente as operações do Airflow, eram integradas com o SDK da AWS para gerenciar e orquestrar processos de ETL, armazenar dados e acessar sistemas de armazenamento e computação. Na migração para a OCI, foi necessário reescrever essas integrações e adaptar os fluxos de trabalho para utilizar a SDK e as ferramentas nativas da OCI. Essa mudança não apenas exigiu implementações significativas, mas também demandou tempo para que a equipe de dados entendesse as nuances e particularidades dos serviços da OCI, além de realizar testes extensivos para garantir a continuidade dos processos, assim como a segurança e escalabilidade da implementação.
Migração e Reestruturação de Dados nas Camadas Bronze, Silver e Gold
Nosso data lake na AWS era estruturado em três camadas principais — bronze, silver e gold — para organizar dados brutos, processados e prontos para análise, respectivamente. Migrar essas camadas para a OCI significou transferir mais de 8 TB de dados e replicar todas as integrações e pipelines. Esse processo exigiu um planejamento rigoroso para minimizar o tempo de inatividade e garantir a integridade dos dados. Além disso, foi necessário revalidar as etapas de transformação e processamento de dados para que todas as camadas continuassem operando de acordo com os requisitos de negócio e desempenho na nova nuvem. Além da adição de uma camada de segurança durante a transferência dos dados, garantindo a integridade dos dados.
Gerenciamento de Dados e Conformidade
Durante a migração de dados, um aspecto fundamental para o time de engenharia foi garantir a conformidade com regulamentações como LGPD. A movimentação de dados sensíveis entre provedores de nuvem aumentou a necessidade de controles rígidos de segurança e rastreamento. Implementar os mecanismos de auditoria e proteção necessários na OCI para replicar as configurações de segurança da AWS envolveu um esforço significativo de engenharia, e as políticas de governança e permissões foram revisadas para atender aos mesmos padrões exigidos na nuvem de origem.
Custos e Tempo da Transferência de Dados
A transferência de grandes volumes de dados, como os de um data lake, implica custos elevados e um planejamento preciso para evitar interrupções prolongadas. No caso do nosso time, o custo de transferência e o tempo exigido para a movimentação dos 8TB de dados precisaram ser cuidadosamente gerenciados para evitar sobrecargas financeiras e garantir que os dados fossem transferidos de maneira eficiente.
Adequação da Arquitetura à Nova Nuvem
A transição para a OCI exigiu que nosso time adaptasse a arquitetura de dados para aproveitar ao máximo os recursos específicos desse provedor, respeitando suas particularidades em termos de desempenho e armazenamento. Desde a reestruturação dos pipelines de dados no Airflow até ajustes nas configurações de armazenamento e redes, a equipe precisou ajustar cada etapa para manter a eficiência e o desempenho ideais na nova nuvem.
Uso de Kubernetes para Infraestrutura Agnóstica
Um dos fatores que facilitou a migração foi nossa infraestrutura baseada em Kubernetes, projetada para ser agnóstica em relação ao provedor de nuvem. Essa abordagem permitiu que nossas aplicações, que já estavam conteinerizadas e orquestradas no Kubernetes, fossem transferidas para a OCI com um nível de complexidade consideravelmente menor do que se utilizássemos serviços proprietários e diretamente vinculados à AWS. Com a capacidade de manter nossos clusters e configurações, foi possível replicar grande parte da infraestrutura de maneira direta, sem precisar de muitas reformulações.
Ainda assim, algumas peculiaridades da OCI, como configurações específicas de redes e load balancers, exigiram ajustes. Por exemplo, as regras de segurança e permissões nativas da OCI demandaram alterações no modo como configuramos a conectividade entre os serviços, além de algumas customizações na orquestração do Kubernetes para integrar bem os recursos e APIs da nova nuvem. Para atingir tal objetivo, foi necessária uma parceria significativa com o time de SRE, onde nos foi fornecido todo o suporte necessário para efetuar a migração de forma efetiva.
Flexibilidade de Dimensionamento na OCI
Outro aspecto que trouxe ganhos ao time de engenharia de dados foi a flexibilidade superior de dimensionamento dos nodes. A OCI oferece maior granularidade para escalar e ajustar o tamanho dos nodes, o que facilitou a adaptação do nosso ambiente Kubernetes a demandas variáveis de processamento e armazenamento. Esse recurso foi fundamental para otimizar custos e garantir a alocação eficiente de recursos em diferentes etapas da migração. Dessa forma, conseguimos atingir um cenário onde ao mesmo tempo chegamos em maior performance e estabilidade, mas também atingimos uma significativa redução nos custos com a infraestrutura.
Aprendizados e Resultados
A migração para a OCI foi um desafio importante para o time de Engenharia de Dados da Pipefy, trazendo aprendizados valiosos. Apesar das dificuldades com reestruturação de dados, adaptação de integrações e conformidade com regulamentações, o uso de uma infraestrutura agnóstica baseada em Kubernetes facilitou muito o processo. Com planejamento e colaboração entre equipes, conseguimos não apenas garantir a continuidade dos serviços, mas também melhorar a performance, reduzir custos e aumentar a flexibilidade da nossa arquitetura. Essa experiência reforça a importância de investir em soluções flexíveis para enfrentar mudanças e atender às demandas do negócio.