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

Processando bilhões de eventos - Aprendizados de uma Black Friday em produção

Processando bilhões de eventos - Aprendizados de uma Black Friday em produção

A RD Station disparou 1 bilhão de e-mails na Black Friday de 2019, mas como processar tudo isso?

Como garantir que nossos clientes vão ter dados sobre esses disparos em segundos, garantindo assim o sucesso do negócio deles?

Nesta talk, Rogerio Angeliski conta como o time de e-mail redesenhou a arquitetura de uma das peças centrais de seu negócio para entregar mais confiabilidade e resiliência para seus clientes.

Programação

Rogerio Angeliski

September 25, 2021
Tweet

More Decks by Rogerio Angeliski

Other Decks in Technology

Transcript

  1. 1.Use os dados para projetar sua carga Os dados podem

    evitar grandes surpresas mas não todas
  2. 2.Alguns dados tem um tempo de vida limitado Colete os

    dados depois do problema ou isso vai ser outro problema
  3. Os problemas • Escalabilidade limitada • Alto acoplamento no redis/sidekiq

    • Alto acoplamento em outras aplicações (RDSM) • Reprocessamento em incidentes é muito demorado O design doc ajudou a identificar
  4. Pub/Sub • Entrega pelo menos uma vez • Global por

    padrão • Nenhum provisionamento, tudo automático • Retenção por 7 dias • Dead letter automático • Monitoramento simplificado • Sem custo de operação • Escalonamento automático horizontal; • Integração nativa do Dataflow com o Pub/Sub; • Retry automático com opção de configuração de backoff exponencial e limite de retires; Dataflow
  5. 6.Esteja atento ao que não é parte do negócio mas

    é importante Existem muitas preocupações que não fazem parte da regra de negócio
  6. Feature/Service Circuit Breaker Metrics Alertas Background Processing Deploy Sharding Rate

    limiting Ops Runbook Service Levels GRPC/ JSON Authentication CI Logs PROTEINA Tracing Exponential backoff PUB/ SUB Authorization
  7. Testes de carga Até onde vai essa escalabilidade? Usando o

    JMeter nós identificamos os limites da nossa aplicação: • Quantidade de pods necessários no ingress-controller para cada 1000 rps; • Quantidade de pods necessários na api para suportar uma carga de 1000 rps; • Configuração de CPU e memória necessária para os pods (mínimo e máximo).
  8. 1.Use os dados para projetar sua carga 2.Alguns dados tem

    um tempo de vida limitado 3.Invista tempo no design doc 4.Escalabilidade também é sobre custo 5.Antecipe problemas, entregue valor 6.Esteja atento ao que não é parte do negócio mas é importante 7.Incidentes vão acontecer