1166 votes

Pourquoi utiliser Heroku lors de l'AWS est présent? Ce qui est à distinguer sur Heroku

Je suis un débutant RoR programmeur qui est de la planification du déploiement de mon application en utilisant Heroku. Mot de mon autre conseiller à des amis dit que Heroku est vraiment facile, bon à utiliser. Le seul problème est que je n'ai toujours aucune idée de ce que Heroku ne..

J'ai regardé leur site et en un mot, ce Heroku est d'aide avec mise à l'échelle, mais... pourquoi est-ce que la matière? Comment Heroku aider avec:

  1. La vitesse de Mes recherches implicite que le déploiement de AWS sur la Côte Est des etats unis serait la manière la plus rapide si je suis le ciblage d'un US/Asie en fonction de l'auditoire

  2. Sécurité - Comment sont-elles sécurisées?

  3. Mise à l'échelle - Comment est-elle vraiment efficace?

  4. Rapport coût-efficacité - Il y a quelque chose comme une puissance qui le rend facile à l'échelle.

  5. Comment font-ils juste à l'encontre de leurs concurrents? Par exemple, Engine Yard et bluebox?

Veuillez utiliser les laïcs termes anglais pour expliquer... je suis un programmeur débutant. Je vous remercie.

2131voto

Kristian Glass Points 12506

Tout d'abord, AWS et Heroku sont des choses différentes. AWS offre d'Infrastructure as a Service (IaaS) alors que Heroku offrir une Plate-forme en tant que Service (PaaS).

Quelle est la différence? Très approximativement, IaaS vous donne les composants dont vous avez besoin pour construire des choses sur le dessus de celui-ci; PaaS vous donne un environnement où vous venez de pousser code et d'une configuration de base et d'obtenir une application en cours d'exécution. IaaS vous donne plus de puissance et de flexibilité, le coût d'avoir à construire plus de vous-même.

Pour obtenir votre code en cours d'exécution sur AWS et en regardant un peu comme un Heroku de déploiement, vous aurez envie de certaines instances EC2 - vous aurez besoin d'un programme d'équilibrage de charge / couche de mise en cache est installé (par exemple, Vernis), vous aurez envie d'instances en cours d'exécution quelque chose comme Passager et nginx pour servir votre code, vous aurez envie de déployer et de configurer un cluster de base de données de l'instance de quelque chose comme PostgreSQL. Vous aurez besoin d'un système de déploiement avec quelque chose comme Capistrano, et quelque chose à faire du journal de l'agrégation.

Ce n'est pas une quantité insignifiante de travailler à mettre en place et à maintenir. Avec Heroku, l'effort nécessaire pour arriver à ce genre de scène est peut-être un peu de lignes de code de l'application et un git push.

Si vous êtes ici, et vous souhaitez mettre à l'échelle. Grand. Vous êtes à l'aide de Marionnettes pour votre EC2 déploiement, à droite? Alors maintenant, vous configurez votre Capistrano fichiers à tourner vers le haut/vers le bas les instances nécessaires; vous re-jig votre Marionnette config que le Vernis est conscient de web-travailleur instances et sera automatiquement piscine entre eux. Ou vous heroku scale web:+5.

J'espère que ça vous donne une idée de la comparaison entre les deux. Maintenant pour répondre à vos points précis:

Vitesse

Actuellement Heroku ne fonctionne que sur AWS instances en us-east et eu-west. Pour vous, cela ressemble à ce que vous voulez de toute façon. Pour d'autres, c'est potentiellement plus de considération.

Sécurité

J'ai vu beaucoup de l'intérieur entretenu des serveurs de production qui sont en retard sur les mises à jour de sécurité, ou, en général, mal ficelé. Avec Heroku, vous avez quelqu'un d'autre à gérer ce genre de chose, ce qui est une bénédiction ou une malédiction, selon la façon dont vous le regardez!

Lorsque vous déployez, vous êtes effectivement de remettre votre code directement sur Heroku. Cela peut être un problème pour vous. Leur article sur la Puissance de l'Isolement des détails de leur isolement technologies (il semble que plusieurs des dynamomètres sont exécutés sur les différents instances EC2). Plusieurs collègues ont exprimé des problèmes avec ces technologies et de la force de leur isolement; je suis hélas pas en mesure de suffisamment de connaissances / expérience pour vraiment me prononcer, mais je Heroku déploiements de considérer que "assez bon". Il peut être un problème pour vous, je ne sais pas.

Mise à l'échelle

