Introdução à Engenharia de Dados

Desmistificando a nova profissão mais atraente do século 21.

Alvaro Leandro Cavalcante Carneiro
CerebroBinario
11 min readJul 10, 2024

--

Photo by Riho Kroll on Unsplash

Se você é um profissional que está inteirado sobre a área de tecnologia há pelo menos uns 5 anos, é praticamente certo que você deve ter ao menos ouvido falar do artigo Data Scientist: The Sexiest Job of the 21st Century publicado pela Harvard Business Review. Em 2012, a ciência de dados e a inteligência artificial (IA) começavam a dar seus primeiros resultados relevantes para as empresas do Vale do Silício. Todos estavam muito empolgados com o enorme potencial das novas tecnologias, e a área em questão foi declarada como uma das mais relevantes e “atraentes” para se trabalhar nos próximos anos.

Hoje, 12 anos depois, é nítido que a IA tomou proporções gigantescas, graças à ascensão dos grandes modelos de linguagem como o ChatGPT e as rede neurais generativas, criando produtos e serviços com adesão de milhões de usuários e apresentando um potencial nunca antes visto.

Com tudo isso acontecendo, seria natural esperar que o artigo publicado em 2012 continuasse intocado, visto que a IA está mais em pauta do que nunca. Porém, finalmente o mundo se deu conta de que essa tecnologia possui um pré-requisito mandatório, os dados.

Um dito popular da área de dados (e esse sim permanece intocado) é: entra lixo, sai lixo. Isso significa que dados mal estruturados, despadronizados, e até mesmo inacurados geram nada mais do que resultados falsos e catastróficos. Isso fica muito claro quando analisamos a clássica hierarquia de necessidades da ciência de dados:

hierarquia de necessidades da ciência de dados

Sem os itens presentes na base da pirâmide, fica praticamente impossível atingir o topo. Isso significa que sem um processo estruturado de coleta, operacionalização, armazenamento, limpeza, transformação e disponibilização dos dados, toda as abordagens de geração de valor, seja através de insights de negócio, relatórios consolidados, ou até mesmo os tão sonhados modelos de IA, são praticamente inviáveis devido a grande complexidade envolvida.

O mercado está cheio de relatos de profissionais de ciência de dados que foram contratados por empresas mal preparadas para criar modelos de aprendizado de máquina, mas que acabaram passando a maior parte do tempo descobrindo, limpando e operacionalizando dados.

É exatamente por isso que a engenharia de dados está ganhando cada vez mais destaque atualmente. Diferente da realidade de uma empresa do Vale do Silício, que possui um vasto time de engenheiros de dados e adota as boas práticas há anos, as demais organizações estão se deparando com a dura realidade de que, sem dados, o uso de IA não passa de um sonho distante.

Dito tudo isso, este artigo tem como objetivo abordar o conceito e as principais vantagens e desafios da área da engenharia de dados moderna.

O que é engenharia de dados

Ainda que o seu conceito possa variar de acordo com o autor, uma das definições que mais achei interessante foi a do livro “Fundamentals of Data Engineering: Plan and Build Robust Data Systems”, que diz, resumidamente, que a engenharia de dados é uma área da tecnologia dedicada à criação de sistemas que coletam, armazenam, processam e distribuem dados consistentes e de alta qualidade para suportar análises e processos subsequentes dentro da organização.

Dessa maneira, é possível dizer que a principal missão da área é receber dados brutos de fontes diversas e disponibilizá-los para consumo, conforme ilustrado na imagem abaixo:

Resumo visual da área de engenharia de dados.

Isso pode parecer pouco, ou até mesmo simples, e é possível que você esteja se perguntando: é só isso que um engenheiro de dados faz? Acontece que, quando falamos de uma empresa com uma variedade de origens e sistemas distintos produzindo um grande volume de dados, a missão de operacionalizar e disponibilizar esses dados para a camada de análise se torna cada vez mais complexa. Todas as etapas centrais e subjacentes que precisam ser desenvolvidas pela equipe a fim de atender aos requisitos necessários é o que conhecemos como ciclo de vida da engenharia de dados [1].

