Skip to content

Instantly share code, notes, and snippets.

@MarcelaBarella
Last active September 13, 2019 17:54
Show Gist options
  • Save MarcelaBarella/c8992fa0e45cbbff8e4a27c48ac75ff5 to your computer and use it in GitHub Desktop.
Save MarcelaBarella/c8992fa0e45cbbff8e4a27c48ac75ff5 to your computer and use it in GitHub Desktop.

17. Payload flexível para request_fields

Date: 2019-09-19

Status

Proposed

Contexto

Atualmente o time de growth deseja re-implementar a feature de randomização para pedidos nas páginas de categoria e orçamento, porém, devido a limitações atuais presentes no sistema scorpion, implementar tal feature utilizando o Active Record, faz com que o MySQL sobrecarregue e a aplicação acabe caindo. Em tentantivas anteriores desta implementação foi proposta uma solução, em que uma querie seria feita pelo Redis, e nele seriam randomizados os pedidos, retornando assim, os dados já tratados, para o scorpion.

Decisão

Criaremos um novo sistema que irá fazer as queries, assumindo então a resposabilidade de leitura, escrita(persistência), lógica de busca, rodar as rotinas de busca, parsers e modifiers quanto as queries e documentos nele existentes. Optamos pelo uso de um banco NoSQL MongoDB, devido à flexibilidade de escrita e criação de documents, junto da linguagem Python, uma vez que a integração entre ambas as ferramentas ocorre de forma fácil e devido e rapidez no desenvolvimento do sistema.

Especificação

O sistema receberá parâmentros de busca, e com esses fará a queries no banco de dados, manipulando as informações para montar um documento, que se assemelha muito à um JSON:

category_service:
{
  slug: 'reformas-e-reparos/pintor',
  best_reviews: '{}'
}

E escrever dados já manipulados para o Scorpion.

Estimativa de impacto

O sistema tem por intenção melhorar alguns problemas de performance existentes no sistema scorpion, porém, implicando na existência de mais um sistema dentre os já existentes, e adicionando uma curva de aprendizado nova devido ao uso de uma linguagem, junto com novas integrações entre sistemas caso necessário.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment