Devrais-je choisir le cloud ?

Je suis sur le point de commencer le développement d’un projet avec des spécifications de charge/trafic très incertaines. Au moment de la sortie, il y aura certainement une charge très faible qui pourra facilement être gérée par une seule machine de bureau à quatre coeurs.

Le problème est qu’il y aura (après une période sur invitation uniquement) une forte publicité pour le produit, donc je m’attends à des pics de trafic/charge considérables.

Je n’ai pas assez lu sur les fournisseurs cloud et je penche principalement vers Amazon ou Azure pour la crédibilité que ces deux entreprises ont, sans les examiner comme je le devrais avec d’autres (par ex. Rackspace que je suppose être également un fournisseur de services cloud).

Ce que je veux

Je voudrais créer une application web ASP.NET MVC normale qui puisse tourner sur un serveur mono-machine interne à faible coût. Elle ferait tourner le serveur web avec la base de données (relationnelle et peut-être aussi documentaire) et la recherche plein texte (pas le FTS SQL mais plutôt un produit séparé haute vitesse comme Lucene ou Sphinx). Mais après la période initiale sur invitation, j’aimerais migrer cette application vers le cloud pour la rendre plus adaptable aux demandes de trafic/charge.

Autant que je sache, Amazon offre une sorte d’hébergement de machine virtuelle que vous configurez comme un serveur normal mais avec des ressources potentiellement flexibles en termes de puissance de charge. Je ne suis pas sûr que cela puisse être accompli sur Azure également.

  • Quelle est votre expérience avec la transition d’applications vers le cloud et lequel avez-vous choisi et pourquoi ?

  • Que recommanderiez-vous de prendre en compte lors de la conception/développement de la solution pour rendre la transition aussi indolore que possible ?

  • D’après votre expérience, est-il préférable de migrer vers le cloud (financièrement) ou est-il préférable d’acheter vos propres serveurs et de gérer vous-même l’équilibrage de charge et peut-être économiser de l’argent à long terme ?

“Cloud” est un terme très vague. Cela dit, je pense que c’est une très bonne question.

Fondamentalement, l’hébergement cloud IaaS ne rend pas magiquement votre application scalable. C’est en réalité un serveur privé virtuel avec des périodes de contrat/résiliation très courtes.

Pour la scalabilité, la magie ne réside pas tant dans l’hébergement, mais dans la scalabilité horizontale du code applicatif lui-même. Cela est lié à tous les défis du calcul distribué. Par exemple, ajouter plus de serveurs applicatifs n’est pas toujours facile : vous devez vous assurer de ne pas persister d’état utilisateur dans l’application serveur (mais plutôt dans une base de données, static peut être néfaste), le cache peut être problématique car les caches locaux peuvent aggraver la situation si vous utilisez une stratégie round-robin, etc.

  • Quelle est votre expérience avec la transition d’applications vers le cloud et lequel avez-vous choisi et pourquoi ?

  • Que recommanderiez-vous de prendre en compte lors de la conception/développement de la solution pour rendre la transition aussi indolore que possible ?

Vous n’avez pas vraiment besoin de faire quoi que ce soit de différent juste pour héberger sur EC2 ou Azure – fondamentalement. Mais bien sûr, ce n’est pas si simple quand les choses grandissent.

Par exemple, le stockage d’instance EC2 est plutôt limité. Le stockage supplémentaire sur EBS, cependant, n’offre pas des caractéristiques de performance comparables et peut être un peu plus lent qu’un disque. Le point ici est qu’EBS se met magiquement à l’échelle, et c’est probablement plus PaaS qu’IaaS ; mais ce n’est pas un simple disque dur et il ne se comporte donc pas comme un disque dur. Je ne connais pas le stockage bloc d’Azure. En général, attendez-vous à ce que les couches d’abstraction supplémentaires introduisent leurs propres problèmes, quoi qu’elles fassent.

  • D’après votre expérience, est-il préférable de migrer vers le cloud (financièrement) ou est-il préférable d’acheter vos propres serveurs et de gérer vous-même l’équilibrage de charge et peut-être économiser de l’argent à long terme ?

Les fournisseurs cloud typiques sont plus chers que les fournisseurs VPS habituels du coin de la rue, mais ils sont, d’après mon expérience, aussi beaucoup plus fiables et professionnels. EC2 a une offre gratuite (mais elle est assez limitée), Azure vous donne une petite instance gratuite pendant 3 mois.

Faire le calcul correctement est plutôt délicat ; par exemple, si vous devez arrêter votre service pour une raison quelconque, c’est agréable de pouvoir annuler maintenant plutôt que de payer une année supplémentaire - vous voudrez peut-être intégrer ce risque dans votre calcul. D’un autre côté, EC2 et Azure seront considérablement moins chers si vous vous engagez pour 6 ou 12 mois, plutôt que de payer à l’heure.

Vous pourriez vouloir consulter l’offre Azure gratuite, car c’est agréable de commencer à expérimenter sans aucun coût. Un grand avantage des fournisseurs cloud est que vous pouvez facilement monter en puissance verticalement : acheter un serveur à 16 coeurs et 64 Go de RAM est vraiment cher, mais s’il y a autant de trafic sur votre site, passer à un plan supérieur ne sera pas un gros problème.