J'ai récemment vécu un flot de trafic sur un Facebook application que j'ai créé (surtout pour l'intérêt de l'enseignement, non pas avec l'intention de marketing)
Inutile de dire que je n'ai pas penser à l'évolutivité quand j'ai créé l'application. Je suis maintenant dans une position où mes maigres serveur virtuel hébergé par MediaTemple n'est pas le découpage à tous, et c'est vraiment à raw I/O de la machine. Depuis que ce projet a été aussi éduquer pour moi pour l'instant, j'ai pensé que je prendrais cela comme une occasion de comprendre les Amazon EC2 plate-forme.
L'application elle-même est créé en PHP (à l'aide de Zend Framework) avec un backend MySQL. J'ai utiliser la mise en cache des applications dans la mesure du possible avec memcached. J'ai passé le week-end en jouant autour de l'EC2, de le faire tourner des cas, installer les paquets que je veux, et le montage d'un volume EBS à une instance.
Mais quelle est la prochaine étape logique qui va donner de bons résultats pour l'évolutivité? Dois-je le feu jusqu'à une instance AMI pour la base de données MySQL et un pour le service Apache? Ou dois-je simplement reproduire les instances autant de fois que j'en ai besoin et puis faire un peu de tri de l'équilibrage de la charge sur l'extrémité avant? Idéalement, j'aimerais avoir une base de données centralisée parce que je fais des statistiques globales à travers toutes les lignes de la base de données, cependant, ce n'est pas un dur exigence (il y en a probablement certains spécifiques à l'application de solutions que je pouvais venir pour contourner ce)
Je sais que ce n'est probablement pas un simple réponse, de sorte que les opinions et les suggestions sont les bienvenues.