Ciclo de vida da engenharia de dados

O ciclo de vida da engenharia de dados, conforme o nome sugere, consiste em todas as etapas que são necessárias para garantir que os dados se transformem em um produto final útil e possam ser, de fato, utilizados para gerar valor em uma organização. Os temas centrais desse ciclo são aqueles que observamos na imagem anterior:

  • Geração
  • Armazenamento
  • Ingestão
  • Transformação
  • Disponibilização

Ainda assim, só isso não é o suficiente para construir um ecossistema de dados robusto e seguro. É preciso se atentar a todos os elementos subjacentes que possuem um papel importante, como a segurança, gerenciamento, DataOps, orquestração, engenharia de software e arquitetura de dados.

Temas centrais

Os temas centrais são a base da maior parte das atividades que um time de engenharia de dados precisa desempenhar. É claro que, na prática, essas etapas podem variar dependendo da organização. Algumas delas, inclusive, podem se misturar ou aparecer em diversos estágios simultâneos, como o armazenamento, por exemplo. Ainda assim, vale a pena entender os conceitos principais dos temas que compõe o ciclo de vida.

Geração de dados

Todos os dados são gerados de alguma forma, seja através do preenchimento de uma simples planilha em Excel ou através de um sistema transacional sendo utilizado por centenas ou até milhares de usuários simultaneamente.

Independente da origem, é essencial que os engenheiros de dados possuam uma compreensão clara de como os sistemas que geram dados funcionam, qual a sua velocidade, frequência e variedade de dados. Além disso, é importante que os engenheiros tenham contato direto com os responsáveis pelos sistemas de origem, a fim de serem comunicados a respeito de alterações relevantes na estrutura ou em como os dados são disponibilizados.

Caso você esteja consumindo dados de uma tabela em um banco de dados relacional, por exemplo, é extremamente importante ser avisado de mudanças no schema dos dados, como a criação/remoção/alteração de colunas específicas. Os proprietários dos sistemas de origem (muita das vezes engenheiros de software), são os principais stakeholders upstream do ciclo de vida dos dados, visto que a geração impacta em todas as etapas subsequentes.

Por fim, um dos maiores desafios da área é possuir conhecimento técnico a respeito da ampla variedade de sistemas de origem e armazenamento de dados. A forma como você irá estruturar uma pipeline para consumir dados de um banco de dados SQL, por exemplo, definitivamente não é a mesma utilizada para extrair dados de um banco NoSQL.

Armazenamento

O armazenamento não é um dos elementos mais importantes de todo o ciclo de vida dos dados apenas por estar presente em todas as etapas, mas também pelo fato de que, muita das vezes, a solução de armazenamento irá influenciar diretamente em outros aspectos como acesso a dados, segurança, governança e até custo.

Os principais provedores Cloud do mercado (AWS, GCP, Azure) oferecem diversas soluções distintas de armazenamento com suas próprias particularidades, o que torna complicado a escolha de um sistema de armazenamento adequado.

Dito isso, é importante considerar o contexto e a forma como os dados serão utilizados, como a frequência em que os dados serão acessados, os requisitos de velocidade de escrita e leitura, a capacidade de lidar com a escala prevista no futuro, a forma como é realizada a coleta e gestão de metadados e o esquema do sistema de armazenamento. Todos esses fatores são cruciais de serem levados em consideração ao escolher uma solução para melhor suprir as necessidades do seu projeto de dados.

Ingestão

A ingestão, por sua vez, compreende a etapa de coleta dos dados do sistema de origem (gerador de dados) para o sistema de destino (armazenamento). Geralmente, essa é uma das etapas mais complexas e suscetíveis a erros de todo o fluxo. Isso acontece pelo fato de que, normalmente, os sistemas geradores de dados estão fora do nosso controle direto, e é possível que apresentem falhas inesperadas ou deixem de funcionar, gerando inconsistências e erros em todos os processos de ingestão que dependem daquela fonte.

Além disso, ao projetar um fluxo de ingestão de dados, é importante considerar fatores como o volume de dados a ser processado, a frequência com que esses dados serão consumidos (uma vez ao dia, a cada uma hora, a cada 15 minutos…), o modelo de ingestão (pull ou push) e o formato e a qualidade dos dados.

