escalando uma plataforma de e-mail transacional: smtp ... · escalando uma plataforma de ... -...
TRANSCRIPT
![Page 1: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/1.jpg)
Escalando uma plataforma de e-mail transacional:
aprendizado das trincheiras
Celso Crivelaro (@celsocrivelaro)Fabio Perrella (@fabioperrella)
SMTP Locaweb
![Page 2: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/2.jpg)
Fabio Perrella- Eng Computação- Dev Ruby, Php, Python, Javascript- Locaweb, time de Email- 1a geração do projeto do SMTP
@fabioperrella
http://fabioperrella.blogspot.com
![Page 3: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/3.jpg)
Celso Crivelaro- Engenheiro e Mestre em Engenharia de Computação- Dev Ruby / Python / Java- Dev do SMTP Locaweb há 1 ano e meio
@celsocrivelaro
http://crivelaro.me
![Page 4: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/4.jpg)
![Page 5: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/5.jpg)
SMTP Locaweb - Produto- Plataforma para envio de e-mails transacionais- Envio de grandes quantidades com velocidade e qualidade- Relatórios “ao vivo” para acompanhar os envios- Envio por SMTP e API HTTP- Webhooks para devoluções de e-mails (bounces)- 2,5 milhões de e-mails por dia- Há + de 2 anos no ar- Mais de 2.000 contas ativas
![Page 6: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/6.jpg)
![Page 7: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/7.jpg)
O que é email transacional?- Disparos granulares- Notificação de eventos- Entrega rápida- Exemplos de uso: CRM, E-commerce, Billing, Websites
![Page 8: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/8.jpg)
Processamento Lento
Processamento Rápido
Arquitetura
Autenticação Tratamento da Mensagem MTA ProvedoresUsuário
Processamento da Mensagem Consolidação Painel
![Page 9: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/9.jpg)
SMTP Locaweb- Arquitetura distribuída- Painel e APIs -> Ruby on Rails- Workers -> Ruby- Postfix milters -> Python- DB -> Postgres- Caches e Filas -> Redis- MTA -> PowerMTA
![Page 10: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/10.jpg)
Desafios- Estabilidade- Escalabilidade- Performance- Relatórios em “tempo real”- Combater fraudes- Manter qualidade da entrega (https://returnpath.
com/downloads/the-ultimate-guide-to-email-deliverability)
![Page 11: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/11.jpg)
Apostas que deram certo!
http://www.lafayetterealestatenews.com/wp-content/uploads/2015/08/Success.jpg
![Page 12: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/12.jpg)
![Page 13: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/13.jpg)
Postgres Schemas- Posgresql >= 9.3- http://www.postgresql.org/docs/9.3/static/ddl-schemas.html
SET search_path TO myschema,public;
![Page 14: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/14.jpg)
![Page 15: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/15.jpg)
Public
Tabelas menores
Tabelas em comum
Migração default
Privado (Conta)
Tabelas maiores
Dados de uma conta
Migração ao criar conta
Postgres Schemas
![Page 16: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/16.jpg)
Prós
Isolamento dados
Tamanho das tabelas
Contras
Complexidade migrações
Relatórios consolidados
Postgres Schemas
![Page 17: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/17.jpg)
Exportação de Relatórios
![Page 18: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/18.jpg)
Postgres Copy - Exportação de dadosProblema:
- Geração de arquivos > 100mil linhas- Código ruby iterando do DB e gerando CSV- Podia levar horas para finalizar geração de arquivo
![Page 19: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/19.jpg)
COPY #{QUERY} TO STDOUT WITH FORMAT CSV
http://www.postgresql.org/docs/9.3/static/app-psql.html#APP-PSQL-META-COMMANDS-COPY
![Page 20: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/20.jpg)
Separação das Apps
![Page 21: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/21.jpg)
Apps por funcionalidade
Milters(python)
WorkersPainel
Core Api
Provisionador
DB
API envio
Open-Click
Auth Policy
![Page 22: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/22.jpg)
Gem “models” para compartilhar código- Modelos, Migrações, Códigos em comum extraídos para gem- Facilidade para usar Activerecord- Atenção na atualização de novas versões da gem- Dica: http://ryanbigg.com/2013/08/bundler-local-paths
![Page 23: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/23.jpg)
Apps por funcionalidade
Milters(python)
WorkersPainel
Core Api
Provisionador
DB
API envio
Open-Click
Auth Policy
![Page 24: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/24.jpg)
![Page 25: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/25.jpg)
Problemas- Ambiente distribuído- Testes de integração eram essenciais!- Configuração do Postfix, Milters, Nginx não é trivial- Dev novo não conseguia levantar ambiente completo- Incompatibilidades Mac OS X / Linux- Versionamento de dependencias (ex: Redis)
![Page 26: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/26.jpg)
Docker com ambiente completo- Docker-compose! (https://docs.docker.com/compose)- Mailcatcher (https://mailcatcher.me)- Fluxo completo do email- Base para configuração de produção
![Page 27: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/27.jpg)
![Page 28: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/28.jpg)
DockerPor onde começar:
https://training.docker.com/self-paced-training
Vale gastar um tempo!
![Page 29: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/29.jpg)
Logs
![Page 30: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/30.jpg)
Archive de logs centralizado- Syslog ajuda!- Log rotate a cada 15min- Archive em storage organizado por servidor/data- Grep em multiplos servidores/datas
- Cuidado: limite de caracteres syslog (aprox 1500 p/ mensagem)
![Page 31: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/31.jpg)
![Page 32: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/32.jpg)
Caches e filas no Redis- Milters dependem de dados das contas (API)- Performance- TTL- Facilidade para debug / “queries” (comparando com memcache)
$ redis-cli monitor | grep “qquer coisa”
- Estruturas de dados: string, hashes, arrays, sets- Operações atômicas / garantia para concorrência
![Page 33: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/33.jpg)
Redis- Sharding com twemproxy (https://github.com/twitter/twemproxy)- Persistência desligada: app deve saber “esquentar” o cache!- Alternativa: Master / Slave (local)- Futuro: Redis Cluster- Atenção à versão do Redis, pode não ser a mesma da sua
máquina (docker nele!)
![Page 35: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/35.jpg)
Heartcheck
Redis DB Sidekiq Telnet
ProcessosAPIs Mount Points
DNS
![Page 36: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/36.jpg)
![Page 37: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/37.jpg)
![Page 38: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/38.jpg)
Gráficos!
![Page 39: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/39.jpg)
Painel de monitoração (cockpit)- Ajuda saber quando precisamos aumentar capacidade e onde- Investigação de problemas- Grafana ( http://grafana.org )- New Relic / AppSignal
![Page 40: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/40.jpg)
Painel de monitoração (cockpit)
![Page 41: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/41.jpg)
Deploy contínuo(quase...)
![Page 42: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/42.jpg)
Toggler - Feature Toggle- Deploy contínuo sem impacto- Exibir/esconder feature nova para determinadas contas- Ligar/desligar features sem deploy
![Page 43: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/43.jpg)
De MVP para 2,5 MM
![Page 44: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/44.jpg)
Processamento Lento
Processamento Rápido
Voltando ao diagrama...
Autenticação Tratamento da Mensagem MTA ProvedoresUsuário
Processamento da Mensagem Consolidação
![Page 45: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/45.jpg)
Requisitos não funcionais
Alta Disponibilidade Performance
EscalabilidadeResiliência
![Page 46: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/46.jpg)
Estabilidade
![Page 47: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/47.jpg)
Isole os componentes críticos
![Page 48: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/48.jpg)
Aplicação Painel
Painel Web API Interna - HTTP
Recursos
Pool de Conexões App Server Regras de
Negócio Integrações
![Page 49: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/49.jpg)
Aplicação API InternaAplicação Painel
Painel Web API Interna - HTTP
Recursos
Pool de Conexões
App Server
Regras de Negócio Integrações
Recursos
Pool de Conexões
App Server
Regras de Negócio Integrações
![Page 50: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/50.jpg)
Separação de Máquinas por Aplicação
Mesma máquina
Interdependência de libs
Consumo de Recursos
Versão da Linguagem
Máquina separada
Lib por App
Aplicação não afeta outra
Upgrades podem ser feitos em separado
![Page 51: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/51.jpg)
Poucos Componentes=
Pouca Manutenção
![Page 52: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/52.jpg)
API InternaPainel
Novas Funcionalidades Estabilidade/Performance
Muitas atualizações Poucas atualizações
Framework para Web Framework para API
Quebrou: ninguém morre Quebrou: ponto central de falha
![Page 53: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/53.jpg)
Usar tecnologia que não domina...
Postfix Milter libmilter
pymilter
app
Protoco Milter
![Page 54: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/54.jpg)
- Libs=
+ Alegria
![Page 55: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/55.jpg)
Escalabilidade
![Page 56: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/56.jpg)
Busque o dado de memórias + rápidas e de
lugares pertos
![Page 57: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/57.jpg)
Estratégia de Cache Padrão
App
Cache
Fonte
1
2
3
![Page 58: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/58.jpg)
1a Estratégia de Cache
App
Fonte App Cache
App
TTL curto
![Page 59: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/59.jpg)
2a Estratégia de Cache
App
Fonte App
Cache
App
Cache
Cache
TTL curto
TTL curto
TTL curto
![Page 60: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/60.jpg)
3a Estratégia de Cache
App
Fonte App
CacheSlave
App
CacheSlave
CacheSlave
TTL longo
TTL longo
TTL longo
CacheMaster
![Page 61: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/61.jpg)
4a Estratégia de Cache
App
Fonte App
CacheSlave
App
CacheSlave
CacheSlave
TTL longo
TTL longo
TTL longo
CacheMaster
Cache Manager
![Page 62: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/62.jpg)
Balanceamento de Carga
![Page 63: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/63.jpg)
App
Client App
App
Load Balancer
![Page 64: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/64.jpg)
App
Client
App
App
Load Balancer
App
App
App
Load Balancer
Load Balancer
![Page 65: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/65.jpg)
Client Load Balancer Cache
Client Load Balancer Cache
![Page 66: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/66.jpg)
Use SEMPRE pool de recursos
![Page 67: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/67.jpg)
Problemas com Pool de Recursos
Não explode erros no início
Esperar de liberação de recurso
Timeouts são esporádicos Deadlocks
![Page 68: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/68.jpg)
Timeouts baixos=
Fail Fast
![Page 69: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/69.jpg)
Coisas que devíamos ter feito
![Page 70: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/70.jpg)
![Page 71: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/71.jpg)
Documentação de Arquitetura- Documentação sobre decisões de arquitetura
http://thinkrelevance.com/blog/2011/11/15/documenting-architecture-decisions
- Faltou documentação de decisões
![Page 72: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/72.jpg)
Worker com Ruby puro- Fizemos um grande workers de processamento de mensagens- Em Ruby puro…- Sem recursos de mensageria- Difícil ver errors, retentativa, tamanho da fila….
![Page 73: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/73.jpg)
Não reinvente a roda
![Page 74: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/74.jpg)
Saiba os limites...
Teste de Carga
Teste de Estresse
Teste de Pico
![Page 75: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/75.jpg)
Algumas referências
![Page 76: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/76.jpg)
![Page 77: Escalando uma plataforma de e-mail transacional: SMTP ... · Escalando uma plataforma de ... - Atenção à versão do Redis, pode não ser a mesma da sua ... Aplicação Painel Painel](https://reader030.vdocuments.mx/reader030/viewer/2022021700/5c01ada309d3f20a538d0ba2/html5/thumbnails/77.jpg)