Google Cloud Pub-Sub

Chez Affini-Tech nous avons développé une forte addiction aux architectures Pub-Sub pour la simplification qu'elles permettent dans la mise en oeuvre de systèmes distribués. La Google Cloud Platform permet de très facilement mettre en oeuvre des architectures quasi-Lambda en offrant un Pub-Sub totalement managé.

Les architectures Pub-Sub permettent de totalement découpler des composants et de les faire fonctionner de manière asynchrone. Cette architecture est faite pour transporter et distribuer des messages. On a 3 composants :

  • des publishers qui écrivent des messages.
  • des topics qui stockent les messages écrits par les publishers.
  • des subscribers qui lisent les messages.

Chaque subscriber crée une souscription pour s'abonner au topic dont il veut consommer les messages. Au fur et à mesure de ses besoins, ou de ses capacités de traitement, le subscriber va tirer des messages de la souscription. Cette approche permet d'avoir plusieurs souscriptions attachées à un topic qui consomment les messages indépendament les unes des autres. Un des gros avantages, est aussi de pouvoir considérer chaque souscription comme une queue mettant en attente les messages entre deux batches de traitement.

La consommation des messages peut se faire en allant chercher ceux-ci à intervalle régulier. Le fait d'envoyer un acknowledge pour les messages reçus va les supprimer de la souscription. Cette approche par les "pull-subscriptions" permet de traiter les données par micro-batches. Si on souhaite plus de réactivité, alors on peut utiliser des "push-subscriptions", et dans ce cas le topic va envoyer tout message reçu vers un end-point http. Dans ce dernier cas la latence est beaucoup plus faible, et permet d'avoir un traitement quasi temps réel.

Même si le Pub-Sub de Google est très proche de ce qu'on va trouver dans les architectures Lambda, il reste assez différent d'un Kafka. En effet GCP/Pub-Sub n'offre pas la possibilité de Kafka de pouvoir rejouer le log et de déplacer l'offset. Dès lors que la dernière souscription a consommé un message d'un topic, celui-ci est effacé définitivement.

Pub-Sub