CleanTempMail utilise Go et MongoDB, mais le choix du langage et de la base de données n'est qu'une partie de la mise en place d'un récepteur d'e‑mails. Les questions de conception importantes portent sur le moment où un message est considéré comme accepté, la façon dont il est récupéré et ce qui se passe lorsque le stockage est occupé.
Définir l'acceptation et la durabilité
Un récepteur doit disposer d'une politique documentée pour la persistance du courrier accepté et la gestion des échecs temporaires. Les écritures en base de données non reconnues ne constituent pas un raccourci vers une livraison fiable : elles compliquent la vérification du succès d'une écriture. Choisissez les paramètres de durabilité en fonction des exigences de récupération du service et validez-les dans des conditions d'échec.
Indexer les chemins de lecture réels
Inspectez les requêtes utilisées pour la liste de la boîte de réception, la recherche de messages et le nettoyage. Sélectionnez des index qui soutiennent ces requêtes et mesurez leur coût en lecture et écriture. Évitez de créer un index simplement parce qu'un autre service l'utilise.
Utiliser l'expiration avec des attentes réalistes
Les index TTL de MongoDB peuvent supprimer les documents expirés en arrière-plan. La suppression n'est pas immédiate et consomme des ressources. L'expiration d'un message stocké ne désactive pas son adresse de destinataire ni ne supprime les copies dans des journaux, exportations ou sauvegardes non liés. Voir la documentation TTL de MongoDB pour le comportement et les limites.
Limiter la concurrence et les files d'attente
Limitez les connexions entrantes, le travail d'analyse, l'amplification des destinataires et les opérations de stockage concurrentes. Réutilisez les clients de base de données et dimensionnez les pools de connexions en vous basant sur des mesures plutôt que sur une recommandation universelle de taille de pool. Une file de réessai nécessite un nombre de travailleurs limité et une observabilité de l'âge ainsi que de la longueur.
Séparer les mises à jour de la boîte de réception des garanties de livraison
Les événements envoyés par le serveur peuvent mettre à jour un navigateur connecté après le traitement d'un message. Ils ne suppriment pas les files d'attente de l'expéditeur ni la latence réseau. Les clients programmatiques doivent suivre la documentation API actuelle, y compris les limites d'accès et de requêtes.
Comparez les conceptions en utilisant un trafic représentatif et des tests d'échec. Cet article ne fournit pas de benchmark établissant que Go ou MongoDB est universellement plus rapide qu'une pile alternative.