Situações em que é preciso ter acesso aos dados em tempo real, por exemplo, demandam a criação de sistemas de ingestão baseados em streaming, que costumam ser mais complexos e caros do que ingestões em lote. A ingestão de grandes volumes de dados, por sua vez, levanta questões a respeito da escalabilidade, custo, e até mesmo os possíveis impactos na performance do sistema gerador.

Transformação

Muita das vezes, os dados em sua forma original não seguem um padrão comum, visto que são extraídos de diferentes sistemas e origens. Manter um padrão consistente de nomenclatura, tipagem e até mesmo a aplicação de regras de negócio e enriquecimento com campos e cálculos adicionais são essenciais para garantir que os dados estejam o mais prontos possíveis para os consumidores finais.

Dito isso, a transformação são todas as operações de preparação, manipulação e limpeza que visam agregar mais valor aos dados que serão utilizados por processos subsequentes. A complexidade e a quantidade de operações realizadas vão depender muito de cada caso de uso e também da aplicação posterior dos dados.

Disponibilização

Por fim, depois de executar todas as etapas anteriores, podemos obter valor real dos dados disponibilizando-os para serem utilizados para fins práticos pelos usuários finais, sendo esses analistas de dados, analistas de negócios, cientistas de dados e entre outros.

Embora essa seja uma das etapas mais empolgantes, pois é onde diversos casos de uso são originados, como a construção de dashboards, relatórios, descobrimento de padrões e modelos estatísticos, ela também é uma das mais complexas. Isso acontece pelo fato de que, ao lidar com usuários finais, é preciso se preocupar com diversos elementos como o acesso a dados, governança, segurança, limites de uso, desempenho, compartilhamento e a qualidade das informações disponibilizadas.

Os usuários de dados costumam ser os maiores clientes dos times de engenharia de dados. Dessa forma, quanto maior a quantidade de clientes e casos de uso, mais complexo é manter toda a operação do ciclo de vida da engenharia de dados para garantir uma disponibilização adequada de informação.

Temas subjacentes

Conforme dito anteriormente, os temas centrais da engenharia de dados são apenas uma parte do todo. Uma área de dados com operação robusta precisa se atentar a muitos outros fatores para ter sucesso na entrega de produtos de dados com qualidade. Irei resumir brevemente a ideia e a importância dos temas subjacentes da engenharia de dados.

  • Segurança: Embora a maioria das empresas possuam uma área especializada de segurança da informação, é responsabilidade dos engenheiros de dados proteger o acesso a dados e os dados sensíveis da organização. Por conta disso, é vital compreender as boas práticas de segurança, liberando apenas os privilégios necessários e recursos essenciais para realizar uma função específica. Apenas um vazamento de dados pode ser capaz de destruir a reputação pública de uma empresa.
  • Gerenciamento de dados: O gerenciamento de dados é fundamental para aumentar o valor dos ativos de dados. Toda a parte de governança, qualidade e gestão de metadados costumam fazer parte dessa etapa, fazendo com que os dados sejam mais facilmente descobertos, utilizados e mantidos no ecossistema.
  • DataOps: Assim como qualquer outra área que envolve operacionalização de tarefas, o DataOps é responsável por empregar as melhores práticas de automação de tarefas, observabilidade e monitoramento do ambiente e resposta à incidentes. Juntos, esses componentes técnicos auxiliam na criação de uma cultura que promove a entrega de produtos de dados com alta qualidade e baixas taxas de erro.
  • Arquitetura de dados: A arquitetura de dados é o conjunto de componentes que formam a estrutura atual e futura dos sistemas de dados da organização. A arquitetura deve evoluir continuamente a fim de atender os requisitos de dados da empresa e garantir que as melhores práticas estão sempre sendo seguidas, considerando sempre o balanço entre custo e o benefício das mudanças arquiteturais.
  • Orquestração: A orquestração é o processo de coordenar diferentes tarefas para que sejam executadas de maneira programática. Diferente de um simples agendador, a orquestração costuma ser complexa pois envolve uma série de dependências entre as tarefas, além de lidar com centenas ou até milhares de tarefas em uma mesma infraestrutura.
  • Engenharia de software: Por mais óbvio que pareça, é sempre importante relembrar que os fundamentos da engenharia de software são essenciais para um engenheiro de dados. Saber escrever códigos legíveis e de alta qualidade é essencial ao criar pipelines, fluxos de ETL, DAGs para orquestração de atividades e entre outros aspectos previamente citados. Escrever bons códigos, além de garantir eficiência e segurança, é essencial para facilitar a manutenção e a velocidade de grandes times de dados.

