ruby-on-rails - student - plan heroku




Pourquoi les gens utilisent Heroku quand AWS est présent? Qu'est-ce qui distingue Heroku d'AWS? (9)

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.


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.

Amazon Web Services (AWS) offre de nombreux services de IaaS à PaaS avec une fiabilité et une disponibilité de données et d'infrastructure de 99,9999999%. AWS offre l'automatisation de l'infrastructure ainsi que plusieurs outils permettant aux développeurs d'intégrer leur processus de déploiement d'applications.

D'autre part, Heroku est juste PaaS qui offre des services pour gérer votre plate-forme sur leur nuage. Il n'y a nulle part avec AWS qu'il s'agisse d'infrastructure ou de sécurité.


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)


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 .


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


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.



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.


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.





amazon-web-services