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

A Tale on XML Parsing

A Tale on XML Parsing

Uma historia de como a Duffel conseguiu melhorar a performance da busca: 10x mais rapida, 10x menos memoria.

Ulisses Almeida

September 08, 2022
Tweet

More Decks by Ulisses Almeida

Other Decks in Programming

Transcript

  1. 💉 ELIXIR ON STEROIDS!!! 󰙤 📜 A tale on XML

    Parsing 🤴 👸 BIIIIRRRLLL !!!! ELIXIR TA SAINDO DA JAULA!!! BIIIIRRRLLL !!!! BORA BEAM !!!! ELIXIR DESCENDENTE !!!!
  2. A investigação Nenhuma era mais rápida que Saxy Muito complexo

    e custoso Muito custoso para mudar Bibliotecas Abordagem Rust
  3. Resolvendo problemas! Ninguém quer ver e nem processar milhares de

    ofertas Validações com Ecto é realmente necessário para consumir API? Fazer o parsing mais cedo que pudermos Filtros Remover processamento HTTP Streaming
  4. Resolvendo problemas! Ninguém quer ver milhares de ofertas Validações com

    Ecto é realmente necessário para consumir API? Fazer o parsing mais cedo que pudermos Filtros Remover processamento HTTP Streaming
  5. O Plano 2 semanas para examinar o problema 2 semanas

    para criar protótipos de baixa fidelidade 4 semanas para integrar uma companhia aérea Investigar Protótipos Produção
  6. 2. Investigando protótipos para construir Saxy tem SimpleForm Eliminar o

    DOM intermediário O futuro do XML? em outra palestra talvez Mini-DOM Sax to Structs VTD-XML
  7. 3. Produção! A companhia aérea mais usada Feature flag com

    Unleash Código velho novo vivendo juntos por um tempo Impacto Gradual Débito
  8. • Implementação para todas integrações com companhia aéreas • Materiais

    e documentação do novo kit de solução • Treinamento e divulgação interna na empresa • Remover código antigo durante a grande jornada de migração Com o sucesso, grande responsabilidades
  9. Does Saxy work with XPath? Saxy in its core is

    a SAX parser, therefore Saxy does not, and likely will not, offer any XPath functionality. SweetXml is a wonderful library to work with XPath. However, :xmerl, the library used by SweetXml, is not always memory efficient and speedy. You can combine the best of both sides with Saxmerl, which is a Saxy extension converting XML documents into SweetXml compatible format. Please check that library out for more information. !
  10. • Documentação ambígua • As pessoas em geral estão acostumadas

    com XPath • SimpleForm do Saxy não tem um uso fácil Complicado You can combine the best of both sides with Saxmerl, which is a Saxy extension converting XML documents into SweetXml compatible format Memory efficiency and better performance - Several benchmarks show that Saxmerl usually uses 4x less memory than :xmerl or SweetXml, and is usually 70–90% faster. Note that benchmarking XML parsers is difficult and highly depends on the complexity of the documents being parsed.
  11. • Confie, mas verifique ◦ Verifique 10 vezes mais principalmente

    quando a única opção boa é mudar de linguagem • Ame o problema, investigue a fundo! ◦ Não desista cedo, por mais complicado que pareça! ◦ Instrumentação! Dados! Métricas! • Não se prenda a soluções ◦ XPath era legal, mas fazíamos pouco uso da ferramenta • Mudanças grandes demoram ◦ Fazer missões paralelas, ganhar experiência, conquistar confiança • Pessoas diferentes, abordagens diferentes Lições aprendidas
  12. Futuro • Usaremos Rust? ◦ Até agora não temos previsão,

    mas pode ser que um dia sim. Vai valer a pena? Não sei XD • DataSchema + SimpleForm? ◦ Provavelmente lançaremos o kit de maneira open source. Mas sem previsão