Como a AWS pode ajudar a coletar e processar grandes volumes de dados

Bernardo Costa
11 min readMar 20, 2023

--

Introdução

Com o aumento exponencial de dados na era digital, empresas e organizações estão enfrentando desafios cada vez maiores na coleta, processamento e análise de informações relevantes. Erros em grandes volumes de dados podem ter um impacto financeiro significativo, o que torna essencial a aplicação de boas práticas na gestão de dados. A Engenharia de Dados é uma disciplina que se dedica a lidar com esses desafios, permitindo que as empresas obtenham informações confiáveis e tomem decisões estratégicas.

Para lidar com a grande quantidade de dados, uma das soluções mais eficientes é a utilização de plataformas de serviços em nuvem, como a Amazon Web Services (AWS). A AWS oferece uma ampla gama de serviços de armazenamento, processamento e análise de dados, permitindo que empresas construam pipelines de dados escaláveis, confiáveis e seguros.

Neste artigo, vamos explorar como a AWS pode ser utilizada para coleta e processamento de grandes volumes de dados, e como seus serviços podem ajudar na construção de pipelines de dados eficientes. Analisaremos as ferramentas da AWS que podem ser usadas para coleta, armazenamento e processamento de dados, além de entender como essas ferramentas se integram em uma arquitetura de dados completa e escalável. Portanto, se você deseja aprender mais sobre como a AWS pode ajudar na engenharia de dados, continue lendo este artigo!

Elefantes indo pegar água

Coleta de Dados na AWS

O processo de coleta de dados é uma das etapas fundamentais da engenharia de dados, e a AWS disponibiliza uma série de serviços que podem ser empregados para essa finalidade. Neste capítulo, vamos explorar alguns dos principais serviços da AWS utilizados para a coleta de dados, além de apresentar exemplos práticos de como esses serviços podem ser aplicados.

AWS Lambda

O AWS Lambda é um serviço de computação serverless que permite a execução de código sem a necessidade de provisionar ou gerenciar servidores. É uma ferramenta útil para coletar dados de fontes externas, como APIs e eventos de streaming. A escalabilidade é uma característica importante do AWS Lambda, o que o torna capaz de lidar com grandes volumes de dados.

Um exemplo prático de como o AWS Lambda pode ser usado na coleta de dados é através da obtenção de informações de um conjunto de APIs públicas. As fontes podem incluir dados de redes sociais, previsões climáticas e cotações de ações. Com o AWS Lambda, é possível programar uma função que execute solicitações regulares às APIs e armazene os resultados em um banco de dados.

AWS ECS Fargate

AWS ECS Fargate é um serviço altamente escalável que permite executar e gerenciar containers Docker na nuvem, sem a necessidade de gerenciar servidores. Esse serviço é uma opção do Amazon Elastic Container Service (ECS) e pode ser usado para coletar e processar grandes volumes de dados de forma eficiente.

Um exemplo prático de uso do ECS Fargate para coleta de dados é a coleta de informações de logs de servidor. Com o ECS Fargate, é possível configurar um container para coletar e processar logs de diferentes servidores e armazená-los em um repositório centralizado, facilitando a análise e identificação de problemas de desempenho.

Comparativo do uso de AWS Lambda e AWS Fargate para Coleta de Dados

Comparativo de custos com em cenário hipotético

Vamos considerar um cenário hipotético de coleta de dados que, utilizando o AWS Fargate, requer 1 vCPU e 2GB de memória para a execução e, utilizando o AWS Lambda, requer 2GB (lembre-se que o AWS Lambda não permite configuração de vCPU, ele escala automaticamente baseado na quantidade de memória configurada).

Cenário 1: Coleta de dados de curta duração

Suponha que a coleta de dados leve apenas 30 segundos e precise ser feita a cada 15 minutos, totalizando 144 execuções por mês. Nesse caso, a função AWS Lambda seria a opção mais barata, pois o custo total seria de apenas US$ 4,38 por mês. Já o AWS Fargate seria penalizado por cobrar por no mínimo 1 minuto, mesmo com execuções de apenas 30 segundos, resultando em um custo de US$ 5,87, mais de 30% mais caro.

Cenário 2: Coleta de dados de longa duração

Suponha agora que essa coleta leve 5 minutos. Nesse caso, o AWS Fargate seria a opção mais barata, pois o preço da execução da função AWS Lambda seria de US$ 43,80, enquanto o custo de execução do AWS Fargate seria de US$ 20,52. Nesse caso, o AWS Fargate não seria penalizado pela questão do tempo. Quando a coleta leva mais tempo, o AWS é privilegiado, gerando uma economia de mais de 50%.

Em resumo, a escolha entre AWS Lambda e AWS Fargate para coleta de dados depende do tempo de execução necessário e dos recursos necessários para a execução. Para tarefas de curta duração, a função lambda pode ser mais barata, enquanto para tarefas de longa duração, o AWS Fargate tende a ser mais econômico. É importante avaliar o cenário específico de uso e fazer uma análise de custo-benefício antes de decidir qual serviço utilizar.

