Du point de vue des développeurs, quelle plate-forme envisageriez-vous pour une application Web sociale de grande taille? Si vous pouviez fournir quelques détails sur ce que vous considérez être les points forts de quelle alternative ce serait formidable.
159
Réponses:
J'ai écrit la même application sur GAE (Python et maintenant Java) et Azure. Je vais probablement continuer à utiliser les deux, pour différentes choses. Voici quelques réflexions que je vais continuer à mettre à jour:
Raisons d'utiliser GAE:
Raisons d'utiliser Azure:
Donc, pas de réponses évidentes. Je suis en train de passer par défaut à App Engine pour des raisons de coûts et de facilité d'utilisation. Je pourrais utiliser Azure pour des applications très orientées MS. J'utilise Amazon S3 pour les téléchargements, mais n'utilisera probablement pas EC2, car je préfère laisser tout le contenu sous le niveau de l'application aux experts.
la source
Je suis clairement partial - je travaille au sein de l'équipe App Engine pour établir des relations avec les développeurs - mais voici ce que je pense:
Ils ne sont pas directement comparables. Il existe un ensemble d'applications que vous pouvez écrire pour n'importe laquelle d'entre elles, mais vous écrirez une chose différente dans chaque cas. App Engine fournit un environnement d'exécution restreint - pas d'écriture dans les fichiers, pas de sockets, etc. - et un SGBD non relationnel. Mais en retour, vous obtenez un environnement d’exécution qui évolue indéfiniment et un degré de certitude raisonnable que votre application sera redimensionnée à la taille souhaitée.
Azure, en revanche, fournit un environnement légèrement moins contraint, ce qui vous permet d’écrire un plus grand nombre d’applications, mais vous oblige à en écrire plus - car vous implémentez plus de la pile vous-même - et fournit une assurance beaucoup plus souple de l’évolutivité. .
Enfin, AWS fournit la solution ultime de bricolage. Ils fournissent le matériel, le stockage et pas grand chose d'autre. Vous construisez votre pile à partir de la base, vous la maintenez, vous la mettez à niveau, etc. Votre application est mise à l'échelle si et seulement si vous l'écrivez à l'échelle, ce qui n'est pas un mince défi. Mais vous obtenez un contrôle total sur votre matériel.
Mon conseil serait le suivant: si votre application correspond au modèle App Engine - et qu'une application de réseau social en est probablement un très bon exemple - écrivez votre application sur App Engine (Java ou Python, votre choix). C'est moins cher, et il est beaucoup plus facile d'écrire une application qui évolue.
Si votre application ne correspond pas au modèle GAE, choisissez Azure ou AWS, selon que vous écrivez pour la pile MS et le degré de contrôle que vous souhaitez avoir sur l'environnement d'exécution. Si la plupart de vos applications sont compatibles avec GAE, mais pas avec les petites pièces, vous pouvez envisager un système hybride - par exemple, la diffusion en direct sur GAE, mais le stockage sur S3 ou le traitement en bloc sur EC2.
la source
Pour moi, le verrouillage est le facteur décisif.
Si vous choisissez Google, votre application ne fonctionnera que sur Google. Si vous vous trouvez moins satisfait après un certain temps, vous êtes bloqué.
Si vous choisissez pour MS, votre application ne fonctionnera que sur Azure. Même chose.
Sur Amazon, vous obtenez un ou plusieurs serveurs virtuels qui fonctionnent exactement comme les machines auxquelles vous êtes habitué. Pas satisfait? Ramassez votre application, installez-la sur du matériel réel, c'est fait.
la source
Mon choix personnel en ce moment serait Google avec Java (même si je suis .NET la plupart du temps). Pensez aux coûts - leur schéma est difficile à comparer.
Consultez cet article - http://www.infoq.com/news/2008/11/Comparing-EC2-App-Engine-Azure
la source
Comme Arachnid, je peux être partial, étant un googleur. Cependant, je suis aussi un actionnaire d'Amazon, de sorte que ce biais peut compenser en partie le premier ;-). Aucune expérience Azure (bien que je détienne également des actions MSFT, j'espère qu'elles s'en tirent bien - un autre parti pris ;-).
Mon point de vue très simple, c’est que App Engine vous offre facilement la possibilité de travailler (dans les limites de ses limites) simplement en codant : aucune tâche d’administration système n’est nécessaire. AWS est beaucoup plus flexible, mais vous aurez besoin d'un travail considérable en matière d'administration système (et pas vraiment trivial du tout) pour tirer parti de cette flexibilité. Donc, au bout du compte, je souscris à la suggestion d'Arachnid: si App Engine peut répondre à vos besoins, allez-y absolument; Si vous avez besoin de plus de flexibilité, AWS semble être la voie à suivre (à moins que les capacités inconnues d'Azure ne soient plus compatibles, mais je pense qu'AWS sera plus flexible, peu importe ce qu'Azure peut faire, par exemple avec AWS. peut même choisir quel OS utiliser, si vous en avez besoin).
la source
Je viens de commencer à travailler avec Azure et je suis déjà convaincu que vous pouvez le faire en F #: http://code.msdn.microsoft.com/fsharpazure.! Jusqu'à présent, c'est la seule plate-forme cloud permettant d'utiliser la programmation fonctionnelle de manière gérée (bien sûr, vous pouvez utiliser Haskell dans EC2 ... ou Algol 68 d'ailleurs). Je suis très impressionné par la qualité de l'intégration de Visual Studio: vous obtenez un «nuage» local à tester, DevFabric, avec un stockage qui est un vrai serveur SQL Server, ce qui vous permet de jouer avant le téléchargement. Est-ce que GAE peut faire ça? En ce qui concerne Azure et l’apprentissage de VS avec F # (provenant de Linux et d’OCaml), j’aurais bien aimé passer à MS stack depuis longtemps. Il est très facile de créer un stockage SQL et de l'inspecter dans un système virtuel - est très pratique. L’Open Source n’a pas d’ensemble d’outils correspondant et il est temps que les gens accordent à la SEP une juste considération - ils ont fait un travail formidable ici. Je m'en tiens sûrement à ma base Mac OSX (double démarrage sous Vista), et mon intuition est grâce à la possibilité de développer localement Azure, je recevrai une boîte Vista distincte pour le développement Azure. .NET est vraiment bouleversant quand on vient du monde des pipes Unix - PowerShell, SQL et LINQ, C # et F # (ce qui est ma raison principale) - mais il s’avère que tout s’ajoute et vaut la peine d’être appris en plus, pas à la place. de, Linux; et dans tous les cas, Azure élargira vos horizons.
la source
Même si j'aime GAE, l'une des principales raisons pour lesquelles j'utilise EC2 over GAE pour mon projet actuel est que je dois pouvoir faire desservir l'avant de mon application à partir de centres de données situés dans différentes parties du monde. GAE s'exécute dans un centre de données à la fois. Par exemple, j'ai besoin que les utilisateurs asiatiques accèdent aux serveurs asiatiques pour obtenir les temps de réponse les plus rapides possibles pour mon application. Ajoutez à cela la capacité de gérer les DNS, les équilibreurs de charge, la base de données de choix, le transfert de canal vers S3 pour le traitement hadoop des données, etc., et EC2 devient une solution vraiment convaincante.
la source
Quelques points à considérer:
Se mettre au diapason: avec quelle rapidité pouvez-vous être productif avec l'environnement choisi, quel type de documentation existe et sont-ils des exemples clairs et bien accompagnés, apparents et utiles?
Coût: le coût est un facteur, mais si vous créez une application commerciale qui aura réellement des clients, tous ces choix sont viables. Si vous supposez qu'Azure, avec un proc sur une "petite" instance, coûte environ 90 dollars par mois pour une utilisation 24x7 ... combien d'utilisateurs pouvez-vous desservir pendant cette période? Ajoutez une seconde instance pour la redondance ... toujours pas si coûteux si votre trafic le justifie. Si ce n'est pas le cas, pourquoi êtes-vous dans le cloud plutôt que chez un fournisseur hébergé bon marché? Des facteurs de coûts plus importants interviennent dans votre temps pour mettre cela en œuvre. AWS est une solution personnalisée. C’est beaucoup pour gérer une solution stable et bien gérée. Azure et GAE ont tout cela en main. Dans mon esprit, AWS est le plus cher en raison du travail que vous devez y mettre. Avez-vous vraiment besoin de contrôler cela à un niveau de granularité aussi fin? Si c'est le cas,
Capacité à faire ce que vous voulez: AWS jusqu'au bout. Azure est deuxième, GAE est troisième. Pas grave si ce que vous voulez, c'est Java et Python. Biggie si vous souhaitez effectuer une base de données relationnelle ou un traitement de données étendu multithread en C ++ (vous ne savez pas si l’un d’entre eux le fait maintenant?).
Qu'en est-il de la portabilité? Pouvez-vous le rapporter à votre propre ferme plus tard ou le transférer vers une autre ferme cloud? Ils sont tous portables dans une certaine mesure.
Beaucoup de choses à penser ... j'apprends toujours à ce sujet moi-même.
la source
Si vous devez démarrer des instances manuellement pour répondre à la demande, il ne s'agit pas d'un nuage.
Azure et EC2 ne sont que des serveurs virtuels avec certains services de côté.
Mise à jour:
EC2 et Azure vous offrent des options pour gérer le démarrage de nouvelles instances automatiquement sous charge, mais vous devez le gérer. Et vous payez pour les instances qui sont actives et inactives.
GAE gère automatiquement cette opération et ne vous facture que le temps pendant lequel votre code est exécuté pendant les demandes.
la source
Voici quelques autres considérations.
GAE - Plus haut sur la plate-forme en tant que pile de services puis AWS et Azure, tout le trafic est acheminé via leur DNS ghs.google.com, le chargement dynamique desservant votre page via l'une de leurs machines, ce qui leur permet de maintenir les prix bas. la mise à l’échelle est affinée avec cette approche, Cons n’est pas une adresse IP statique, susceptible d’être filtrée ou bloquée. En raison de la limitation non statique de l'adresse IP, vous ne pourrez configurer aucun certificat https spécifique à un site.
AWS et Azure vous fournissent en gros une adresse IP statique et une machine virtuelle dédiée, permettant de répondre à des exigences de base telles qu'un certificat https. vous obtiendrez également un support de stockage relationnel. Le coût est également plus élevé pour refléter ce fait de machine virtuelle dédiée, et vous évoluerez par machine virtuelle, donc par tranches de 40 dollars / mois. L’avantage est que, puisque vous avez une machine virtuelle à vous-même, vous n'êtes pas contraint à la limite de 30 secondes de traitement du processeur sur GAE et vous pouvez exécuter des tâches plus importantes.
Donc, si vous envisagez des bases de clients dans des pays filtrés, ou si vous voulez une adresse IP statique pour effectuer votre propre configuration DNS, ou avez des exigences qui nécessitent une base de données relationnelle ou des tâches de plus de 30 secondes. AWS, Azure serait beaucoup plus convivial.
la source
Examinez les solutions proposées par chaque cloud et optez pour le modèle hybride. Certains problèmes nécessitent un marteau et d'autres un tournevis. Apprenez à connaître vos outils et appliquez-les au bon problème.
la source
Je n'ai pas assez de réputation pour laisser un commentaire pour l'une des réponses ci-dessus. La pertinence de l’une de ces solutions cloud dépend de nombreux facteurs, notamment de vos besoins et de vos compétences.
J'ai un projet de réseau social qui nécessite une base de données nosql. AppEngine serait une bonne solution s'il supportait mieux les différents cadres. Django avec un adaptateur non lié fonctionne sur Python GAE, mais je préfère Rails pour de nombreuses raisons. Rails3 est sorti depuis quelques mois et personne dans la communauté ou dans l'équipe de GAE n'a encore écrit de recette pour l'appuyer. À moins que vous ne possédiez les compétences requises - connaître le ruby et les rails du train, le jruby et le GAE - pour écrire votre propre recette, vous êtes à la merci d'autres personnes, rien que pour aller sur la plateforme.
AWS demande beaucoup plus de travail, mais au moins, vous pouvez utiliser la plate-forme avec n'importe quel outil et gérer de nombreux problèmes de manière administrative plutôt que comme développeur interne ou demandeur de pouvoirs supérieurs.
Ce que je reproche à Heroku et EngineYard, aux développeurs Ruby, est de savoir comment les bases de données évoluent. Comment évoluent-ils?
Dans mon cas, j'opte pour une solution NoSQL et Mongo semble être un bon choix. MongoMachine semble être la solution recommandée pour les utilisateurs tels que Heroku ou EY, mais coûte cher. 2,50 USD / Go de stockage? Le stockage coûte seulement 0,10 USD / mois sur GAE ou EBS.
la source
J'ai récemment commencé à expérimenter avec Google App Engine et, pour un réseau social Web, je pense qu'il répondrait à tous vos besoins. Il est facile à comprendre et peut être utilisé avec Python ou Java. Il est vrai que cela ne vous donne pas accès aux fichiers, mais pour votre application, GQL (l'interface de type SQL avec la base de données fournie) sera probablement plus que suffisant (et il est assez robuste).
Une chose à considérer est qu'une application sur GAE peut utiliser une interface permettant aux utilisateurs disposant d'un compte Google ou d'un compte sur un domaine utilisant la connexion à Google Apps (raccourci). Vous choisissez l'un ou l'autre. Ainsi, si vous utilisez déjà un site Web Google Apps, Google App Engine serait un excellent choix pour vous, car vos utilisateurs n'auraient pas à enregistrer de nouveaux comptes.
EDIT: Comme Arachnid l’a souligné, ce n’est pas que vous ne pouvez pas coder votre propre système de connexion. Désolé, si je vous ai inquiété là-bas.
En ce qui concerne les deux autres alternatives, j'ai seulement lu à leur sujet et je ne les ai pas testées. Mais je crois que GAE fournit un cadre plus simple, à partir de mes recherches, et que vous avez mentionné des prix avantageux.
Dans tous les cas, vous pouvez essayer GAE en utilisant le quota gratuit d'espace et de bande passante, et voir si cela répond à vos besoins.
Bonne chance.
la source
Azure a Windows / SQL en tant que serveur "Plate-forme en tant que service", et vous n'êtes certainement pas bloqué. Il vous suffit de revenir à Windows / SQL dans votre propre centre de données (pas de Linux, mais oui, ils supportent Java, Python, PHP, Ruby, Tomcat , Apache, etc.). Comme Amazon, ils fourniront également l’option de machine virtuelle entièrement accessible, de sorte que vous pourrez installer / exécuter tout ce que vous voulez.
Amazon a uniquement une machine virtuelle, vous devez donc toujours installer, corriger, obtenir une licence, sécuriser, etc. Vous venez de déplacer quelque chose de votre centre de données à un autre.
Google n'a pas de base de données relationnelle et vous seriez STUCK. Ils ne s'adressent vraiment qu'aux développeurs Python et à un support limité pour Java. De mon point de vue, ils ne jouent vraiment pas dans le cloud.
la source
Une chose qui n’a pas été mentionnée ici, c’est ce que tout le monde considère du "bus de service et du service de maintenance AppFabric Windows Azure" en plus du nom horrible ...?
Cela semble être une pile très puissante de fonctionnalités d'intégration qui rendraient Azure attrayant du point de vue de toute entreprise investissant dans une infrastructure sur site.
la source
Après avoir expérimenté Amazon EC2 pendant un certain temps et rencontré quelques retards, j'ai commencé à rechercher Google Apps tout en expérimentant en raison de son coût. Je préférerais utiliser Erlang comme langage de développement, mais je peux gérer Python, ce qui n'a donc pas été un facteur déterminant. Quand j'ai vu aucune adresse IP statique, c'était. De plus, le fait qu'il soit plus haut sur la pile me rend un peu nerveuse en ce qui concerne les performances.
J'aimerais que AWS soit moins cher, mais jusqu'à ce que Google fournisse des adresses IP statiques et, de préférence, des langues supplémentaires telles que Scala, JRuby et Erlang, le choix est clair pour moi: AWS . Les deux premières langues doivent également être simples, elles sont toutes deux basées sur la JVM. Peut-être même déjà fait par le biais de solutions de rechange, car je me souviens avoir lu quelque chose à ce sujet.
la source
Les gars, je pense qu'en dehors de simplement penser à la plate-forme sur laquelle la comparaison devrait être supportée sur l'évolutivité, la facilité d'accès, la polyvalence (en termes de mise en œuvre), peut accueillir différentes plates-formes d'hébergement, tout aussi économiquement viables pour l'analyse de rentabilisation, propose de multiples solutions pour les entreprises. applications (stockage, livraison, bande passante, politique de licence, etc.), crédibilité record de la qualité de service, audit vérifié, transparence de la facturation ainsi que des coûts, etc. Si vous regardez tous les indicateurs ci-dessus, AWS se situe bien au-dessus . Je gère 10 comptes de production sur AWS depuis 2 ans et, en même temps, la société / unité commerciale a été en mesure de satisfaire les demandes énormes d’évolutivité des clients. Il ne fait aucun doute qu’AWS doit entretenir l’infrastructure, les mises à jour (le cas échéant). requis), sécurité etc. Mais vous avez tous les outils disponibles sur le marché / net librement. Les ressources informatiques existantes peuvent également gérer toute l'infrastructure sur AWS.
Azure est bien sûr doté d'un environnement de développement intégré intégré à VS 2010, mais le chiffrage réel de tout nuage commence après le déploiement réussi de l'application (plate-forme de déploiement). Il reste encore beaucoup à faire pour traiter des scénarios de déploiement en temps réel et de production évolutive ... Comme tout le monde le sait, MS joue de nombreux problèmes cachés concernant les coûts. Il est très difficile de déterminer les coûts engagés ou à supporter (lors de l'envoi estimations).
GAE est très spécifique pour les applications Python / Java. Un effort énorme (à la fois en termes de ressources et de coûts) pour que l'application soit réécrite (existante), testée, déployée, etc.
la source