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

Escala e Consistência: Como processar mais de 1 milhão de registros em poucas horas via Devconf(Opensanca)

Escala e Consistência: Como processar mais de 1 milhão de registros em poucas horas via Devconf(Opensanca)

Leonardo Reis e Victor Nunes, trocaram experiências e relatos como lidam na Arquivei sobre Escala e Consistência para mais de 1M de registros.

Sinopse:

Arquivei, empresa que tem como produto uma plataforma web de gestão de Documentos Fiscais eletrônicos (DFes), propõe a facilitação do acesso aos DFes e às diversas informações contidas neles.

No último ano, cerca de 13% de todos os documentos ficais emitidos no Brasil trafegaram no sistema da Arquivei, gerando um grande desafio relacionado a escalabilidade e consistência de dados.

Durante esse encontro, será apresentando como a gestão e processamento de dados da Arquivei evoluiu nos últimos anos: é possível processar milhões de registros, disponibilizar dados em tempo real, criar uma fonte única de verdade e garantir consistência essa fonte e os bancos analíticos e de busca.

Opensanca

May 27, 2023
Tweet

More Decks by Opensanca

Other Decks in Programming

Transcript

  1. Escala e Consistência
    Como processar mais de 1 milhão de registros em poucas horas

    View full-size slide

  2. Leonardo Reis
    Engenheiro de dados
    Victor Nunes
    Tech lead

    View full-size slide

  3. Agenda
    4. Pontos de melhoria 5. Nova arquitetura e suas
    características
    6. Desafios enfrentados
    1. O que é a Arquivei? 2. Evolução da arquitetura 3. Motivadores de
    mudança

    View full-size slide

  4. O que é a Arquivei?

    View full-size slide

  5. Uma plataforma para documentos
    fiscais
    Escala e Consistência: Como processar mais de 1 milhão de registros em poucas horas

    View full-size slide

  6. Mais de 420 mil CNPJs ativos
    Escala e Consistência: Como processar mais de 1 milhão de registros em poucas horas

    View full-size slide

  7. 3.8 bilhões de documentos fiscais
    armazenados
    Escala e Consistência: Como processar mais de 1 milhão de registros em poucas horas
    2 bilhões de Nota Fiscal
    Eletrônica - NFe
    1.3 bilhões de Conhecimento de
    Transporte Eletrônico - CTe
    600 milhões de Cupons Fiscais
    Eletrônicos - NFCe e CFe-SAT
    60 milhões de Nota Fiscal de
    Serviço - NFSe
    *em 2020 aproximadamente 13% dos documentos emitidos no Brasil trafegaram pelo sistema da Arquivei.
    ** nesta apresentação iremos falar somente da arquitetura de processamento de Conhecimento de
    Transporte Eletrônico (CTe). A partir de agora o termo “documento fiscal” refere-se a este tipo de
    documento.

    View full-size slide

  8. Tecnologias que utilizamos
    Escala e Consistência: Como processar mais de 1 milhão de registros em poucas horas
    ElasticSearch - 3 clusters Bigtable - 20 TB
    BigQuery - 85TB Kubernetes
    Kafka Dataflow
    Golang Apache Beam

    View full-size slide

  9. Evolução da arquitetura

    View full-size slide

  10. Primeira geração
    Escala e Consistência: Como processar mais de 1 milhão de registros em poucas horas
    - MVP

    View full-size slide

  11. Segunda geração
    Escala e Consistência: Como processar mais de 1 milhão de registros em poucas horas
    - Diversos bancos de dados

    View full-size slide

  12. Segunda geração
    Escala e Consistência: Como processar mais de 1 milhão de registros em poucas horas
    - Diversos bancos de dados
    Ótimo para
    armazenar
    objetos grandes
    Solução específica
    para clientes
    grandes fazerem
    buscas textuais

    View full-size slide

  13. Terceira geração
    Escala e Consistência: Como processar mais de 1 milhão de registros em poucas horas
    - Micro-serviços

    View full-size slide

  14. Terceira geração
    Escala e Consistência: Como processar mais de 1 milhão de registros em poucas horas
    - Micro-serviços
    Ótimo para
    filtros e buscas
    textuais
    Ótimo para
    análises pesadas
    Mensageria
    com partições
    ordenadas

    View full-size slide

  15. Escala e Consistência: Como processar mais de 1 milhão de registros em poucas horas
    - Fonte de verdade
    Quarta geração

    View full-size slide

  16. Escala e Consistência: Como processar mais de 1 milhão de registros em poucas horas
    - Fonte de verdade
    Time tinha
    domínio, nunca
    tinha trabalhado
    com kafka
    Quarta geração

    View full-size slide

  17. Motivadores de
    mudança

    View full-size slide

  18. Escala e Consistência: Como processar mais de 1 milhão de registros em poucas horas
    Pontos de atenção
    Alta volumetria
    Falta de garantia de ordem
    Falta de consistência entre os bancos
    Impossibilidade de escalar horizontalmente
    Custo do banco de busca
    Tentativas de melhoria observadas
    Pubsub ordenado
    Implementação de lock utilizando banco em
    memória
    Pipeline para migração no snapshot do
    Postgres
    Solução
    Migração para uma nova arquitetura
    Construção de uma plataforma de
    processamento de dados
    Motivadores de
    mudança

    View full-size slide

  19. Pontos de melhoria

    View full-size slide

  20. Escala e Consistência: Como processar mais de 1 milhão de registros em poucas horas
    Custo
    Redução do custo do banco de busca
    Redução do custo com o armazenamento
    de dados de negócio
    Arquitetura
    Desacoplamento dos workers
    Processamento ordenado
    Escalabilidade horizontal
    Banco de dados principal centralizado
    Real-time
    Estrutura dos dados
    Compressão dos dados
    Contratos para transmissão dos dados
    entre os micro serviços
    Contratos para armazenamento dos
    dados
    Pontos de
    melhoria

    View full-size slide

  21. Nova arquitetura e suas
    características

    View full-size slide

  22. Quinta geração
    Escala e Consistência: Como processar mais de 1 milhão de registros em poucas horas
    - Plataforma

    View full-size slide

  23. Quinta geração
    Escala e Consistência: Como processar mais de 1 milhão de registros em poucas horas
    - Plataforma
    Ideal para
    armazenar grandes
    volumes de dados
    de chave única
    indexada com
    baixa latência.
    Change data capture

    View full-size slide

  24. Custo
    Banco de busca mais barato (payback da
    migração foi de 3 meses)
    Compressão dos dados
    Arquitetura
    CQRS (Command Query Responsability
    Segregation) → APIs sync e async
    Garantia de ordem → Kafka
    Escalabilidade horizontal
    Escrita atômica → transação única no Bigtable
    Geração de CDC - Change Data Capture
    Consistência entre os bancos →
    ElasticSearch, Bigtable e Data warehouse
    Libertação dos dados para diferentes casos
    de uso que surgirem → dados em real time
    Escala e Consistência: Como processar mais de 1 milhão de registros em poucas horas
    Nova arquitetura e
    suas características

    View full-size slide

  25. Desafios enfrentados

    View full-size slide

  26. Escala e Consistência: Como processar mais de 1 milhão de registros em poucas horas
    Migração de dados sem impactos
    Continuous migration → 6 meses
    Não gerar impacto nos clientes → sem
    downtime
    Volumetria
    Taxa de processamento: ~1M por dia
    Migração: ~1.8 bilhões em poucas horas
    Gerenciamento do projeto
    Três departamentos
    Entregas simultâneas
    Plano de migração
    Desafios
    enfrentados

    View full-size slide

  27. Escala e Consistência
    Como processar mais de 1 milhão de registros em poucas horas

    View full-size slide