ruby-on-rails pricing - Pourquoi les gens utilisent Heroku quand AWS est présent? Qu'est-ce qui distingue Heroku d'AWS?




vs plan (12)

Je suis un programmeur RoR débutant qui prévoit de déployer mon application en utilisant Heroku. Le mot de mes autres amis conseillers me dit que Heroku est vraiment facile à utiliser. Le seul problème est que je n'ai toujours aucune idée de ce que fait Heroku ...

J'ai regardé leur website et en un mot, ce que fait Heroku est d'aider à la mise à l'échelle mais ... pourquoi est-ce important? Comment Heroku aide-t-il:

  1. Rapidité - Ma recherche a laissé entendre que le déploiement d'AWS sur la côte est des États-Unis serait le plus rapide si je ciblais un public basé aux États-Unis et en Asie.

  2. Sécurité - Quel est leur niveau de sécurité?

  3. Mise à l'échelle - Comment cela fonctionne-t-il réellement?

  4. Rentabilité - Il y a quelque chose comme un dyno qui le rend facile à mettre à l'échelle.

  5. Comment se comportent-ils contre leurs concurrents? Par exemple, Engine Yard et bluebox ?

S'il vous plaît utiliser des termes anglais laïques pour expliquer ... Je suis un programmeur débutant.


Answers

Il s'agit d'un pourcentage important de notre activité de migration de personnes d'Heroku vers AWS. Il y a des avantages à la fois pour les deux, mais cela devient désordonné sur Heroku après un certain temps ... une fois que vous avez besoin d'un certain niveau de complexité, ce n'est plus facile à maintenir avec les limitations d'Heroku.

Cela dit, il y a de plus en plus d'options pour avoir la facilité d'Heroku et la flexibilité d'AWS en étant sur AWS avec de superbes frameworks / outils.



bien .. ce n'est pas tout ce rose ..

tout d'abord: AWS n'est pas une science de la fusée, et si vous savez comment vous débrouiller en fin de journée, il vaut mieux utiliser AWS, et moins cher ... au lieu de tout autre PaaS qui a tendance à être toujours plus cher en échange de faire des "choses" pour vous ... IMHO 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 toutes ces images EC2 pré-faites pour autant de piles logicielles différentes.


Il y a de nombreuses façons d'examiner cette décision à partir des objectifs de développement, de TI et d'affaires, alors ne vous sentez pas mal si cela vous semble écrasant. Mais aussi - ne pas trop penser à l'évolutivité.

Pensez à vos besoins .

J'ai conçu des sites Web qui ont traité plus de 8 millions d'utilisateurs uniques par jour et livré des téraoctets de vidéos par semaine, construits sur des infrastructures à partir de 250 000 dollars de matériel informatique par un énorme personnel de TI.

Mais j'ai également eu de plus petits sites Web qui ont été conçus pour générer 10 à 20 000 $ par an, ne nécessitaient pas beaucoup de trafic, de base de données ou de traitement, et je les exploitais sans compromis.

À l'avenir, le déploiement ressemblera plus à Heroku qu'AWS, simplement à cause des progrès. Il n'y a aucune valeur dans le bouton IT: le tournage des infrastructures Internet évolutives n'est pas de plus en plus automatisable, et rien de tout cela n'a de rapport avec la valeur du produit ou du service que vous proposez.

Gardez à l'esprit un site Web commercial - l'évolutivité est ce que nous appelons souvent un «bon problème» - bien que les problèmes d'évolutivité avec des sites comme Facebook et Twitter soient très médiatisés, ils n'ont eu aucun effet négatif sur leur succès. pourrait avoir même contribué à plus d'inscriptions (toute presse est bonne presse).

Si vous avez un service qui génère 100k + uniques par jour et des problèmes de mise à l'échelle, je serais ravi de vous le retirer, quelle que soit la langue, la base de données, la plate-forme ou l'infrastructure utilisée!

L'évolutivité est un problème d'implémentation réparable - ne pas avoir de clients est un problème existentiel.