Todos os temas citados são exemplos das áreas e subáreas que um time de engenharia de dados precisa atuar. Criar processos com qualidade e robustez é fundamental para times de dados, visto que dados incorretos, incompletos ou de baixa qualidade fazem com que o time perca a sua credibilidade rapidamente, criando produtos de dados que não serão utilizados por ninguém.

Como se tornar um bom engenheiro de dados?

Com a abstração cada vez maior das ferramentas, serviços e tecnologias, já se foi o tempo em que um engenheiro de dados precisava se preocupar apenas com processamento de dados em grande volume, variedade e velocidade utilizando tecnologias de “Big Data” como Hadoop, Spark e MapReduce.

Conforme já deve ter ficado bastante claro, quanto mais familiaridade você possuir com os aspectos técnicos e estratégicos do ciclo de vida da engenharia de dados, mais valor você será capaz de entregar e, consequentemente, se tornará um engenheiro de dados bom e muito valorizado.

Ainda assim, é preciso se atentar à dinamicidade dessa profissão. É muito raro existir um profissional que seja realmente bom em todos os temas do ciclo de vida que levantamos anteriormente. O mais natural é que você possua um viés para algumas áreas que são mais do seu interesse, e se especialize nelas. Entretanto, é preciso ter pelo menos algum nível de conhecimento generalista nos demais temas.

Além disso, a sua função real enquanto engenheiro de dados vai depender muito do nível de maturidade e complexidade do ecossistema da empresa em que você está atuando. Existem alguns engenheiros que podem ficar focados apenas em tarefas como otimizações de consultas SQL ou criação de novas ingestões de dados, enquanto outros podem trabalhar mais com tecnologias Cloud, orquestração, governança e até qualidade de dados. Por conta disso, se atente à descrição da vaga que você está se inscrevendo, e tente tirar o máximo de dúvidas possíveis a respeito da maturidade e cultura do uso de dados dentro da empresa que você pretende entrar. No geral, empresas grandes possuem processos e ferramentas muito bem consolidadas, sendo necessário atuar apenas em etapas específicas de um todo. Empresas menores ou com menos maturidade em dados, por sua vez, costumam exigir um conjunto mais generalista e multidisciplinar de habilidades.

Por fim, tenha em mente que a engenharia de dados é uma profissão muito dinâmica e que pode exigir diversas habilidades diferentes. Por conta disso, é sempre bom focar nos fundamentos, aqueles conceitos e tecnologias que não mudam muito com o passar do tempo e que são sempre uma constante na área em termos de importância, como estrutura de dados e lógica de programação. Em termos de linguagens, as mais importantes de se saber são, sem dúvida, Python e SQL.

Conclusão

A área da engenharia de dados está em constante evolução. As novas ferramentas e a própria evolução dos provedores Cloud estão tornando essa uma área cada vez mais dinâmica e repleta de ferramentas. Embora trabalhar com dados possa ser complexo e com diversos desafios, é essencial que cada vez mais as empresas se acostumem com uma cultura data-driven, tomando decisões não apenas baseado em dados históricos, mas também utilizando os dados para realizar previsões a cerca do futuro.

Dito isso, da mesma forma que temos observado os avanços da IA, os próximos anos prometem grandes evoluções no mundo da engenharia de dados.

--

--

Alvaro Leandro Cavalcante Carneiro
CerebroBinario

MSc. Computer Science | Data Engineer. I write about artificial intelligence, deep learning and programming.