Comment puis-je m'y prendre/quel est le meilleur moyen d'estimer le type de ressources de serveur dont j'aurai besoin lors du lancement d'un nouveau projet. Supposons, par exemple, que j'ai rassemblé 10 000 adresses électroniques d'utilisateurs qui ont choisi d'être informés lors de leur lancement.
Je ne voulais pas vraiment opter pour une solution cloud pour le moment. Devrais-je simplement obtenir un serveur dédié de spécification raisonnable et partir de là, ou devrais-je rechercher des services comme Amazon EC2? Ou devrais-je commencer avec EC2 pour les ressources totalement flexibles, puis une fois que les choses se stabiliseront, je serai capable de trier un contrat d'hébergement fixe qui soit adéquat ailleurs?
Sous-question: Quel est le bon moyen d’estimer la charge d’une application donnée sur le serveur par utilisateur?
De manière générale, selon mon expérience, tout le monde a tendance à surestimer la quantité de ressources qu'un site Web consomme.
Comme toujours, c'est un gain d'argent/de capacité. À moins que vous n'attendiez une utilisation mensuelle de la bande passante de 30/40 Go par Word go, je vous recommande de commencer avec un package d'hébergement partagé standard.
Le principal problème qui se pose aujourd'hui lorsque l'on héberge des sites Web n'est pas vraiment une utilisation soutenue, mais bien des pics d'activité causés par les médias sociaux et les envois postaux. Si vous pouvez garantir que chacun de ces 10 000 destinataires de courrier électronique cliquera sur votre courrier électronique, j'aurais alors un serveur dédié.
EC2 est plus flexible, mais cela coûtera plus cher qu'une solution dédiée. Son prix n’est vraiment rentable que si vous pouvez l’utiliser pour spooler automatiquement les instances montées et descendantes en fonction de votre charge. Dire que EC2 ne gère pas les pointes de charge instantanée du tout. Si vous vous attendez à ce qu'un tweeter comptant plus de 150 000 abonnés tweete un lien vers votre site (@notch), vous devez héberger sur un cluster avec mise en cache ou avoir utilisé le 'siège' pour frapper EC2 en premier avec une quantité de le trafic, donc il se bloque.
Techniquement, un système dédié est beaucoup plus facile à maintenir et à utiliser qu'avec EC2 - vous avez le contrôle total sur tout. Amazon joue un rôle important dans EC2, et ces instances peuvent faire des choses étranges que vous n'allez jamais aller au fond des choses. Préparez-vous à configurer vos instances ec2 pour qu'elles soient totalement faciles et rapides à jeter. il est préférable de disposer de systèmes automatiques qui détectent et redémarrent les instances en échec. En utilisant un équilibreur de charge, vous constaterez (principalement) que tout fonctionne.
De plus, les ressources dont vous avez besoin dépendent également du travail que votre serveur Web doit faire pour envoyer la page Web aux visiteurs. Un site HTML statique? J'ai vu des pics de trafic stupidement importants gérés facilement par un seul processeur P4, 1 Go de RAM, une machine Apache2-mpm-prefork, tout simplement parce qu'il n'y avait absolument aucun contenu dynamique. Prefork, parce qu'on ne nous avait pas dit qu'il n'y avait pas de contenu dynamique, php était activé, mais pas utilisé.
siège/ab (référence Apache) sont deux outils géniaux que vous devez utiliser pour tester les capacités de votre site. Une concurrence au-dessus de 50 est très inhabituelle à moins d'être @ notch'ed etc. Siege est l'outil le plus avancé, il peut prétendre être un visiteur du Web de manière plus complète. Il est préférable de l'exécuter simultanément à partir de plusieurs connexions Internet si vous utilisez un équilibreur de charge, avec une liste d'URL.
Assurez-vous que vous utilisez des solutions de mise en cache - si vous utilisez Wordpress, utilisez un plugin de mise en cache. Soyez prêt à entrer dans les détails techniques aussi profonds que la configuration d'un cache op-code pour php. N'ayez pas peur de demander de l'aide, et vous pourriez toujours ( être légèrement effronté ) faire appel à des experts :)
Disclaimer/source: Je suis un technicien travaillant à http://positive-internet.com
Si vous disposez d'un serveur dédié et que vous atteignez votre limite de ressources, vous ne pourrez plus configurer un serveur basé sur un nuage et migrer toutes ces données. Au moins, avec ec2, vous pouvez créer un équilibreur de charge sur un autre serveur et minimiser les temps d'arrêt.
Pour estimer le nombre de ressources qu'un utilisateur de votre application utilisera. Utilisez ces applications Linux
Scripts de terminal bmon pour surveiller l'entrée et la sortie de la bande passante, vmstat pour surveiller la mémoire
Exécutez ces scripts alors que vous êtes connecté à un seul compte utilisateur, ajoutez des données de modification comme le ferait tout nouvel utilisateur et exécutez tous les programmes ou applications créés par l'utilisateur au cours d'une journée. Vérifiez les journaux de bmon et de vmstat et vous pouvez augmenter la taille pour estimer l'utilisation. Vous pouvez même connecter ces données à Amazon Calculator pour voir quelle en serait l'utilisation.
Si votre application utilise cron pour exécuter des tâches dites quotidiennes. Vous devriez envisager d'utiliser l'API ec2 pour mettre un serveur (instance) en ligne, exécuter les tâches, puis le mettre hors ligne, de sorte que vous ne soyez pas facturé 24 heures sur 24, 7 jours sur 7, alors que vous n'aviez besoin que d'exécuter ces tâches administratives pendant quelques minutes ou heures. Cela vous fera économiser de l'argent.