web-dev-qa-db-fra.com

Comment puis-je déterminer s'il est rentable de déplacer mon site en solution de cloud?

J'ai un grand site occupé; Il fonctionne actuellement complètement sur un serveur dédié que je loue chaque mois pour ~ 700 $.

Il a trois parties que je pense que je pourrais me tailler dans une solution cloud:

  • Hébergement de fichiers multimédia (image/vidéo). Actuellement, j'ai quelque chose comme 236 Go d'images statiques, actuellement tout simplement garé sur mon serveur. Si je me suis déplacé dans le nuage, je vais probablement combiner avec un CDN (pour minimiser le coût du transfert de données hors du service de cloud pour chaque demande d'image).

  • Base de données. Exécutant actuellement MySQL avec environ 3 Go de données sur mon serveur.

  • Serveur Web. Le même serveur exécute Nginx Servir des fichiers statiques et PHP.

Je n'ai aucune question de production maintenant, mais je m'attends à ce que mon site soit double dans la charge de trafic/serveur l'année prochaine. Donc, je veux penser à l'évolutivité maintenant.

Ma question est la suivante: comment puis-je comprendre s'il serait rentable de déplacer tout/tous d'entre eux sur une plate-forme cloud, au lieu de les garder sur mon serveur actuel?

(Je connais déjà certains des autres facteurs en place: il serait plus facile de faire des sauvegardes avec nuage, je n'aurais pas un point d'échec comme je le fais maintenant avec mon serveur unique, etc. Mais je n'ai aucun sentiment de combien plus/moins il coûterait de sculpter l'un de ces services. Comment puis-je calculer ça?)


Edit - Merci à tous pour ces réponses et commentaires étonnants. Quelques personnes ont demandé plus d'informations pour que je sois résumée tout en ci-dessous et que vous ajoutez un peu plus de données:

Transfert de données ("bande passante") utilisée - Le site envoie ~ 17 TB Données sortantes par mois (!) Et je prévois de doubler cette figure l'année prochaine (! !). Presque toutes ces sorties sont des médias statiques (photos et clips vidéo), donc peut-être qu'un CDN serait une bonne idée, non seulement pour une meilleure découvertable, mais également pour déplacer le fardeau de la transmission de toutes ces données sur le réseau CDN, de sorte que la Media Storage Server n'a pas autant de transfert de données directement. --Edit: il semble que les CDN ne soient chers pour ce transfert de données. Donc, peut-être que le support statique reste sur un serveur simple qui me donne une bonne bandwidth Cap (Bonjour Ovh!) Et si je peux trouver un moyen rentable de mettre un CDN devant elle, formidable.

trafic non spiky - Mon trafic est assez stable; Mon objectif avec le passage à une solution plus basée sur le nuage consiste à pouvoir facilement augmenter. C'est à dire. Ma configuration actuelle a tout sur un disque dur et le lecteur est de 60% complet; Cette infrastructure ne pouvait littéralement pas traiter avec le double de la quantité de données (et je ne suis pas sûr qu'il aurait suffisamment de puissance de calcul pour exécuter le serveur Web et le serveur DB au double du trafic, soit).

Média statique - Comme je l'ai mentionné ci-dessus, j'ai environ 236 Go de média statique, surtout toutes les images et les clips vidéo. Cela ressemble à la pièce la plus évidente (et peut-être la plus facile?) Pour sculpter d'abord et mettre dans le nuage.

Base de données - tandis que la base de données fonctionne bien maintenant, je vais avoir des questions plus complexes bientôt et comme l'idée de quelque chose d'un peu plus puissant là-bas. Donc, alors que je ne pense pas que mes besoins actuels (puissance et quantité de données) dictent que je devrais déplacer le serveur DB dans le nuage, il s'agit de pouvoir augmenter.

Heures occupées - J'ai toujours à le moins 1 000 utilisateurs sur le site 24/7 des 24/7, consommateurs de manière voracement. Le serveur n'est jamais inactif.

Server actuellement dédié - i Mortpokoke plus tôt et dit que c'était Colo (impliquant que je possédais le matériel). C'était faux. J'ai un serveur dédié (appartenant à ma société d'hébergement) que je loue chaque mois. Pas une grande distinction mais je veux juste mentionner.

23
Eric

Comme @ @ Mark-Henderson commente avec 17 upvotes dit: "Si je peux être franc, presque personne ne bouge que le nuage sauve de l'argent. Les gens se déplacent à AWS/Azure/GCP pensant qu'ils vont économiser de l'argent, mais ils ont généralement été induits en erreur. Les gens Déplacez-vous au nuage pour la flexibilité, la redondance, la mise à l'échelle, le prototypage rapide et des dizaines d'autres raisons. Mais vous n'aurez probablement pas économiser d'argent. "

CDN est génial car vous pouvez retourner un commutateur et déplacer votre charge de bande passante vers un autre fournisseur. Malheureusement, CDN est généralement plus cher que vous-même. Parlons donc de savoir comment obtenir la flexibilité sans frais.

Premièrement, je sortirais juste de sous l'hébergement trop cher. Il existe des convertisseurs P2V ("physiques aux virtuels") pour aider à devenir virtualisés, alors il devient plus facile de déplacer les charges de travail au besoin. https://www.vmware.com/products/converter.html

