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

Implementando Fail Fast no Rails

Implementando Fail Fast no Rails

Fail fast é um conceito muito importante principalmente quando precisamos escalar uma aplicação. Precisamos processar (bi)milhões de requisições e não podemos perder tempo com falhas momentâneas, necessitamos ser resilientes e manter a aplicação sempre saudável. Esta talk aborda como aplicamos o fail fast usando um simples semáforo ou até setando variáveis a nível de banco de dados.

Luis Fernando Murara

February 27, 2020
Tweet

More Decks by Luis Fernando Murara

Other Decks in Technology

Transcript

  1. Hardware do usuário OS do usuário Browser do usuário Internet

    do usuário DNS do usuário Hardware da plataforma OS da plataforma Rede interna Rede externa DNS interno Banco de dados Sistema de Filas Monolito/microsserviços Serviços de terceiros
  2. “[...] when a problem occurs, it fails immediately and visibly”

    Jim Shore, 2004 Fonte: https://www.martinfowler.com/ieeeSoftware/failFast.pdf
  3. lock_timeout (integer) Abort any statement that waits longer than the

    specified number of milliseconds while attempting to acquire a lock on a table, index, row, or other database object. Fonte: https://www.postgresql.org/docs/9.6/runtime-config-client.html
  4. LockWaitTimeout will be raised when lock wait timeout exceeded. Fonte:

    https://api.rubyonrails.org/classes/ActiveRecord/LockWaitTimeout.html
  5. Conclusões e Observações ➢ Antes de aplicar o fail fast,

    tenha uma ferramenta para monitorar sua aplicação. ➢ Gere alertas para sua operação (via Slack, Telegram, sinal de fumaça) ➢ Processamentos pesados != processos com falha/lentidão. ➢ Otimize os processos pesados e coloque-os para rodar de forma assíncrona.
  6. Obrigado LUIS FERNANDO MURARA Software Engineer at Resultados Digitais [email protected]

    Linkedin: https://linkedin.com/in/murara Github: @murara Facebook: @SirMurara We're hiring!