Je travaille sur une application web qui, historiquement, était construite sur une pile PHP/MySQL. L'une des principales opérations de l'application consistait à effectuer des calculs lourds qui nécessitaient une itération sur chaque ligne d'une table DB entière. Inutile de dire que c'était un sérieux goulot d'étranglement. Il a donc été décidé de réécrire l'ensemble du processus en Java.L'utilisation de serveurs Web dynamiques a-t-elle un sens?
Cela nous a donné deux avantages. L'un était que Java, en tant que langage, était beaucoup plus rapide qu'un processus PHP. La seconde était que nous pouvions conserver l'ensemble des données dans la mémoire du serveur d'applications Java. Alors maintenant, nous pouvons faire les opérations lourdes de calcul en mémoire, et tout se passe beaucoup plus vite.
Cela a fonctionné pendant un certain temps, jusqu'à ce que nous nous rendions compte que nous avions besoin d'évoluer, nous avons donc besoin de plus de serveurs Web.
Le problème est - par la conception actuelle, ils doivent tous maintenir exactement le même état. Ils interrogent tous la base de données, traitent les données et la conservent en mémoire. Mais que se passe-t-il lorsque vous devez modifier ces données? Comment tous les serveurs conservent-ils leur cohérence?
Cette architecture me semble imparfaite. Les performances bénéficient de la conservation de toutes les données en mémoire, ce qui nuit considérablement à l'évolutivité.
Quelles sont les options d'ici? Passer à un magasin de données en mémoire, à valeur-clé? Devrions-nous abandonner l'état de conservation à l'intérieur des serveurs Web entièrement?
+1 pour le grain de vérité. – duffymo