Les réponses existantes sont globalement précises:

  • Heroku est très facile à utiliser et à déployer, peut être facilement configuré pour le déploiement automatique d'un dépôt (par exemple GitHub), a beaucoup d'add-ons de tiers et charge plus par instance.

  • AWS dispose d'une gamme plus large de services de première partie à des prix compétitifs, y compris le DNS, l'équilibrage de charge, le stockage de fichiers bon marché et possède des fonctionnalités d'entreprise comme la possibilité de définir des politiques de sécurité.

Pour le tl; dr passer à la fin de ce post.

AWS ElasticBeanstalk est une tentative de fournir une plate-forme autoscaling de type Heroku et une plate-forme de déploiement facile. Comme il utilise des instances EC2 (qu'il crée automatiquement), les serveurs EB peuvent faire tout ce que n'importe quelle autre instance EC2 peut faire et c'est bon marché à exécuter.

Le déploiement avec EB est très lent. le déploiement d'une mise à jour peut prendre entre 10 et 15 minutes par serveur et le déploiement sur un cluster plus important peut prendre la meilleure partie d'une heure - comparé à quelques secondes pour déployer une mise à jour sur Heroku. Les déploiements sur EB ne sont pas gérés de façon particulièrement transparente non plus, ce qui peut imposer des contraintes sur la conception de l'application.

Vous pouvez utiliser tous les services qu'ElasticBeanstalk utilise en coulisses pour créer votre propre système sur mesure (avec CodeDeploy, Elastic Load Balancer, Auto Scaling Groups - et CodeCommit, CodeBuild et CodePipeline si vous voulez tout faire) mais vous pouvez certainement passer un bon Deux semaines de mise en place la première fois car il est assez compliqué et légèrement plus compliqué que de simplement configurer des choses dans EC2.

AWS Lightsail offre une option d'hébergement à un prix compétitif, mais n'aide pas au déploiement ou à la mise à l'échelle - c'est juste un emballage pour leur offre EC2 (mais coûte beaucoup plus cher). Il vous permet d'exécuter automatiquement un script bash lors de la configuration initiale, ce qui est agréable, mais il est coûteux comparé au coût de la simple configuration d'une instance EC2 (que vous pouvez également faire par programmation).

Quelques réflexions sur la comparaison (pour tenter de répondre aux questions, mais de façon détournée):

  1. Ne sous-estimez pas la quantité d'administration du système de travail, y compris la mise à jour de tout ce que vous avez installé avec les correctifs de sécurité (et les mises à jour occasionnelles du système d'exploitation).

  2. Ne sous-estimez pas les avantages d'un déploiement automatique, d'une mise à l'échelle automatique et de l'approvisionnement et de la configuration SSL.

    Le déploiement automatique lorsque vous mettez à jour votre référentiel Git est facile avec Heroku. Il est presque instantané, gracieux donc il n'y a pas d'indisponibilité pour les utilisateurs finaux et peut être mis à jour uniquement si les tests / Intégration Continue réussissent à ne pas casser votre site si vous déployez du code cassé.

    Vous pouvez également utiliser ElasticBeanstalk pour le déploiement automatique, mais préparez-vous à passer une semaine à la première fois. Vous devrez peut-être modifier la manière dont vous déployez et créez des ressources (CSS et JS) pour gérer ElasticBeanstalk. dans votre application pour gérer les déploiements.

    Soyez conscient de l'estimation des coûts que pour un déploiement transparent sans interruption sur EB, vous devez exécuter plusieurs instances - EB déploie des mises à jour sur chaque serveur individuellement afin que votre service ne soit pas dégradé - où Heroku crée un nouveau dyno pour vous et désapprouve l'ancien service jusqu'à ce que toutes les demandes soient traitées (il le supprime ensuite).

    Fait intéressant, le coût d'hébergement de plusieurs serveurs avec EB peut être moins cher qu'une seule instance Heroku, surtout une fois que vous avez inclus le coût des add-ons.

