ShareThisExpérience de construction d'applications météo à l'échelle
Par Vijay IADH
ShareThis utilise Meteor pour construire des applications web. Meteor est une plateforme complète pour la création d'applications web et mobiles en JavaScript pur. Une application Meteor comprend un composant côté client qui s'exécutera sur le client (le navigateur), ce qui permet à Meteor de faire ce qu'il appelle une base de données partout. Meteor prendra un sous-ensemble de la base de données et le copiera sur le client. Au lieu d'envoyer du code HTML au client, une application Meteor enverra les données brutes et laissera le client s'en occuper.
Comme 65% de ShareThisl'infrastructure est dockerisée et fonctionne sur des Kubernetes et afin d'utiliser Meteor efficacement, nous avons besoin de construire des applications Meteor à l'échelle avec la capacité de traiter des millions de demandes par mois. Pour ce faire, nous avons d'abord testé en charge nos applications Meteor et observé les performances par rapport au nombre de requêtes par seconde lorsqu'il y a un grand nombre de requêtes simultanées. Afin de rendre les données du backend de l'interface utilisateur de MongoDB, les serveurs Meteor ont publié des jeux d'enregistrements. Les temps de réponse de notre application fonctionnant sur Meteor, plus MongoDB, étaient insatisfaisants. Il a fallu 1,5 seconde à meteor pour mettre à jour 5 000 documents Mongo lors du test avec 185 requêtes par seconde au niveau de simultanéité de 125. Les temps de réponse idéaux devraient être inférieurs à 1 seconde.
Les choses importantes que nous avons observées avec la course Meteor à l'échelle sur Kubernetes sont:
L'éditeur et l'abonnement par défaut de Meteor ne peuvent pas restituer un grand nombre de mises à jour MongoDB en temps réel
Meteor sock. js et Sticky sessions exigence rendre l'interface utilisateur feuilletée quand il ya plusieurs cas Meteor exécution en parallèle derrière un équilibreur de charge
En savoir plus sur notre approche de la mise à l'échelle Meteor et les changements que nous avons apportés à notre architecture Meteor ici: