IT & Engineering
Cómo la agrupación de conexiones nos ayudó a reducir el tiempo de entrega a la mitad y ofrecer TLS oportunista
Este artículo fue escrito por Russell Jones, desarrollador de software en Mailgun responsable de lanzar como código abierto nuestra biblioteca de análisis MIME flanker. Hoy va a escribir en el blog sobre cómo optimizamos las conexiones salientes y redujimos el tiempo de envío al implementar TLS oportunista. Esta misma técnica se puede utilizar para optimizar desde el rastreo web hasta las API externas de alto rendimiento, pero hablaremos de SMTP a modo de ejemplo.
En enero de 2014
Decidimos que necesitábamos volver a centrarnos en nuestra infraestructura de envío principal para reducir el tiempo de inactividad y aumentar el rendimiento. Esto implica escalar y refactorizar partes de Mailgun para lograr nuestros objetivos. Me he centrado en la parte de la entrega de emails de la infraestructura de envío, el último paso que da un email en la infraestructura de envío de Mailgun, donde transmitimos el mensaje en sí a los destinatarios previstos, y de esto es de lo que hablaré hoy.
Nuestros objetivos eran sencillos. Anticiparnos a nuestro crecimiento para que, a medida que consigamos más clientes y enviemos más emails, nuestros clientes no sufran ningún tiempo de inactividad ni retrasos en la velocidad de entrega.
Teníamos un par de objetivos concretos:
- Reducir el tiempo de entrega de un email.
- Reducir el bloqueo que sufrimos por parte de los proveedores de servicios de envío de emails (ESP) de los destinatarios.
- Mejorar la seguridad cifrando la entrega de emails siempre que sea posible (TLS oportunista).
- Utilizar la monitorización para conocer a fondo el nuevo motor SMTP y poder hacer un mejor seguimiento del tiempo de entrega y el bloqueo.
Solución
Nuestro motor SMTP original era sencillo: por cada email que sacábamos de nuestra cola de entrega, abríamos una conexión con el servidor al que intentábamos realizar la entrega, enviábamos el mensaje y, a continuación, cerrábamos la conexión.
Aunque resulta increíblemente sencilla y eficaz, a la escala a la que opera Mailgun en la actualidad, esta técnica suponía un gran desperdicio de recursos. Por cada mensaje que enviábamos, teníamos la sobrecarga de un protocolo de enlace TCP, un protocolo de enlace SMTP y, si la entrega se realizaba a través de TLS, un protocolo de enlace TLS. Para que te hagas una idea, a menudo tardábamos más de un minuto y medio en entregar un mensaje si intentábamos hacerlo a través de TLS. Este es uno de los motivos por los que no habíamos implementado el TLS oportunista antes: era demasiado costoso.
Cuando nos sentamos y empezamos a pensar en mejorar la entrega, queríamos reducir el tiempo que se tardaba en enviar un mensaje, así como ofrecer TLS oportunista a nuestros clientes. Nuestra solución fue enviar varios mensajes por conexión y utilizar la agrupación de conexiones para reutilizar las ya existentes. Dado que Mailgun envía tantos emails, encontrar una conexión que ya estuviera abierta no supuso ningún problema, lo que nos permitió eliminar la sobrecarga de establecer conexiones.
¿Qué nos permite hacer esto?
Esto nos permite amortizar el coste de los protocolos de enlace TCP y TLS en varios mensajes, lo que reduce su coste y aumenta la velocidad de entrega. Los mensajes que podían tardar un minuto y medio o más en entregarse, ahora se entregan en unos 600 ms. También nos permite ajustar las tasas de envío de las IP a los ESP de los destinatarios, que son fundamentales en la entrega de emails, y aumentar la entrega general al tiempo que reducimos los costes tanto para nosotros como para los ESP. Ser un mejor ciudadano en el mundo del email se traduce en un menor bloqueo, un menor uso de los recursos y una mejor entrega para nuestros clientes
También monitorizamos todo: desde la tasa de entrega y el uso de la memoria hasta el tiempo de entrega. Esto nos ha permitido anticiparnos en lo que respecta al estado del motor SMTP. Ahora podemos detectar los problemas antes de que ocurran para que los clientes no se vean afectados. Estos nuevos datos también nos ayudan a combatir a los spammers, una batalla interminable, así como a determinar dónde se está produciendo el bloqueo para poder mejorar otras áreas de Mailgun con el fin de reducirlo y disminuir el tiempo de entrega.
Hacia dónde vamos a partir de aquí
El siguiente paso lógico es trabajar en la renovación de nuestros algoritmos de tasa de envío. Ahora que disponemos de una mejor entrega y monitorización, podemos ver cuándo y dónde se produce el bloqueo y qué cambios le afectan. Sin embargo, ningún cambio algorítmico por nuestra parte puede superar la ventaja de tener un buen tráfico. El tráfico de alta calidad prevalece por encima de todo cuando se trata de la entrega de emails. Por eso, nuestra otra gran inversión en 2014 es la mejora de nuestro sistema de reputación para que sea más preciso y proporcione más datos a nuestros clientes.
Habrá más novedades al respecto. Hasta entonces…
¡Feliz envío!