Quelques autres questions non spécifiquement posées, mais soulevées par d'autres réponses:

  1. Utiliser un autre fournisseur pour la production et le développement est une mauvaise idée.

    Je regrette que les gens suggèrent cela. Bien qu'idéalement le code fonctionne correctement sur toute plate-forme raisonnable afin qu'il soit aussi portable que possible, les versions du logiciel sur chaque hôte varieront considérablement et simplement parce que le code s'exécute en staging ne signifie pas qu'il fonctionnera en production (par exemple Node.js / Les versions de Ruby / Python / PHP / Perl peuvent différer d'une manière qui rend le code incompatible, souvent de manière silencieuse et qui pourrait ne pas être détectée même si vous avez une couverture de test décente.

    Ce qui est une bonne idée est de tirer parti de quelque chose comme Heroku pour le prototypage, les petits projets et les microsites - afin que vous puissiez construire et déployer les choses rapidement sans investir beaucoup de temps dans la configuration et la maintenance.

    Assurez-vous de prendre en compte le coût d'exécution des instances de production et de préproduction lors de la prise de décision, sans oublier le coût de réplication de l'environnement complet (y compris les services tiers tels que les magasins de données, l'installation et la configuration SSL, etc.) .

  2. Si vous utilisez AWS, méfiez-vous des instances préconfigurées AWS de la part de fournisseurs tels que Bitnami - ils constituent un cauchemar pour la sécurité. Ils peuvent exposer beaucoup d'applications notoirement vulnérables par défaut sans le mentionner dans la description.

    Envisagez plutôt d'utiliser simplement une distribution mainstream bien supportée, comme Ubuntu ou Debian (ou CentOS si vous avez besoin de support RPM).

    Remarque: L'offre Amazon a sa propre distribution appelée Amazon Linux, qui utilise RPM, mais elle est spécifique à EC2 et moins bien supportée par un logiciel tiers / open source.

  3. Vous pouvez également configurer une instance EC2 sur AWS (ou Lightsail) et configurer avec quelque chose comme flynn ou dokku dessus - sur lequel vous pouvez ensuite déployer plusieurs sites facilement, ce qui peut valoir la peine si vous maintenez beaucoup de services ou voulez être capable de lancer de nouvelles choses facilement. Cependant, sa configuration n'est pas aussi automagique que l'utilisation d'Heroku et vous pouvez passer beaucoup de temps à la configurer et la maintenir (au point que j'ai trouvé le déploiement en utilisant Amazon clustering et Docker Swarm plus facile que de les configurer; YMMV).

J'ai utilisé des instances AWS EC (seules et en grappes), Elastic Beanstalk et Lightsail et Heroku en même temps en fonction des besoins du projet sur lequel je travaille.

Je déteste passer du temps à configurer les services, mais mon facture de Heroku serait de milliers par an si je l'utilisais pour tout et AWS travaille à une fraction du coût.

tl; dr

Si l'argent n'était jamais un problème j'utiliserais Heroku pour presque tout car c'est un énorme gain de temps - mais je voudrais toujours utiliser AWS pour des projets plus compliqués où j'ai besoin de la flexibilité et des services plus avancés qu'Heroku n'offre pas.

Le scénario idéal pour moi serait si ElasticBeanstalk fonctionnait plus comme Heroku - c'est à dire avec une configuration plus simple et un mécanisme de déploiement plus rapide et meilleur.

now.sh , qui utilise AWS en arrière- now.sh , est un exemple de service. Il rend les déploiements et les clusters aussi simples que sur Heroku (avec le SSL automatique, le DNS, les déploiements gracieux, la configuration de cluster super facile et la gestion).

Je l'ai beaucoup utilisé pour l'application Node.js et les déploiements d'images Docker, la principale mise en garde est que les instances sont partagées (ce qui se reflète dans leur coût inférieur) et actuellement aucune option pour acheter des instances dédiées. Cependant, leur outil de déploiement Open Source 'now' peut également être utilisé pour déployer des instances dédiées sur AWS, Google Cloud et Azure.


En fait, vous pouvez utiliser les deux - vous pouvez développer une application avec Amazon serveurs ec2. Ensuite, poussez-le (avec git) à heroku gratuitement pendant un certain temps (utilisez le niveau gratuit Heroku pour le servir au public) et testez-le comme ça. Il est très rentable par rapport à la location d'un serveur, mais vous devrez parler avec une api d'heroku plus restrictive qui est quelque chose que vous devriez penser. Source: cette méthode a été adoptée pour l'une de mes classes en ligne "Startup engineering de Coursera / Stanford par Balaji S. Srinivasan et Vijay S. Pande


AWS / Heroku sont tous deux gratuits pour les petits projets de loisir (pour commencer).

Si vous voulez démarrer une application tout de suite, sans beaucoup de personnalisation de l'architecture, choisissez Heroku .

Si vous voulez vous concentrer sur l'architecture et pouvoir utiliser différents serveurs Web, choisissez AWS . AWS prend plus de temps en fonction du service / produit que vous choisissez, mais peut en valoir la peine. AWS est également livré avec de nombreux services et produits de plugin.

Heroku

  • Plate-forme en tant que service (PAAS)
  • Bonne documentation
  • A intégré des outils et de l'architecture.
  • Contrôle limité sur l'architecture lors de la conception de l'application.
  • Le déploiement est pris en charge (via les commandes git uniquement).
  • Pas de temps.

AWS

  • L'infrastructure en tant que service (IAAS)
  • Polyvalent - a de nombreux produits tels que EC2, LAMBDA, EMR, etc.
  • Peut utiliser une instance Dedicated pour plus de contrôle sur l'architecture, comme le choix du système d'exploitation, de la version du logiciel, etc. Il y a plusieurs couches backend.
  • Elastic Beanstalk est une fonctionnalité similaire au PAAS d'Heroku.
  • Peut utiliser le déploiement automatisé ou lancer le vôtre.

Comme le dit Kristian Glass, il n'y a pas de comparaison entre IaaS ( AWS ) et PaaS ( Heroku , EngineYard ).

PaaS aide les développeurs à accélérer le développement de l'application, économisant de l'argent et surtout innovant dans leurs applications et leurs activités au lieu de configurer des configurations et de gérer des choses comme des serveurs et des bases de données. Les autres fonctionnalités qui permettent d'utiliser PaaS sont le processus de déploiement des applications telles que l'agilité, la haute disponibilité, la surveillance, l'échelle / détartrage, le besoin limité d'expertise, le déploiement facile et la réduction des coûts et du temps de développement.

Mais il y a toujours un côté obscur pour PaaS qui fait obstacle à l'adoption de PaaS:

  • Moins de contrôle sur le serveur et les bases de données
  • Les coûts seront très élevés s'ils ne sont pas gérés correctement
  • Prématurée et douteuse au jour et à l'âge actuels

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

  • Acquisition de matériel
  • Système opérateur
  • Logiciel serveur
  • Environnement de script côté serveur
  • serveur Web
  • Système de gestion de base de données (Mysql, Redis, etc.)
  • Configurer le serveur de production
  • Outil de test et de déploiement
  • Application de surveillance
  • La haute disponibilité
  • Charge Blancing / Http Routing
  • Stratégies de sauvegarde de service
  • La collaboration d'équipe
  • Reconstruire la production

Si vous avez une entreprise à petite échelle, PaaS sera la meilleure option pour vous:

  • Payez comme vous allez
  • Faible coût de démarrage
  • Laissez la plomberie à l'expert
  • PaaS gère la mise à l'échelle / le détartrage automatique, l'équilibrage de charge, la reprise après sinistre
  • PaaS gère toutes les exigences de sécurité
  • PaaS gère la fiabilité, la haute disponibilité
  • Paas gère de nombreux add-ons tiers pour vous

Ce sera un choix totalement individuel basé sur l'exigence. Vous pouvez avoir des détails sur mes applications PPT Hosting Rails .


Chose amusante, Heroku utilise AWS sur le backend. Il enlève tous les frais généraux et fait la gestion de l'architecture sur EC2 pour vous. (A obtenu cette connaissance d'un ingénieur senior dans une grande entreprise lors d'une interview)


Bien! J'observe Heroku est célèbre dans les développeurs naissants et naissants tandis que AWS a avancé le personnage du développeur. DigitalOcean est également un acteur majeur sur ce terrain. Cloudways a facilité la création de la pile de lampes en un clic sur DigitalOcean et AWS. Avoir tous les services et les mises à jour de paquets dans un clic est bien mieux que de tout faire manuellement.

Vous pouvez vérifier complètement ici: https://www.cloudways.com/blog/host-php-on-aws-cloud/


Eh bien, les gens posent généralement cette question: Heroku ou AWS quand ils commencent à déployer quelque chose.

Mon expérience d'utilisation de Heroku et AWS, voici mon examen rapide et la comparaison:

Heroku

  • Une commande pour déployer quels que soient les types de projets: Ruby on Rails, Nodejs
  • Tellement de 1 clic pour intégrer des plugins et des tiers: C'est super facile de commencer avec quelque chose.
  • Ne pas avoir d'auto-mise à l'échelle; cela signifie que vous devez augmenter / réduire manuellement
  • Le coût est élevé, en particulier lorsque le système a besoin de plus de ressources
  • Instance gratuite disponible
  • L'instance libre se met en veille si elle est inactive.
  • Centre de données: États-Unis et UE seulement
  • Peut plonger / accéder au niveau de la machine en utilisant Heroku run bash (Merci, MJafar Mash pour le conseil) mais c'est un peu limité! Vous n'avez pas un accès complet!
  • Ne pas besoin d'en savoir trop sur DevOps

AWS - EC2

  • Cela ressemble à une machine avec pré-config OS (ou pas), donc vous devez installer un logiciel, une bibliothèque pour rendre votre site web / service en ligne.
  • Plugin et bibliothèque doivent être intégrés manuellement, ou script d'automatisation (script public et écrit par vous)
  • La mise à l'échelle automatique et l'équilibrage de charge sont les services pris en charge. Apprenez simplement comment configurer et intégrer à votre système
  • Le coût est assez bon marché, cela dépend des services et du nombre d'heures d'utilisation.
  • Il y a plusieurs heures gratuites pour les instances de T2.micro, mais généralement, vous paierez quelques dollars chaque mois (si vous utilisez encore T2.micro)
  • Votre instance gratuite ne va pas dormir, disponible 24h / 24 et 7j / 7 (parce que vous pouvez payer pour cela :))
  • Centre de données: autour du monde. Choisissez la région qui vous convient le mieux.
  • Plongez dans le niveau de la machine. Donc vous pouvez en profiter
  • Quelques connaissances sur DevOps, mais ça va, est utile là-bas!