Caso queira ver com mais detalhes os números que usei nessas contas, segue o link da calculadora AWS: https://calculator.aws/#/estimate?id=631d3ee258f04d44b62c88b58a378ed6e20ed564

Comparativo olhando para o Custo Operacional

Custo operacional de uma aplicação é o dinheiro que é gasto para manter a aplicação funcionando, como gastos com servidores, hospedagem, segurança e pessoas.

Em relação ao custo operacional, o AWS Lambda possui uma vantagem significativa sobre o AWS Fargate para coleta de dados. Isso se deve ao fato de que o AWS Lambda é um modelo de computação sem servidor, o que significa que a AWS gerencia automaticamente a infraestrutura subjacente, como servidores, rede e segurança. Isso resulta em uma redução significativa de custos operacionais, uma vez que a equipe de engenharia de dados não precisa se preocupar com a manutenção da infraestrutura.

Já o AWS Fargate exige que a equipe gerencie e configure a infraestrutura de contêineres, incluindo a orquestração, monitoramento e escalabilidade, o que pode aumentar o custo operacional. No entanto, o AWS Fargate oferece mais flexibilidade e controle em relação à infraestrutura, o que pode ser vantajoso em alguns casos de uso específicos.

Armazenamento de Dados na AWS

Para armazenar dados em ambientes voltados para Engenharia de Dados, o Amazon S3 é, sem dúvida, o principal serviço. O Amazon S3 é um serviço de armazenamento de objetos altamente escalável, projetado para armazenar e recuperar grandes quantidades de dados, como imagens, vídeos, documentos e backups de bancos de dados, tornando-o ideal para ser o serviço principal de armazenamento para um Data Lake, por exemplo.

Um Data Lake é uma arquitetura de armazenamento de dados que permite a coleta, armazenamento e análise de grandes volumes de dados brutos e não estruturados em sua forma original, sem a necessidade de uma pré-definição de esquema ou formato de dados. O Data Lake é projetado para escalar com o aumento da quantidade de dados, fornecendo uma fonte única e unificada de verdade para as informações da organização.

Apresentação do S3 como principal serviço de armazenamento para ambientes de dados — Imagem adaptada de https://www.chaossearch.io/blog/state-of-aws-s3-object-storage

O S3 é altamente escalável, permitindo que as empresas armazenem uma quantidade ilimitada de dados, com a capacidade de armazenamento aumentando automaticamente conforme necessário. Ele também é altamente durável, com redundância de dados em várias zonas de disponibilidade e uma garantia de durabilidade de 99,999999999% dos objetos armazenados. Além disso, o S3 é altamente seguro, com recursos de criptografia de dados em repouso e em trânsito, controle de acesso granular e recursos de conformidade e auditoria que atendem aos mais rigorosos padrões de segurança e conformidade.

Uma das principais vantagens do Amazon S3 é a sua integração com outros serviços de dados da AWS, como o Amazon EMR (Elastic MapReduce), AWS Glue e Amazon Athena. Essa integração permite que os usuários processem, analisem e acessem facilmente grandes volumes de dados armazenados no Amazon S3, sem precisar se preocupar com o gerenciamento de infraestrutura e a escalabilidade dos sistemas.

O Amazon EMR é um serviço gerenciado que permite executar facilmente clusters de big data em escala na AWS. Ele usa o Apache Hadoop, Spark e outras estruturas de processamento distribuído para executar análises de big data em larga escala. Com a integração do Amazon S3 e do Amazon EMR, é possível processar e analisar grandes volumes de dados armazenados no Amazon S3 usando o Amazon EMR, sem precisar transferir os dados para dentro do cluster. Isso reduz significativamente o tempo e o custo de transferência de dados e simplifica o gerenciamento de dados em larga escala.

O EMRFS (EMR File System) é um recurso exclusivo do Amazon EMR que permite aos usuários acessar diretamente dados armazenados no Amazon S3 usando o Hadoop Distributed File System (HDFS). Com o EMRFS, os dados do Amazon S3 são tratados como arquivos locais em um cluster EMR, tornando mais fácil o gerenciamento de dados em larga escala. O EMRFS também permite a integração do Amazon S3 com outros serviços do EMR, como Spark e Hive, permitindo que os usuários acessem facilmente os dados armazenados no Amazon S3 usando essas estruturas.

O AWS Glue é um serviço de ETL (Extração, Transformação e Carga) gerenciado que permite criar e gerenciar pipelines de dados para integrar e transformar dados em várias fontes e destinos. Com a integração do Amazon S3 e do AWS Glue, é possível automatizar a integração e a transformação de dados armazenados no Amazon S3, tornando mais fácil a criação e a manutenção de pipelines de dados de larga escala.

O Amazon Athena é um serviço de consulta interativa que permite analisar facilmente grandes volumes de dados armazenados no Amazon S3 usando SQL padrão. Com a integração do Amazon S3 e do Amazon Athena, é possível executar consultas de análise de dados em larga escala diretamente no Amazon S3, sem a necessidade de preparar e carregar dados em um banco de dados tradicional.

