Hello,
On 21/01/2014 12:38, Alexandre wrote:
Quelles sont les possibilités pour absorber les montées en charge ponctuelles d'une infrastructure web ?
Actuellement, nous migrons une partie de l'infra web qui était principalement composée de serveurs apache + php5 + apc vers des serveurs lighttpd + php5-cgi + memcache. Cette migration partielle nous a permis de maitriser la charge des machines. Cependant, lors d'un évènement ponctuel, le trafic est si important que notre infrastructure est au maximum de sa puissance de calcul même après y avoir placé des revers proxy sous varnish. Le service est rendu mais lent. Nous avons la possibilité de désactiver des fonctionnalités à la volée pour soulager le traitement, mais cela reste une façon de contourner le problème. Nous avions pensé à "muscler" notre infra en y ajoutant plus de machines. Au-delà du prix, je me demande l'intérêt d'avoir une puissance de calcul aussi élevée pour 3 semaines max d'utilisation. J'ai donc pensé à des machines (type cloud) qui seraient préparées en amont et qui pourraient être activées sur demande (via une api ?) avec une facturation à l'utilisation.
D'expérience, le problème est souvent lié à des lacunes au niveau de la capacité de l'applicatif à tirer pleinement partie des caches. Typiquement, un varnish en front d'un applicatif qui n'a pas été prévu pour n'apportera (quasiment) rien.
Il est par ailleurs important de bien identifier les bottlenecks. Le pire cas que j'ai vu : une homepage s'écroulant à 30 req/s supportait finalement plus de 4000 simplement en virant le cookie (inutile) qui rendait le cache inopérant. La solution consistant à multiplier les fronts n'étaient clairement pas la bonne ! ;)
Ce service doit surement exister chez amazon, gandi, ovh ... L'avez-vous déjà utilisé ? En êtes-vous satisfait ? Quelles sont les limites de ce service ? Avez-vous d'autres solutions qui seraient plus adaptées ?
Sinon, le cloud ... quand il s'agit de régler un problème de perfs, bof bof. À moins bien sûr que l'applicatif est été développé en tenant compte des spécificités de ce genre de platformes.
S'il faut vraiment ajouter de la CPU à certains moment _prévisibles_ (saisonniers), j'ai tendance à préférer louer des machines pour l'occasion. Avec un coup de puppet/chef/whatever pour déployer la stack. Et "poubelle" une fois que l'opération est terminée.