AWS Elastic Beanstalk une alternative de Heroku, mais moins cher

  • Elastic Beanstalk a été annoncé comme une version bêta publique à partir de 2010; cela nous aide à travailler plus facilement avec le déploiement. Pour plus de détails s'il vous plaît allez here

  • Beanstalk est gratuit, le coût que vous paierez sera pour les services que vous utilisez et le nombre d'heures d'utilisation.

  • J'utilise Elastic Beanstalk depuis longtemps, et je pense qu'il peut être le remplacement d'Heroku et moins cher!

Résumé

  • Heroku: Facile au début, instance gratuite , mais cher plus tard
  • AWS: Pas facile, heures libres disponibles, un peu moins cher , Beanstalk devrait être concerné à utiliser

Donc, dans mon système actuel, j'utilise Heroku pour la mise en scène et Beanstalk pour la production!


Heroku est une plateforme de cloud en tant que service. Cela signifie que vous n'avez pas à vous soucier de l'infrastructure; vous vous concentrez sur votre application.

En plus de ce que Jonny a said , il y a quelques caractéristiques de Heroku:

  • Le déploiement instantané avec Git push - build de votre application est effectué par Heroku en utilisant vos scripts de construction
  • Beaucoup de ressources additionnelles (applications, bases de données, etc.)
  • Processus de mise à l'échelle - mise à l'échelle indépendante pour chaque composant de votre application sans affecter les fonctionnalités et les performances
  • Isolement - chaque processus (aka dyno) est complètement isolé les uns des autres
  • Journalisation complète et visibilité - accès facile à toutes les sorties de journalisation de chaque composant de votre application et de chaque processus (dyno)

Heroku fournit un tutoriel très bien écrit qui vous permet de commencer en quelques minutes. En outre, ils fournissent les 750 premières heures de calcul gratuitement, ce qui signifie que vous pouvez avoir un processus (aka Dyno) sans frais. Les performances sont également très bonnes, par exemple une application Web simple écrite dans node.js peut gérer environ 60 à 70 requêtes par seconde.

Les concurrents d'Heroku sont:







ruby-on-rails heroku amazon-web-services