Il s'agit d'un compromis classique :
Outils AWS (SQS, SNS)
Il vous sera plus facile de les configurer et de les intégrer au reste de votre architecture, surtout si la plupart de celle-ci fonctionne déjà sur AWS. Ils seront aussi probablement moins chers au début, car ils ont un bon modèle de paiement au fur et à mesure, mais le coût n'évoluera pas aussi bien, vous devez donc y penser.
Apache Kafka
Ici, vous utilisez un modèle PUB/SUB distribué très populaire (pas à la mode) (c'est important si vous pensez que vous allez beaucoup évoluer). De nos jours, ce modèle semble avoir la préférence, car il est très courant d'exécuter des analyses sur les données qui passent par les tuyaux, et généralement avec une architecture SOA, vous pouvez avoir une multitude de petits services qui consomment les messages et font leur travail, sans que les données soient retirées de la file d'attente. Vous obtenez également un lot d'options de configuration, de sorte qu'en fonction de votre cas d'utilisation, vous pouvez l'adapter à vos besoins. Cela signifie plus de travail, mais un service plus optimisé à terme.
Résumé
Il s'agit là d'un compromis classique entre la rapidité et la facilité de développement et la meilleure solution, très modulaire et personnalisée, qui comporte plus de frais généraux pour la première mise en œuvre mais qui évolue mieux.
Conseils personnels
Si vous êtes en train de prototyper quelque chose, privilégiez la vitesse de développement, donc les outils AWS. Si vos besoins sont figés et nécessitent une échelle importante, prenez définitivement le temps d'utiliser kafka. Je suis également un grand partisan de l'utilisation de logiciels libres pour améliorer le monde, mais ce n'est pas le principal argument à utiliser.