Taille du conteneur de déploiement d’applications en fonction de la quantité

J’apprends à déployer une application de meteor sur la galaxie et je suis vraiment confus par tout ce genre de conteneur.

J’essaie de comprendre quand il serait préférable de mettre à l’échelle une application en augmentant la taille du conteneur plutôt qu’en ajoutant d’autres conteneurs.

Si j’avais un site de salle de chat léger par exemple. Pourquoi aurais-je jamais besoin de mettre à jour la taille du conteneur si je peux simplement append plus de petits conteneurs. En fin de compte, n’est-ce pas la sum de la puissance de traitement qui compte?

2 x 0.5 containers = 1 x 1 container

Le coût de le faire dans les deux cas est le même.

En outre, si un utilisateur modifie la firebase database lors de l’utilisation de l’application dans un conteneur, les autres instances de l’application s’exécutant sur d’autres conteneurs ne prendront-elles pas un certain temps à remarquer le changement? Si les utilisateurs sur des conteneurs différents discutaient ensemble, cela poserait un problème, n’est-ce pas? Comment l’éviteriez-vous?

La seule façon de comprendre cela est la suivante: le manque de CPU et de RAM, ou la capacité à gérer les requêtes parallèles, va créer un besoin d’évolution. Si l’application reçoit trop de trafic, vous obtenez plus de conteneurs. Si l’application utilise trop de CPU et de RAM, vous obtenez un plus grand conteneur.

Mais comment une application peut-elle devenir trop grande pour tenir dans un seul conteneur? Le processeur et la RAM utilisés par l’application ne seront-ils pas liés au nombre d’utilisateurs de cette instance de l’application? Ne pourriez-vous pas simplement résoudre le problème en ajoutant plus de conteneurs et en répartissant les utilisateurs et en réduisant l’utilisation du processeur et de la RAM de cette manière.

Et pourquoi auriez-vous besoin de plus de conteneurs pour traiter plus de demandes? Un conteneur plus grand ne traitera-t-il pas davantage de demandes?

La question que vous posez est trop large pour y répondre. Dans votre cas, les deux stratégies d’augmentation de la taille du conteneur (ou de mise à l’échelle verticale) et d’ajout de conteneurs (ou de mise à l’échelle horizontale) fonctionneront si elles sont mises en œuvre efficacement.

Mais préférer la mise à l’échelle horizontale est la meilleure option. Lorsque vous lancez un cluster de conteneurs qu’ils exécutent derrière AWS Elastic Loadbalancer et si vous activez les sessions persistantes, il n’y aura aucun problème dans les salles de conversation.

Lis ça

http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elb-sticky-sessions.html

En outre, c’est bon à lire.

http://docs.aws.amazon.com/AmazonECS/latest/developerguide/cloudwatch_alarm_autoscaling.html

https://aws.amazon.com/blogs/compute/powering-your-amazon-ecs-clusters-with-spot-fleet/

Ensuite, la question de la firebase database, je suppose que vous utiliserez une firebase database parente pour votre application afin que tous les conteneurs lisent à partir de la même firebase database. l’optimisation est en place, il n’y aura aucun problème.