Product

Atualização semanal de produto: melhorias no painel de controle e corretor ortográfico 135x mais rápido para verificação de e-mail

Primeiras mudanças e melhorias feitas no painel de controle e na API de verificação de e-mail no início do Mailgun. Leia mais...
Imagem para Atualização semanal de produto: melhorias no painel de controle e corretor ortográfico 135x mais rápido para verificação de e-mail

Nesta semana, focamos em melhorar o painel de controle do Mailgun e o corretor ortográfico para a API de verificação de e-mail.

O painel de controle ganha um novo visual e alguns novos recursos

Você pode não ter notado, mas o nosso painel de controle não ganhou nenhum prêmio de design. : ) A equipe aqui historicamente teve foco em engenharia e foi mais proficiente em Python e Golang do que em HTML5 e CSS. Mas recentemente contratamos um incrível designer de UX e desenvolvedor front-end para ajudar a melhorar a experiência de usar o Mailgun por meio do painel de controle. Então, nesta semana, lançamos uma nova versão do painel de controle com uma série de melhorias visuais sutis e um novo recurso que achamos que será útil para você: status do domínio. Este é apenas o primeiro passo e lançaremos mais melhorias de UX e recursos no futuro.

Status do domínio

Qualquer domínio do Mailgun pode ter um de três status: ativo, não verificado e desativado. Veja o que cada um significa e por que você deve se importar:

  • Ativo: isso significa que seu domínio tem todos os registros DNS adequados configurados e está em boas condições
  • Não verificado: isso significa que seu domínio não tem alguns ou todos os registros DNS de envio necessários configurados. Isso é um problema, pois sem esses registros configurados, é muito provável que seus e-mails caiam no spam. Você deve corrigir isso o mais rápido possível.
  • Desativado: isso significa que seu domínio não pode mais enviar e-mails, provavelmente devido a um alto número de devoluções ou reclamações recebidas. Entre em contato conosco pelo e-mail support@mailgun.com para resolver.

Esses status oferecem uma visualização rápida de todos os seus domínios, o que é particularmente útil se você opera uma plataforma em grande escala para clientes usando o Mailgun. Agora, será muito mais fácil ver quais clientes estão com problemas e quais precisam da sua ajuda. O status do domínio também está disponível como parte da API de domínios se você preferir acessar o status dessa forma.

Acelerando o corretor ortográfico do validador de e-mail em 135x

Quando começamos a trabalhar no Guardpost, nossa API de verificação de e-mail, sabíamos que as sugestões de erros de digitação eram algo que queríamos incorporar ao serviço (isso captura erros de digitação como gmall.com em vez de gmail.com). Vemos muitos e-mails que não são entregues aos destinos pretendidos todos os dias devido a erros de digitação e queríamos fazer algo a respeito. Fizemos um brainstorm interno, bem como pesquisamos, como outras pessoas estavam resolvendo esse problema; e, como muitos outros, encontramos o artigo de Peter Norvig sobre como escrever um corretor ortográfico e construímos nosso corretor ortográfico inicial em torno da ideia dele para a primeira versão do Guardpost que lançamos.

O que descobrimos rapidamente foi que nossa CPU estava sendo sobrecarregada, fazendo o Guardpost ficar lento, e olha que o Guardpost estava em um servidor bastante robusto. Uma análise de desempenho mostrou rapidamente que estávamos gastando uma quantidade desproporcional de tempo no corretor ortográfico.

Voltando ao corretor ortográfico, a versão inicial funcionava criando muitas combinações diferentes de strings com base na palavra original, chamadas de edições. Em seguida, ao analisar todas essas edições, você procura aquela com o menor número de edições em relação à palavra original (distância de edição) e essa é a sua sugestão de correção ortográfica.

Isso é ótimo para palavras no idioma inglês, mas não estávamos analisando palavras no idioma inglês, e sim um subconjunto muito específico de palavras em inglês: domínios. Então, começamos a analisar algoritmos diferentes que tivessem um desempenho melhor para nosso caso de uso específico de correção de erros de digitação para domínios. Fizemos vários experimentos para ver o que tinha o melhor desempenho. Para o desempenho, buscávamos tanto a velocidade quanto a precisão do algoritmo.

Depois de muita pesquisa, experimentação e ajustes, acabamos usando uma biblioteca nativa do Python chamada difflib, que usa o algoritmo de Ratcliff-Obershelp para calcular a similaridade entre duas strings. Esse algoritmo não é apenas preciso, mas também muito rápido para corrigir domínios. Mas quão mais rápido? 135 vezes mais rápido!

E quanto à precisão?

Para medir a precisão, criamos um conjunto de dados de teste que incluiu erros de digitação comuns vistos pelo nosso servidor DNS, bem como mutações aleatórias. Mutações aleatórias são coisas como excluir caracteres aleatórios do domínio, adicionar caracteres aleatórios, encurtar e alongar palavras. No total, fizemos cerca de 1.000 testes.

Com o conjunto de dados geral, o novo corretor teve uma precisão de 93,9%, enquanto o corretor antigo teve uma precisão de 98,9%.

Como você pode ver, esses testes parecem ter sido criados para favorecer muito o corretor original, porque é aí que ele realmente se destaca, quando você analisa as edições.

Quando você remove esses testes e observa apenas os erros de digitação do mundo real detectados por nossos servidores DNS, nosso novo corretor tem uma precisão de 95,8%, enquanto o nosso corretor original tinha uma precisão de 96,3%! Isso representa menos de um por cento de perda em precisão com erros de digitação realistas para um ganho de velocidade de 135x. Não é de forma alguma uma troca ruim.

Essa é apenas uma das coisas nas quais estamos trabalhando, nos bastidores, para melhorar o Guardpost e a experiência que as pessoas têm com ele. Tudo isso (e muito mais) em breve será de código aberto, para que você possa conferir (e testar) por conta própria. Fique atento!

Por esta semana é só.

Bom envio!

Os Mailgunners