Além disso, o Amazon S3 também é compatível com outras estruturas de dados, como Apache Spark, Apache Hive, Apache Kafka, Presto, entre outras, permitindo que os usuários escolham as ferramentas de análise de dados que melhor atendam às suas necessidades.

Processamento de dados na AWS

A AWS oferece duas principais ferramenta para processamento de dados quando estamos falando de processamento em grandes volumes de dados. Uma dessas soluções é o Amazon EMR, que é um serviço totalmente gerenciado que permite executar e processar grandes volumes de dados usando frameworks de código aberto, como Apache Hadoop e Spark. O EMR é altamente escalável e oferece recursos avançados de segurança, como criptografia de dados, acesso baseado em função e muito mais. Além disso, o EMR é flexível e permite personalizar a infraestrutura para atender às necessidades específicas de cada aplicativo.

Outra solução popular da AWS é o AWS Glue, que é um serviço de ETL totalmente gerenciado que permite extrair, transformar e carregar dados de várias fontes para o data lake da empresa. O Glue é altamente escalável e pode processar grandes volumes de dados em pouco tempo. Além disso, ele é fácil de usar e não requer nenhum conhecimento avançado de programação. O Glue também oferece recursos avançados de segurança, como criptografia de dados e integração com o AWS KMS. Com o AWS Glue, as empresas podem automatizar o processo de ETL e liberar tempo para outras atividades críticas de negócios.

Orquestração na AWS

A AWS oferece basicamente dois serviços que podem ser utilizados para orquestrar pipelines de dados, o o AWS Step Functions e o Amazon Managed Workflows for Apache Airflow (MWAA).

O AWS Step Functions é um serviço de orquestração baseado em "estados" que permite a coordenação de múltiplas etapas de processamento de dados em uma única unidade lógica. Com o Step Functions, você pode criar fluxos de trabalho de maneira visual usando uma interface gráfica definindo as ações que serão executadas, pedir o JSON resultante para salvar no seu repositório do git e utilizar infraestrutura como código depois.

Você pode usar o Step Functions para coordenar e monitorar fluxos de trabalho que envolvem diferentes serviços AWS de forma muito simples, pois as integrações já estão feitas e basta arrastar e soltar a integração deseja. Esses serviços incluem o AWS Lambda, AWS Glue, etc. Veja um exemplo

Já o Amazon Managed Workflows for Apache Airflow (MWAA) é um serviço gerenciado que fornece uma plataforma para criar, gerenciar e executar pipelines de dados usando o Apache Airflow. Como se fosse um Amazon RDS para apache Airflow. Com o MWAA, a AWS gerencia o ambiente de execução do Apache Airflow, incluindo a configuração (que você mesmo deve dizer qual é essa configuração), a escalabilidade e a segurança do ambiente.

Veja a comparação dos serviços:

Idealmente, utilizando o AWS Step Function para qualquer cenário novo que estamos iniciando, devido ao baixo custo na fatura e também do baixo custo de implementação, o que acelera o desenvolvimento de novas extrações aproveitando da característica Serverless.

Mesmo com todas essas vantagens existem algumas instituições que tem como estratégia de tecnologia a utilização de serviços open source para não ficar "presos" a um provedor específico, estando dispostas a pagar a mais por isso e investir mais tempo de gerenciamento nos serviço. Para esses serem, o MWAA seria o serviço mais adequado. Adotando essa estratégia, a instituição fica com a possibilidade de reutilizar seus DAGs escritos em Python para o Apache Airflow em outros provedores com pequenos ajustes, coisa que não é possível com o AWS Step Function.

Um outro caso é a migração dos DAGs para a AWS. Quando a instituição já usa Apache Airflow em outro provedor de nuvem, ou on-premise, e quer migrar para AWS, utilizar o MWAA faz com que a migração aconteça de modo mais rápido, dando fôlego para refatorar a arquitetura de processamento de dados com mais calma após a migração inicial.

Conclusão

Em resumo, conhecer bem as possibilidades da AWS e as técnicas de Engenharia de Dados ajudará a orientar a escolha otimizada dos serviços e arquitetura de dados, a fim de utilizar a AWS como uma ferramenta aliada na estratégia de dados do negócio.

Para os profissionais de Engenharia de Dados, conhecer bem essas ferramentas é essencial para se destacar no mercado de trabalho e crescer na carreira. Eles podem utilizar a AWS como uma ferramenta aliada para produzir ambientes escaláveis, atender às demandas de extração e processamento de dados e manter custos previsíveis e controlados, combinando as melhores técnicas e ferramentas disponíveis para resolver os problemas apresentados.

Por isso, convido você a conhecer mais sobre os serviços da AWS relacionados à Engenharia de Dados e Ciência de Dados, seguindo-me aqui no Medium. Eu posso ajudá-lo a se manter atualizado sobre as novidades e tendências da área.

Me Siga!

Recomendações de Estudo:

--

--

Bernardo Costa

Head de Dados, Engenheiro de Computação de formação e padeiro nas horas vagas.