A iCarros é uma empresa do Grupo Itaú Unibanco, com atuação no setor da tecnologia especializado no segmento automotivo. Oferece uma plataforma digital abrangente para compra e venda de automóveis por meio da Internet.
Através de uma plataforma intuitiva, a empresa oferece uma experiência completa para consumidores e revendedores, conectando compradores e vendedores por meio de serviços de anúncios de carros.
A plataforma também apresenta outros tipos de serviços como seguros automotivos, financiamentos, notícias automobilísticas e avaliações de automóveis.
O Desafio
A parceria entre iCarros e Darede não é nova. O desafio atual é reduzir os custos com os processamentos de ETL da equipe de engenharia de dados da iCarros e modernizar a estrutura do DataLake de acordo com as boas práticas de mercado e estado da arte em termos de tecnologias, frameworks e arquiteturas mais atuais.
Contexto
Antes de abordar a solução, é fundamental contextualizar o cenário atual da Engenharia de Dados. Há aproximadamente uma década, o mundo testemunhava o lançamento da primeira versão estável do Spark:
O Spark surgiu com o propósito de substituir e aprimorar o desenvolvimento de pipelines e jobs em comparação com tecnologias muito estabelecidas, como o Hadoop, por exemplo. Os tempos eram outros, a AWS despontava com o conceito de nuvem como conhecemos hoje, mas naquela época, a AWS ainda não havia introduzido serviços, hoje essenciais, como Lambda, ECS, EKS, ECR, Glue, entre outros, que se tornaram fundamentais no contexto da Engenharia de Dados.
Outro ponto relevante a destacar é que raramente há um caso de uso que exige a manipulação de terabytes ou petabytes de dados. Mesmo que um Data Lake ou Data Warehouse contenha terabytes de dados, o dia a dia geralmente envolve o consumo de uma fração desses dados [Fonte: https://motherduck.com/blog/big-data-is-dead/], que costuma ser frequentemente inferior a 100 GB. Isso, combinado com o fato de que em muitas tecnologias na nuvem, o poder de processamento (compute) e armazenamento (storage) crescem de forma independente, representa uma verdadeira revolução no campo da Engenharia de Dados.
Mudanças como essa foram alavancadas pelas necessidades crescente de estratégias potencialização do uso de dados, mas o contrário também é verdade, com o aumento das “two-way doors decisions”, criou um cenário ideal para mudanças, no qual é plenamente plausível e necessário alterar o paradigma das arquiteturas de Pipeline de Dados.
A realidade da iCarros, já está conectadas há muitos anos com esse mundo, e com um nível de maturidade bastante grande no uso de serviços AWS como S3 e Glue, mas com o tempo e a intensificação dessa estratégia, desafios como extrair mais resultado com o mesmo ou menor custo surgiu. Assim a Darede e iCarros iniciou um estudo de como otimizar a arquitetura para suportar a escalabilidade do negócio.
A Solução
A abordagem inicial foi a utilização da plataforma Darede Insights, desenvolvida pela Darede, para identificar os principais custos no ambiente e gerar insights relacionados a melhorias. Essas melhorias englobaram tanto a otimização de custos quanto a implementação de melhores práticas e modernização do ambiente de dados, de acordo com o AWS Well-Architected Framework. O relatório gerado revelou que havia quatro tipos de pipelines executados no AWS Glue que eram responsáveis por mais de 60% dos custos do Data Lake e que poderiam ser modernizados:
- Consumo de APIs;
- Consumo de tabelas de banco de dados;
- Transformação de dados;
- Carregamento de dados.
O trabalho inicial foi refatorar os códigos utilizados para a extração de dados por meio de APIs, bem como dos códigos usados para o carregamento e transformação dos dados. A refatoração focou nas melhores práticas de engenharia de software. Para ajudar na Developer Experience, duas ferramentas desenvolvidas pela AWS foram utilizadas: AWS Powertools for lambda (Python) e AWS SDK for pandas.
A equipe tomou a precaução de testar diferentes tecnologias em vez de usar o Spark em todos os cenários. Foi concluido que em alguns jobs era mais vantajoso manter o uso do Pandas, enquanto em outros, o DuckDB se mostrou mais eficiente. Em todos esses cenários, observou-se reduções significativas (>90%) nos tempos de execução e nos custos, como será detalhado na seção de resultados.
Além disso, em termos de infraestrutura, testes foram realizados gradualmente e alguns scripts passaram a ser executados em Lambdas, enquanto outros foram migrados para o ECS com Fargate Spot. Essa abordagem ajudou ainda mais a reduzir os custos operacionais. Em resumo, o sucesso da refatoração das pipelines se deve tanto à troca de tecnologia quanto à adaptação da infraestrutura de execução.
A orquestração das pipelines foi realizada por meio do MWAA (Managed Workflows for Apache Airflow), como o nome diz, um serviço gerenciado de Apache Airflow, o que proporcionou maior clareza nas dependências e nos fluxos de execução dos jobs. E também, reduziu as falhas e indisponibilidade com a reexecução em caso de falhas, sem a necessidade de alterar o script original. Essa entrega incluiu também um sistema de monitoramento por e-mail para tarefas e DAGs que pudessem apresentar problemas.
Por fim, como precisamos alterar diversos componentes da solução, aproveitamos para implementar uma esteira de CI/CD para avançar e capacitar o time da iCarros na direção de DataOps (MLOps/AIOps) e facilitar futuras mudanças, mesmo em múltiplos ambientes de forma mais simples, resiliente e segura.
Resultados
Houve ganhos expressivos na diminuição na performance (de tempo de execução), bem como na redução de custos.
Vale destacar as seguintes melhorias:
- Redução de 99% do custo;
- Maior visibilidade dos workflows e dependências;
- Códigos que não precisam ser alterados em caso de reprocessamento;
- Maior segurança e confiabilidade;
- Criação do DataOps com implementação do CI/CD.
Com a palavra, Elson Terakado, coordenador de dados na Icarros:
“O iCarros tinha ambição de revisitar a arquitetura de engenharia de dados e, para nós, foi uma grata surpresa termos nos conectado com o time Darede.
Esse time teve um papel excepcional nesse case, mostrando seu valor tanto através da expertise no momento da ideação, com proposições, na execução e, consequentemente, nos resultados obtidos.
A POC transcorreu de forma organizada, ágil, e atualmente já notamos ganhos de performance e eficiência, ou seja, redução de tempo de processamento e custo, por exemplo.”
Próximos Passos
E o trabalho está longe de ser concluído. A parceria e a jornada de dados continuarão com novas iniciativas de melhoria, sendo as principais:
- Migração de outros workloads para a nova arquitetura: Transferir outros processos e cargas de trabalho para a arquitetura modernizada;
- Implementação do AWS Lake Formation e DataHub: Fortalecer a segurança dos dados e ampliar a governança por meio do uso do AWS Lake Formation e a criação de um portal/hub de dados para ampliar a democratização dos dados na companhia;
- Camada de Data Quality (Qualidade de Dados): Desenvolver uma camada dedicada à garantia da qualidade dos dados, assegurando que os dados utilizados sejam precisos e confiáveis;
- Ampliação no uso de DataOps: Adicionar procedimentos de testes, qualidade e aprovação ao fluxo de Integração Contínua e Entrega Contínua (CI/CD) para verificar a estabilidade e a funcionalidade antes da implantação em produção.
Essas iniciativas representam um compromisso contínuo com a excelência e o aprimoramento constante do ambiente de Engenharia de Dados da iCarros. Por fim, um agradecimento especial ao time de Engenharia de Dados Icarros comandada por Elson Terakado por toda parceria ao longo do projeto.
- Thiago Maciel – DataOps na Darede;
- Adelaide Kono – DataOps na Darede;
- Flávio Rescia Dias – CTO na Darede e AWS Amabassador;
- Jackson Ribeiro – Head of Data na Darede.