Ensuite, oui enfonçant les choses dans des services plus petits. 90% de ce que vous devez faire est des images séparées de tout le reste. Je penserais plus en termes de statique vs dynamique que les services individuels (Apache/MySQL) et à déterminer une stratégie de mise en cache. Cela vous permet de déplacer votre consommation de ressources comme vous le souhaitez où que vous obteniez de bonnes affaires sur la bande passante et l'hébergement tout en améliorant également les performances avec le contenu plus proche des utilisateurs.

Travaillez vers trois objectifs: (1) Infrastructure centrale évolutive/sécurisée/tolérante de pannes, puis (2) des ressources distribuées "muettes" pour cache statiques/choses simples (images) à proximité des utilisateurs (peut-être 1 serveur de cache en États-Unis et un autre Dans l'UE. N'importe quel besoin d'Asie?) Et ensuite (3) considérer si vous souhaitez obtenir plus intelligemment la mise en cache/distribution PHP et DB Données près de l'utilisateur.

Je serais enclin à conserver la mise en cache d'image contenue dans une seule goutte morte "Garder la solution simple" (# 2), puis tout le reste sous # 3.

# 1 est d'abord protéger le noya ..... Assurez-vous simplement que votre fonctionnalité du site corporel est aussi résistante aux échecs matériels, aux problèmes de réseau, aux actes de Dieu, quel que soit possible. C'est ce que j'aime sur VMware. Il est tellement pris en charge sans y penser (répartition de la mise en miroir des données, de basculement au matériel alternatif ni même un autre centre de données, etc.) Mais je recommande une sorte de solution virtualisée/conteneurore afin que vous puissiez vous soucier de votre infrastructure physique comme plus d'une marchandise, et beaucoup plus distinctement de votre code. Virtualisé ou non, vous devez vous assurer que vos données sont protégées, régulièrement sauvegardées, etc. et que vous avez la redondance et l'échec des capacités en place que vous avez besoin/que vous souhaitez. Pensez à plusieurs centres de données et à plusieurs fournisseurs. Azure, EC2 pourrait également être en attente pour le basculement ...... Un instance minuscule pouvant accéder quelle que soit la quantité d'échec sur les ressources dont vous avez besoin à la volée. (AWS etc. peut avoir des avantages des coûts rapides à la mise à l'échelle et à la mise en veille mineure, mais peut nécessiter davantage de travail que d'ajouter plus de métal nu dans votre choix de plate-forme de virtualisation/conteneur.)

n ° 2 "Dumb" Caching auto-hébergé/proxy inverse pour pouvoir déplacer votre contenu autour de l'endroit où la bande passante est bon marché. * Vous n'avez pas besoin de beaucoup de tolérance à l'échec aussi longtemps que vous avez un moyen d'activer/désactiver des caches individuelles. Aucune préoccupation concernant la perte de données, car toutes ces données sont protégées ci-dessus dans le cadre du n ° 1. La seule chose qui compte vraiment est la rapidité avec laquelle vous pouvez couper/basculer/ajouter/supprimer un cache de votre site (même pour désactiver la mise en cache de sorte que certains utilisateurs/tous/concernés ont frappé le site principal/les images principales). Bien sûr, une cache est auto-remplissante pour que vous n'ayez même pas à vous soucier de cela. Et taille-auto afin que vous puissiez garder les coûts de stockage minimes, fixes (et rapides! Mettez le cache sur SSD)

# 3 Distribution de mise en cache et de contenu plus intelligent - MOVE PHP et d'autres codes plus proches de l'utilisateur, mais pour tout ce que DB liait, vous devez également avoir la DB ou mis en cache. Il s'agit simplement d'un ballon différent de tout le cache n ° 2 Dumb n ° 2, alors je penserais à ce sujet séparément et assurez-vous que votre cache stupide ne peut pas casser la cache intelligente et vice versa. Votre architecture actuelle utilise-t-elle l'API d'extrapoler l'utilisateur dynamique Données loin de votre PHP?

Il existe un groupe d'options de mise en cache open source ou de façons que vous pouvez même coder un simple cache vous-même ... Pour les images, il suffit de les récupérer si elles ne sont pas présentes, puis nettoyez les anciens fichiers de manière régulière. Voici un produit Apache pour plus sophistiqué "Rouler votre propre" CDN .... https://trafficcontrol.apache.org/

La seule astuce avec aucun d'entre eux est la manière dont vous allez activer/désactiver et attribuer de manière dynamique les utilisateurs à un cache. Un moyen simple et brut de le faire serait sur l'emplacement/préférences indiqués par l'utilisateur et juste des images point à l'UE.Images.mysite.com vs US ou ASIA, etc. Si un cache est en panne, alors simplement modifier de manière dynamique des liens pour cet utilisateur dans votre PHP===== Je pense qu'il y a des solutions DNS, mais il suffit de faire preuve de prudence avec une durée de coupe si un cache doit descendre ... NE VOULEZ PAS avoir la mise en cache IP dans un utilisateur Cache DNS locale. Une manière ou une autre, il ne devrait pas être difficile de comprendre un continent d'utilisateurs si c'est le seul niveau de granularité que vous aimez.

Il y a tellement d'avantages à la mise en cache de contenu distribué, peut-être même une protection DDO (peut-être même sur des domaines distincts). On dirait un ajustement naturel.

1
CA_Tallguy