Product

Nouveautés de la semaine : amélioration des notifications pour les limites d’emails

Les notifications par email vous alertent désormais avant que votre limite ne soit atteinte. En savoir plus...
Image pour Nouveautés de la semaine : amélioration des notifications pour les limites d’emails

Mailgun vous permet d’envoyer des millions d’emails par mois. Toutefois, pour un grand nombre d’équipes de développement qui conçoivent la prochaine application destinée à conquérir le monde, c’est un peu trop pour débuter. Pour vous simplifier la vie si vous utilisez notre abonnement gratuit à des fins de test et de développement, ou bien une plateforme comme Heroku ou EngineYard qui limite le volume d’emails mensuel, nous avons amélioré les notifications par email. Vous êtes ainsi prévenu avant que votre limite ne soit atteinte.

Les notifications par email vous alertent désormais avant que votre limite ne soit atteinte

Si vous possédez un abonnement Mailgun avec une limite d’envoi explicite, nous vous avons toujours envoyé une notification par email une fois votre limite atteinte. Cependant, cela ne vous laisse pas beaucoup de temps pour vous organiser. C’est pourquoi, dès cette semaine, nous envoyons également des notifications lorsque nous constatons que vous approchez de votre limite. Plus précisément :

  • Les clients disposant de notre abonnement gratuit reçoivent des notifications lorsqu’ils atteignent 75 % de leur limite quotidienne
  • Tous les autres clients disposant d’abonnements limités (comme Heroku ou EngineYard) reçoivent des notifications à 75 % et 95 % de leur limite mensuelle

Il s’agit d’une petite amélioration, mais nous espérons qu’elle vous aidera à mieux planifier votre conquête du monde.

Si vous souhaitez savoir comment nous avons conçu des notifications fiables et évolutives, la section suivante est pour vous

Envoyer une notification dès qu’un client atteint 75 % de sa limite d’envoi semble facile, et ça l’est sur le papier. La véritable difficulté consistait toutefois à transformer cette idée en un système fiable et évolutif, capable de fonctionner sans encombre pour des milliers de clients envoyant des millions d’emails par jour. Lorsque nous nous sommes penchés sur le problème, nous avons d’abord opté pour l’approche évidente : ajouter un champ à notre base de données de clients basée sur MongoDB et incrémenter le compteur pour chaque email envoyé.

Mais lorsque nous avons réalisé la charge que cela ferait peser sur notre base de données MongoDB (qui n’est pas optimisée pour un tel nombre d’écritures par seconde), nous avons compris qu’il fallait envisager une approche différente.

Un système basé sur les acteurs dissocie les processus pour de meilleures performances

Au lieu de surcharger notre base de données principale, sur laquelle nous préférons écrire uniquement lorsque cela est absolument nécessaire, nous avons mis en place un système basé sur le modèle des acteurs qui dissocie la plupart des événements de notre base de données principale. En séparant les événements dans différents systèmes spécialisés, Mailgun gagne en efficacité, en simplicité de code et en résilience. Il y a de nombreuses raisons à cela. L’une d’entre elles est que divers processus peuvent s’exécuter sur des machines distinctes. Ainsi, si un processus rencontre un problème, il n’affecte pas les autres. Comment cela fonctionne-t-il ?

Mailgun n’est en fait qu’une série d’événements. Livraisons. Rebonds. Ouvertures. Clics. Lorsqu’un de ces événements se produit, nous l’enregistrons. Ensuite, différents processus peuvent être configurés pour traiter ces événements. Par exemple, lorsqu’un événement « livraison » se produit, nous disposons d’un processus capable de notifier un client par webhook.

Ou, dans le cas des notifications de limite d’emails, cela fonctionne ainsi :

  1. Mailgun livre et reçoit des emails, ce qui génère des événements.
  2. Chacun de ces événements est envoyé à Redis, une base de données clé-valeur idéale pour créer des files d’attente d’événements.
  3. Nous avons ensuite un processus distinct (que nous appelons Watchdog) qui se contente d’écouter ces événements et de déterminer, par exemple, si le client a atteint la limite d’emails de son abonnement.
  4. Nous avons ensuite un autre processus qui se charge d’envoyer le message ou, dans les cas où le client a dépassé sa limite, de désactiver le compte.

Chaque processus ne fait qu’une seule chose, mais il la fait très bien. Il y a peu de pièces mobiles, ce qui rend le système facile à faire évoluer. Et le tour est joué !

C’est tout pour cette semaine. Nous espérons que vous apprécierez ces nouvelles notifications d’événements et que vous en avez appris davantage sur notre façon de développer chez Mailgun.

Bons envois d’emails,

L’équipe Mailgun