Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Engenharia de dados - Do conceito ao código em ...

Engenharia de dados - Do conceito ao código em produção

Leonardo Fiedler

July 02, 2024
Tweet

More Decks by Leonardo Fiedler

Other Decks in Programming

Transcript

  1. Apresentação • Noivo da Suellen, torcedor do Flamengo, estudante de

    alemão (A2) e praticante de Crossfit e Pilates; • Data Team Lead @ Senior Sistemas; • +10 anos de experiência profissional; • Ciência da Computação (2019 - FURB); • Data Science (2021 - FURB); • Criador do Podcast Taverna da Programação.
  2. O que é dado? • Dado: descreve um fato de

    um evento. O quê? Quem? Onde? Quando? Quantos?; • Informação: dados processados e organizados em um contexto; • Conhecimento: produto gerado a partir da integração de diferentes informações obtidas; • Inteligência: integração de conhecimentos distintos levando a capacidade de tomar uma decisão ou resolver um problema; Fonte: https://blog.inovall.com.br/diferenca-entre-dados-informacao-e-conhecimento/
  3. Por que a engenharia de dados se tornou relevante? •

    A engenharia de dados passou a ter maior relevância a partir de 2010; • Até 2022 uma busca no Google sobre “what is data engineer?” retornava mais de 90 mil respostas únicas; • Engenheiros de dados são responsáveis por: obter os dados de diferentes fontes, armazená-los e prepará-los para consumo por diferentes usuários/aplicações; Fonte: trecho obtido da definição de engenharia de dados, contido no livro Fundamentals Of Data Engineering
  4. THE 2024 MAD (MACHINE LEARNING, ARTIFICIAL INTELLIGENCE & DATA) LANDSCAPE

    Fonte: https://mattturck.com/landscape/mad2024.pdf
  5. Generation (Fontes de Dados) / Ingestion • Fontes de dados

    diversas e com comportamentos variados, que vão desde planilhas preenchidas manualmente até milhares de sensores IoT; • Aplicação precisará lidar com o inesperado; • Quantidade de eventos, bem como sua durabilidade e padronização são pontos chaves para a garantia de uma boa fonte de dados; • Schemaless vs Fixed Schema; • Batch vs Stream Processing; • Push vs Pull; • Tecnologias utilizadas: ◦ Python/Java/SQL; ◦ Airbyte/Debezium/AWS DMS; ◦ Kafka/SQS/Kinesis/Google Cloud Pub-Sub/Google Cloud Dataflow; ◦ JSON Schema/Data Contract.
  6. Storage • Apesar de ser uma fase do processo, o

    armazenamento impacta desde a entrada até a distribuição do dado; • Muitas aplicações de storage podem fazer funções que vão além de só armazenar dados; • O modo como se armazena impacta na sua utilização em todos os estágios do ciclo de engenharia de dados.
  7. Transformation • Uma vez que o dado foi coletado, faz-se

    necessário transformá-lo em algo útil para as aplicações de dados; • Ajuste de tipos de dados - data, timestamp, valores monetários/unitários; • Modelagem de dados; • Padronização dos dados, remoção de nulos/incompletos; • Normalização e agrupamento de dados; • Tecnologias utilizadas: ◦ Python/Java/Go; ◦ SQL; ◦ DBT/Trino; ◦ Spark.
  8. Serving / Visualization • Serving é o modo como se

    “entrega” o dado para usuários/aplicações; • Dados tem valor quando são usados para fins práticos e que realmente respondem dúvidas de alguém; • Analytics, Business Intelligence, Operational Analytics, Embedded Analytics, Machine Learning; • Tecnologias utilizadas: ◦ Redshift/PostgreSQL/MySQL; ◦ Metabase/BigQuery/PowerBI; ◦ Dremio; ◦ API; ◦ CSV/JSON/Parquet/Zip; ◦ SageMaker. Fonte: Fundamentals Of Data Engineering
  9. Orchestration • Orchestration: é o processo coordenado de executar diversos

    jobs de forma rápida e eficiente em uma cadência de agendamentos; • Ferramentas como Apache Airflow são muito mais do que um scheduler; • DAG - Directed Acyclic Graph; • Orchestration para streaming é bem mais desafiador; • Tecnologias utilizadas: ◦ Cron/Apache Aiflow/Dagster/Prefect/Pulsar (Streaming); ◦ Argo; ◦ Metaflow (ML).
  10. Data Architecture • Design system que suporta as mudanças da

    organização, alcançada pela flexibilidade e decisões reversíveis graças a correta análise dos trade-offs; • One-way vs Two-way door; • “Never shoot for the best architecture, but rather the least worst architecture.” (Mark Richards and Neal Ford); • Uma “boa” arquitetura é construída através de princípios; • Princípios de uma boa arquitetura, segundo AWS Well-Architected Framework: ◦ Operational excellence; ◦ Security; ◦ Reliability; ◦ Performance efficiency; ◦ Cost optimization; ◦ Sustainability.
  11. Demais pontos importantes a serem observados • Data Quality; •

    Data Lineage; • Security; • DataOps/FinOps; • Data Management/Data Governance; • Cloud: ◦ AWS; ◦ Azure; ◦ GCP; ◦ Snowflake; ◦ Databricks.
  12. Conclusão • Colocar um projeto de engenharia de dados em

    produção é bem complexo e exige atenção a todos os detalhes, desde a entrada até a entrega do dado; • Processos de data quality e data governance; • Cloud vs vendor lock-in; • Ferramentas vs conceitos; • Uma boa arquitetura de dados é baseada em pilares e atender as demandas de negócio; • E lembre-se: software mediano rodando em produção e gerando receita é melhor do que o “ideal” que nunca foi implantado.