J'ai touché sur ce que l'on pourrait le mettre en place dans mon IaaS vs PaaS comparaison ci-dessus. En gros, votre application a un Procfile, ce qui a des lignes de la forme dyno_type: command_to_run, par exemple (chipé par http://devcenter.heroku.com/articles/process-model):

web:    bundle exec rails server
worker: bundle exec rake jobs:work

Ce, avec un:

heroku scale web:2 worker:10

vous permettra de disposer de 2 web des dynamomètres et de 10 worker des dynamomètres en cours d'exécution. Sympa, simple, facile. Notez que web est un spécial dyno type, qui a accès au monde extérieur, et est à l'origine de leur belle le trafic web multiplexeur (probablement une sorte de Vernis / nginx combinaison) qui permettra d'acheminer le trafic en conséquence. Vos travailleurs probablement interagir avec un message de la file d'attente pour le trajet similaire, à partir de laquelle ils vont obtenir l'emplacement via une URL dans l'environnement.

Rapport Coût-Efficacité

Beaucoup de gens ont beaucoup d'opinions différentes à ce sujet. Actuellement, il est de 0,05 $/h pour une puissance de l'heure, par rapport à 0,025 $/h pour une AWS instance micro $ou 0,09 $ /h pour une AWS petit exemple.

Heroku est dyno documentation dit que vous avez au sujet de 512 mo de RAM, donc c'est probablement pas trop déraisonnable d'envisager un banc comme un peu comme un micro instance EC2. Est-il en vaut le double du prix? Quelle valeur accordez-vous votre temps? La quantité de temps et les efforts nécessaires pour construire au-dessus d'une offre IaaS pour l'obtenir à cette norme est certainement pas bon marché. Je ne peux pas vraiment répondre à cette question pour vous, mais ne sous-estimez pas les "coûts cachés" de l'installation et de la maintenance.

(Un peu d'un côté, mais si je me connecte à un dyno à partir d'ici (heroku run bash), un examen rapide montre 4 carottes en /proc/cpuinfo et 36 GO de RAM, ce qui m'amène à croire que je suis sur un "High-Mémoire Double Instance Extra-Large". Le Heroku dyno documentation dit chaque dyno reçoit 512 mo de RAM, donc je suis potentiellement partage avec jusqu'à 71 autres dynamomètres. (Je n'ai pas assez de données sur la homogeny de Heroku AWS cas, si votre kilométrage peut varier))

Comment font-ils pour se démarquer de leurs concurrents?

Cela, je crains que je ne peux pas vraiment vous aider. Le seul concurrent que j'ai jamais vraiment regardé a Google App Engine - à l'époque, j'étais à la recherche pour déployer des applications Java, et le montant de restrictions sur utilisable des cadres et des technologies a été incroyablement rebutant. C'est plus que "juste un Java chose" - le montant de restrictions générales et les considérations nécessaires (la FAQ conseils à plusieurs) semblait moins de pratique. En revanche, le déploiement de Heroku a été un rêve.

Conclusion

J'espère que cela répond à vos questions (veuillez commenter si il y a des lacunes / d'autres zones que vous souhaitez traiter). Je pense que je devrais offrir à ma position personnelle. J'aime Heroku pour "quick déploiements". Quand je suis en démarrage d'une application, et je veux un bon marché d'hébergement (le Heroku niveau gratuit est génial, essentiellement si vous avez seulement besoin d'un web de dyno et 5 MO de PostgreSQL, il est libre d'héberger une application), Heroku est de ma position. Pour les "Serious Déploiement de Production" avec plusieurs clients payants, avec un niveau de service-contrat, avec le temps consacré à dépenser sur ops, et cetera, je n'arrive pas à me décharger que beaucoup de contrôle de Heroku, puis AWS ou de nos propres serveurs ont été la plate-forme d'hébergement de choix.

En fin de compte, c'est à propos de ce qui fonctionne le mieux pour vous. Vous dites que vous êtes "un programmeur débutant" - c'est peut-être que l'utilisation Heroku vous permet de vous concentrer sur l'écriture de Ruby, et ne pas avoir à passer du temps à l'obtention de toutes les autres infrastructures autour de votre code de construire. Je serais certainement essayer.


Remarque, AWS n'ont en réalité une offre PaaS, Elastic Beanstalk, qui prend en charge Ruby, Node.js, PHP, Python, .NET et Java. Je pense que généralement la plupart des gens, quand ils voient "AWS", de sauter à des choses comme EC2 et S3 et EBS, qui sont certainement des offres IaaS

75voto

Pravin Mishra Points 2544

Kristian Verre Dit, il n'y a pas de comparaison entre IaaS(aws) et PaaS(Heroku, EngineYard).

PaaS fondamentalement aide les développeurs à l'accélération du développement de l'application,afin d'économiser de l'argent et surtout d'innover leurs applications et de leurs affaires au lieu de créer des configurations et de la gestion des choses comme les serveurs et les bases de données. D'autres caractéristiques de l'achat à utiliser PaaS est le processus de déploiement d'applications telles que l'agilité, la Haute Disponibilité, de la Surveillance, de l'Échelle / Détartrer, limité besoin de l'expertise, facilité de déploiement, et la réduction des coûts et temps de développement.

Mais il y a quand même un côté sombre de PaaS qui conduisent barrière de PaaS adoption :

  • Moins de Contrôle sur le Serveur et les bases de données
  • Prix sera très élevé si pas régies correctement
  • Prématuré et douteux dans le courant de la journée et l'âge

En dehors de ci-dessus, vous devriez avoir suffisamment de compétences pour gérer vous IaaS:

  • Acquisition de matériel
  • Système D'Exploitation
  • Logiciel De Serveur
  • Environnement De Script Côté Serveur
  • Serveur Web
  • Gestion de base de données(Mysql, Redis...)
  • Configurer le serveur de production
  • Outil de test et de déploiement
  • Surveillance De L'Application
  • Haute Disponibilité
  • Charge Blancing/ Http Routage
  • Service Des Politiques De Sauvegarde
  • La Collaboration De L'Équipe
  • Reconstruire La Production

Si vous avez des petites entreprises, PaaS sera la meilleure option pour vous:

  • Payez comme vous Allez
  • De faibles coûts de démarrage
  • Quitter la plomberie à l'expert
  • PaaS poignées de mise à l'échelle automatique/détartrage, l'équilibrage de la Charge, la reprise après sinistre
  • PaaS gère toutes les exigences de sécurité
  • PaaS gère la fiabilité, de la Haute Disponibilité
  • Paas gère de nombreux tiers add-ons pour vous

Il sera totalement le choix de l'individu fondée sur l'exigence. Vous pouvez avoir des précisions sur mon PPT Hébergement Rails Apps.

36voto

chrispftnyc Points 86

Il ya beaucoup de façons différentes de regarder cette décision de développement, l'informatique et les objectifs de l'entreprise, donc ne vous sentez pas mal si il semble écrasante. Mais aussi de ne pas overthink évolutivité.

Pensez à vos exigences.

J'ai conçu des sites web qui ont desservi plus de 8M uniques par jour et livrés téraoctets de la vidéo une semaine construit sur les infrastructures à partir de $250k capital matériel unr par un énorme $MM de main-d'œuvre personnel.

Mais j'ai aussi eu des petits sites web qui ont été conçus pour générer $10-$20k par an, n'est-ce pas un très fort trafic, db ou exigences en matière de traitement, et j'ai couru les off de 10 $/mo générique compte d'hébergement et sans faire des compromis.

Dans l'avenir, le déploiement sera regarder de plus comme Heroku d'AWS, tout simplement parce que de progrès. Il n'y a aucune valeur dans le bouton-tournant de la généralisation des infrastructures de l'internet qui n'est pas de plus en plus automatisable, et rien de tout cela n'a rien à voir avec la valeur du produit ou service que vous offrez.

Aussi, gardez à l'esprit avec un site commercial, - l'évolutivité est ce qu'on appelle souvent un "bon problème" - bien que les problèmes d'évolutivité avec des sites comme Facebook et Twitter ont été de très haut profil, ils n'avaient aucun effet négatif sur leur succès - les nouvelles pourraient même contribué à plus d'inscriptions (toute presse est bonne presse).

Si vous avez un service qui génère une 100k+ uniques par jour et avoir des questions d'échelle, je serais heureux de prendre vos mains pour vous quelle que soit la langue, db, plate-forme ou de l'infrastructure en cours d'exécution sur!

L'évolutivité est une réparable problème de mise en œuvre - ne pas avoir de clients est une question existentielle.

35voto

sivi Points 501

En fait, vous pouvez utiliser à la fois - vous pouvez développer une application avec les serveurs amazon ec2 que pousser (avec git) pour heroku pour gratuit pour un certain temps (utiliser heroku niveau gratuit) et de tester de la sorte. Il est très rentable en comparaison de louer un serveur, mais vous aurez à parler avec plus restrictive heroku api qui est quelque chose que vous devriez penser. Source: cette méthode a été adoptée pour l'un de mes cours en ligne.

-2voto

Levancho Points 26

eh bien.. c'est pas tout rose..

tout d'abord: AWS n'est pas la science de fusée, et si vous connaissez votre chemin autour de déploiement de "choses" à la fin de la journée, il est préférable de l'utiliser AWS, et moins cher .. au lieu de toute autre PaaS qui ont tendance à être toujours plus cher en échange de faire des "choses" pour vous ... À mon humble avis AWS est beaucoup mieux et vous avez beaucoup plus de contrôle dans l'ensemble,

surtout maintenant, quand il y a rightScale , bitnami, etc ... et tous ceux qui pré faites EC2 images pour tant de différentes couches logicielles.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X