Pour savoir où on va, il faut savoir d'où l'on vient

Vous avez
une question ?
Un projet ?

Contactez nous !
 

Contactez-nous

Vous avez une question ? un projet ? 
Vous souhaitez plus d'informations sur un produit ? sur notre offre ? 
Contactez-nous, on vous répond sous 4H.

eZHumanCAPTCHACode reload
retour

Les traitements asynchrones

Les traitements asynchrones

Dans le web, la tentation est de tout faire en synchrone, que ce soit par souci de rendre compte à l’internaute, ou bien – plus encore – parce que c’est plus simple pour le développeur.

Pourtant, une des voies vers la haute-performance consiste à accepter un peu d’asynchronisme dans l’exécution.

Que ce soit avec ou sans middleware (mais on préfèrera avec), le principe est simple :

  • On met en place une file d’attente (FIFO, « First In, First Out ») des tâches à exécuter
  • Le traitement synchrone ajoute une tâche à la liste
  • Un ou plusieurs programmes « dépilent » les tâches et les exécutent.
  • Selon les cas, il peut être nécessaire de gérer des compte-rendu d’exécution, et de les présenter à l’utilisateur, que ce soit au sein des interfaces web, ou bien par d’autres canaux, e-mail par exemple.

Ce que l’on peut représenter comme suit :

image026

L’asynchronisme permet à la fois de rendre l’interface utilisateur plus réactive, puisqu’on ne laisse jamais l’utilisateur en attente, et permet également de lisser le travail, et donc de beaucoup mieux gérer des pointes de charge, sans être obligé de surdimensionner l’architecture.

L’asynchronisme limite aussi les dépendances, et peut donc amener une architecture plus robuste.

Bien sûr, si l’on a mis en place un middleware qui prend en charge cette gestion, tout cela deviendra facile. Néanmoins, il arrive que l’on gère la file d’attente au sein de la base de données, avec des process qui écrivent dans une table des tâches, tandis que d’autres process lisent les paramètres de la tâche, l’exécutent et la suppriment.

Un cas particulier classique d’une gestion qui ne doit pas être synchrone est l’envoi de mail. Même si l’on dispose de fonctions synchrones d’envoi de mail, très simples à utiliser, il n’est jamais bon de les appeler en synchrone. C’est une règle d’or des plateformes web : les mails doivent être émis par une tâche asynchrone.