Warum verwenden Menschen Heroku, wenn AWS vorhanden ist? Was unterscheidet Heroku von AWS? [geschlossen]

1101

Ich bin ein RoR-Programmierer für Anfänger, der plant, meine App mit Heroku bereitzustellen. Die Nachricht von meinen anderen Beraterfreunden besagt, dass Heroku wirklich einfach und gut zu bedienen ist. Das einzige Problem ist, dass ich immer noch keine Ahnung habe, was Heroku tut ...

Ich habe mir ihre Website angesehen und kurz gesagt, Heroku hilft bei der Skalierung, aber ... warum ist das überhaupt wichtig? Wie hilft Heroku bei:

  1. Geschwindigkeit - Meine Untersuchungen haben ergeben, dass die Bereitstellung von AWS an der Ostküste der USA am schnellsten ist, wenn ich mich an ein Publikum in den USA und Asien wende.

  2. Sicherheit - Wie sicher sind sie?

  3. Skalierung - Wie funktioniert es eigentlich?

  4. Kosteneffizienz - Es gibt so etwas wie einen Prüfstand, der die Skalierung erleichtert.

  5. Wie schlagen sie sich gegen ihre Konkurrenten? Zum Beispiel Engine Yard und Bluebox ?

Bitte verwenden Sie Laien-Englisch-Begriffe, um zu erklären ... Ich bin ein Anfänger-Programmierer.

Bryan
quelle
267
Ich benutze es tatsächlich wegen des kostenlosen Plans;).
Hochzeitstorten
56
Sie hätten fragen sollen, was der Unterschied zwischen Heroku und AWS elastischer Bohnenstange ist. Andernfalls erhalten Sie die üblichen "PaaS vs IaaS" -Antworten, nicht das, wonach Sie wahrscheinlich suchen.
Jus12
38
Entwickeln Sie auf Heroku, skalieren Sie es auf Heroku, innovieren Sie auf Heroku ... Sobald die Idee der Geschäftshit ist, übertragen Sie sie auf aws ... wie bei Ihrer Einstellung.
Muhammad Umer
10
Es kann schwierig sein, zu migrieren, wenn Sie ein paar Dienste nutzen und alles übertragen, konfigurieren, testen müssen ... Es wird definitiv Kosten verursachen
Paolo
37
Eine meiner Lieblingssachen bei Heroku ist die automatische Bereitstellung von Github, sodass ich einen productionZweig in meinem Repo haben kann. Immer wenn ein neues Commit in dieses Repo verschoben wird, greift Heroku automatisch danach, erstellt es und stellt es bereit. Ich muss mich überhaupt nicht um etwas Server-seitiges kümmern!
Razi Shaban

Antworten:

245

AWS / Heroku sind beide kostenlos für kleine Hobbyprojekte (zu Beginn).

Wenn Sie eine App sofort starten möchten, ohne die Architektur stark anpassen zu müssen, wählen Sie Heroku .

Wenn Sie sich auf die Architektur konzentrieren und verschiedene Webserver verwenden möchten, wählen Sie AWS . AWS ist zeitaufwändiger, je nachdem, welchen Service / welches Produkt Sie auswählen, kann sich aber lohnen. AWS enthält auch viele Plugin-Services und -Produkte.


Heroku

  • Plattform als Service (PAAS)
  • Gute Dokumentation
  • Hat eingebaute Werkzeuge und Architektur.
  • Eingeschränkte Kontrolle über die Architektur beim Entwerfen der App.
  • Die Bereitstellung wird erledigt (automatisch über GitHub oder manuell über Git-Befehle oder CLI).
  • Nicht zeitaufwändig.

AWS

  • Infrastruktur als Service (IAAS)
  • Vielseitig - hat viele Produkte wie EC2, LAMBDA, EMR usw.
  • Kann eine dedizierte Instanz verwenden, um die Architektur besser zu steuern, z. B. das Betriebssystem, die Softwareversion usw. auszuwählen. Es gibt mehr als eine Backend-Ebene.
  • Elastic Beanstalk ähnelt Herokus PAAS.
  • Kann die automatisierte Bereitstellung verwenden oder Ihre eigene rollen.
SuperNova
quelle
7
ElasticBeanstalk ist weitaus kostengünstiger als Heroku, da für den Dienst kein Aufschlag über die von Ihnen verwendeten Server hinaus erfolgt. Sie können ElasticBeanstalk auch mit der kostenlosen AWS-Stufe aws.amazon.com/elasticbeanstalk/pricing
Zags
25
@Zags "kostengünstig" ist Ansichtssache. Wenn ich eine Heroku-App in weniger als einer Minute erstellen und bereitstellen kann und das Einrichten von Beanstalk möglicherweise Stunden dauert, ist dies nicht kosteneffektiv, wenn man bedenkt, dass mehrere Stunden Entwicklerzeit alle "Einsparungen" von Beanstalk zunichte machen. Es hängt wirklich von den Prioritäten ab - sind Versandfunktionen wichtiger oder ist die Einrichtung und Wartung der Infrastruktur wichtiger?
Brian Lieber
5
Die einfache Einrichtung von @BrianDear hängt von Ihrer Vertrautheit mit den verschiedenen Systemen ab. Selbst wenn die Einrichtung von ElasticBeanstalk bei gleicher Vertrautheit länger dauert, beträgt AWS in der Regel 60% der Heroku-Kosten (vergleichen Sie eine Heruku-Leistung m mit einer AWS m4.xlarge). Bei einer Serverrechnung von nur 100 US-Dollar pro Monat werden durch eine Einsparung von 40% die Kosten für "mehrere Stunden Engineering" innerhalb eines Jahres gedeckt. Je höher die Serverrechnung, desto stärker das Argument für AWS.
Zags
4
Die Bereitstellung auf Beanstalk dauert ca. 5 Minuten. Wählen Sie Plattform -> Zip hochladen -> Freuen Sie sich. Möchten Sie bereitstellen, indem Sie auf Master drücken? Verbringen Sie weitere 5 Minuten mit dem Einrichten von CodePipeline. Beide Workflows können nur über die GUI-Konsole ausgeführt werden, wenn die CLI Sie einschüchtert.
Anthony Manning-Franklin
1
Leider ist die Dokumentation nicht unter AWS aufgeführt. AWS verfügt über eine der besten Dokumentationen aller Technologien / Plattformen. Ich hatte es schon benutzt, bevor diese Antwort veröffentlicht wurde, circa 2013.
Lupchiazoem
2055

Das Wichtigste zuerst, AWS und Heroku sind verschiedene Dinge. AWS bietet Infrastructure as a Service ( IaaS ) an, während Heroku eine Platform as a Service ( PaaS ) anbietet .

Was ist der Unterschied? In etwa bietet IaaS Ihnen Komponenten, die Sie benötigen, um darauf aufzubauen. PaaS bietet Ihnen eine Umgebung, in der Sie nur Code und einige grundlegende Konfigurationen übertragen und eine laufende Anwendung erhalten. IaaS bietet Ihnen mehr Leistung und Flexibilität, auf Kosten der Notwendigkeit, mehr selbst zu bauen und zu warten.

Um Ihren Code unter AWS zum Laufen zu bringen und ein bisschen wie eine Heroku-Bereitstellung auszusehen, benötigen Sie einige EC2-Instanzen - Sie möchten einen Load Balancer / Caching-Layer darauf installieren (z. B. Varnish ), Sie möchten Instanzen, die so etwas ausführen Passagier und Nginx , um Ihren Code bereitzustellen, möchten Sie eine Cluster-Datenbankinstanz von etwas wie PostgreSQL bereitstellen und konfigurieren . Sie möchten ein Bereitstellungssystem mit so etwas wie Capistrano und etwas, das die Protokollaggregation durchführt.

Das ist keine unbedeutende Menge an Arbeit, die eingerichtet und gewartet werden muss. Bei Heroku sind möglicherweise einige Zeilen Anwendungscode und a erforderlich, um diese Art von Phase zu erreichen git push.

Sie sind also so weit und möchten skalieren. Großartig. Sie verwenden Puppet für Ihre EC2-Bereitstellung, richtig? Jetzt konfigurieren Sie Ihre Capistrano-Dateien so, dass Instanzen nach Bedarf hoch- und heruntergefahren werden. Sie richten Ihre Puppet-Konfiguration neu aus, damit Varnish Web-Worker-Instanzen kennt und diese automatisch zusammenfasst. Oder du heroku scale web:+5.

Hoffentlich gibt Ihnen das eine Vorstellung vom Vergleich zwischen den beiden. Um nun Ihre spezifischen Punkte anzusprechen:

Geschwindigkeit

Derzeit läuft Heroku nur auf AWS-Instanzen in us-eastund eu-west. Für Sie klingt das wie das, was Sie sowieso wollen. Für andere ist es möglicherweise eher eine Überlegung.

Sicherheit

Ich habe viele intern gewartete Produktionsserver gesehen, die bei Sicherheitsupdates weit hinterherhinken oder im Allgemeinen schlecht zusammengestellt sind. Mit Heroku haben Sie jemanden, der so etwas verwaltet, was entweder ein Segen oder ein Fluch ist, je nachdem, wie Sie es betrachten!

Bei der Bereitstellung übergeben Sie Ihren Code effektiv direkt an Heroku. Dies kann ein Problem für Sie sein. Ihr Artikel über Dyno Isolation beschreibt ihre Isolationstechnologien (es scheint, als würden mehrere Dynos auf einzelnen EC2-Instanzen ausgeführt). Mehrere Kollegen haben Probleme mit diesen Technologien und der Stärke ihrer Isolation geäußert. Ich bin leider nicht in der Lage, genug Wissen / Erfahrung zu haben, um wirklich Kommentare abzugeben, aber meine aktuellen Heroku-Bereitstellungen halten dies für "gut genug". Es kann ein Problem für Sie sein, ich weiß es nicht.

Skalieren

Ich habe oben in meinem Vergleich zwischen IaaS und PaaS angesprochen, wie man dies implementieren könnte. Ihre Anwendung hat ungefähr eine Procfile, die Zeilen des Formulars enthält dyno_type: command_to_run, z. B. (aus http://devcenter.heroku.com/articles/process-model ):

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

Dies mit einem:

heroku scale web:2 worker:10

Dies führt dazu, dass 2 webDynos und 10 workerDynos ausgeführt werden. Schön, einfach, leicht. Beachten Sie, dass webes sich um einen speziellen Dyno-Typ handelt, der Zugriff auf die Außenwelt hat und sich hinter dem netten Web-Traffic-Multiplexer (wahrscheinlich eine Art Lack / Nginx-Kombination) befindet, der den Verkehr entsprechend weiterleitet. Ihre Mitarbeiter interagieren wahrscheinlich mit einer Nachrichtenwarteschlange für ein ähnliches Routing, von dem sie den Standort über eine URL in der Umgebung abrufen.

Kosteneffizienz

Viele Leute haben viele unterschiedliche Meinungen dazu. Derzeit sind es 0,05 USD / h für eine Prüfstandsstunde, verglichen mit 0,025 USD / h für eine AWS-Mikroinstanz oder 0,09 USD / h für eine kleine AWS-Instanz.

Heroku des Dyno - Dokumentation sagt , dass Sie über 512 MB RAM haben, ist es so wahrscheinlich nicht zu unvernünftig , eine Dyno als ein bisschen wie eine EC2 Micro Instanz zu betrachten. Ist es den doppelten Preis wert? Wie sehr schätzt du deine Zeit? Der Zeit- und Arbeitsaufwand, der erforderlich ist, um auf einem IaaS-Angebot aufzubauen, um es auf diesen Standard zu bringen, ist definitiv nicht billig. Ich kann diese Frage für Sie nicht wirklich beantworten, aber unterschätzen Sie nicht die "versteckten Kosten" für Einrichtung und Wartung.

(Ein bisschen beiseite, aber wenn ich von hier aus eine Verbindung zu einem Prüfstand herstelle ( heroku run bash), zeigt ein flüchtiger Blick 4 Kerne /proc/cpuinfound 36 GB RAM - dies lässt mich glauben, dass ich mich auf einer "High-Memory Double Extra Large Instance" befinde " . Die Heroku- Dyno-Dokumentation besagt, dass jeder Dyno 512 MB RAM erhält, sodass ich ihn möglicherweise mit bis zu 71 anderen Dynos teilen kann. (Ich habe nicht genügend Daten über die Homogenität der AWS-Instanzen von Heroku, daher kann Ihre Laufleistung variieren.)

Wie schlagen sie sich gegen ihre Konkurrenten?

Ich fürchte, ich kann dir nicht wirklich helfen. Der einzige Konkurrent, den ich jemals wirklich gesehen habe, war Google App Engine - zu der Zeit, als ich Java-Anwendungen bereitstellen wollte, war die Menge an Einschränkungen für verwendbare Frameworks und Technologien unglaublich abstoßend. Dies ist mehr als "nur eine Java-Sache" - die Menge an allgemeinen Einschränkungen und notwendigen Überlegungen ( die FAQ gibt Hinweise auf mehrere) schien weniger praktisch. Im Gegensatz dazu war der Einsatz bei Heroku ein Traum.

Fazit

Ich hoffe, dies beantwortet Ihre Fragen (bitte kommentieren Sie, wenn es Lücken / andere Bereiche gibt, die Sie ansprechen möchten). Ich denke, ich sollte meine persönliche Position anbieten. Ich liebe Heroku für "schnelle Bereitstellungen". Wenn ich eine Anwendung starte und ein billiges Hosting möchte (die kostenlose Heroku-Stufe ist fantastisch - im Wesentlichen, wenn Sie nur einen Web-Dyno und 5 MB PostgreSQL benötigen, ist es kostenlos, eine Anwendung zu hosten), ist Heroku meine Anlaufstelle . Für "Serious Production Deployment" mit mehreren zahlenden Kunden, mit einem Service-Level-Agreement, mit dedizierter Zeit für Operationen usw. kann ich mich nicht dazu bringen, so viel Kontrolle nach Heroku und dann entweder nach AWS oder nach AWS zu verlagern Unsere eigenen Server waren die Hosting-Plattform der Wahl.

Letztendlich geht es darum, was für Sie am besten funktioniert. Sie sagen, Sie sind "ein Programmieranfänger" - möglicherweise können Sie sich mit Heroku auf das Schreiben von Ruby konzentrieren und müssen keine Zeit damit verbringen, die gesamte andere Infrastruktur rund um Ihren Code aufzubauen. Ich würde es auf jeden Fall versuchen.


Hinweis: AWS verfügt tatsächlich über ein PaaS-Angebot, Elastic Beanstalk , das Ruby, Node.js, PHP, Python, .NET und Java unterstützt. Ich denke, im Allgemeinen springen die meisten Leute, wenn sie "AWS" sehen, zu Dingen wie EC2 und S3 und EBS, die definitiv IaaS-Angebote sind

Kristian Glass
quelle
33
Beachten Sie, dass die elastische Bohnenstange jetzt Ruby-Apps hinter dem Passagier vollständig unterstützt.
Umgeschrieben
4
Heroku unterstützt jetzt auch Server in der EU, nicht nur in der US-Region.
Thomas Welton
7
Ist angesichts von AWS BeanStalk nicht die gesamte Diskussion darüber, wie Heroku eine PaaS-Lösung ist, während AWS "nur" ein IaaS-Angebotsstand ist, ungültig?
Gmu
6
@KristianGlass Es wäre fantastisch, wenn wir eine aktualisierte Antwort erhalten könnten, die sich wirklich mit den beiden PaaS-Angeboten (Beanstalk und Heroku) befasst
Alex Chumbley
3
Ich bin froh, dass dies für die Leute nützlich war :) @Gmu Zum Zeitpunkt der Beantwortung war EB ausreichend eingeschränkt, so dass die Annahme, dass "AWS" "EC2" bedeutet, durchaus vernünftig erschien, aber wie Alex vorschlägt, werde ich mir die erneute Beantwortung von EB ansehen deutlich verbessert.
Kristian Glass
68

Wie Kristian Glass sagte, gibt es keinen Vergleich zwischen IaaS ( AWS ) und PaaS ( Heroku , EngineYard ).

PaaS hilft Entwicklern im Grunde, die Entwicklung von Apps zu beschleunigen, wodurch Geld gespart und vor allem ihre Anwendungen und ihr Geschäft innoviert werden, anstatt Konfigurationen einzurichten und Dinge wie Server und Datenbanken zu verwalten. Weitere Funktionen, die für die Verwendung von PaaS gekauft werden müssen, sind der Anwendungsbereitstellungsprozess wie Flexibilität, Hochverfügbarkeit, Überwachung, Skalierung / Skalierung, begrenzter Bedarf an Fachwissen, einfache Bereitstellung sowie reduzierte Kosten und Entwicklungszeit.

Dennoch hat PaaS eine dunkle Seite, die die Einführung von PaaS behindert:

  • Weniger Kontrolle über Server und Datenbanken
  • Die Kosten sind sehr hoch, wenn sie nicht ordnungsgemäß geregelt werden
  • In der heutigen Zeit verfrüht und zweifelhaft

Abgesehen von oben sollten Sie über genügend Fähigkeiten verfügen, um Sie zu verwalten. IaaS:

  • Hardware-Erwerb
  • Betriebssystem
  • Serversoftware
  • Serverseitige Skriptumgebung
  • Webserver
  • Datenbankverwaltungssystem (MySQL, Redis usw.)
  • Konfigurieren Sie den Produktionsserver
  • Tool zum Testen und Bereitstellen
  • Überwachungs-App
  • Hohe Verfügbarkeit
  • Load Blancing / HTTP-Routing
  • Service Backup-Richtlinien
  • Gruppenarbeit
  • Produktion neu aufbauen

Wenn Sie ein kleines Unternehmen haben, ist PaaS die beste Option für Sie:

  • Zahlen Sie wenn sie hinausgehen
  • Niedrige Startkosten
  • Überlassen Sie die Installation dem Experten
  • PaaS übernimmt die automatische Skalierung / Entkalkung, den Lastausgleich und die Notfallwiederherstellung
  • PaaS verwaltet alle Sicherheitsanforderungen
  • PaaS verwaltet Zuverlässigkeit und Hochverfügbarkeit
  • Paas verwaltet viele Add-Ons von Drittanbietern für Sie

Es wird eine ganz individuelle Wahl sein, je nach Anforderung. Sie können Details zu meinen PPT Hosting Rails Apps haben .

Pravin Mishra
quelle
3
Ich sehe EngineYard und Heroku und natürlich ElasticBeanstalk ... alle laufen unter AWS darunter. Gibt es tatsächlich größere PaaS, die NICHT auf aws darunter laufen? Irgendwelche Ideen? Prost
Fattie
5
Joe, ich weiß, dass dies spät ist, aber um Ihre Frage zu beantworten, läuft IBM Bluemix auf SoftLayer.
Antonio Cangiano
PaaS verwaltet alle Sicherheitsanforderungen. Sicherung des Servers, jedoch höchst irreführend (insbesondere in einer Welt, in der Entwickler davon ausgehen, dass ihr System standardmäßig sicher ist). Es wird Sie sicherlich nicht vor XSS, CSRF schützen und wahrscheinlich keine wichtigen HTTP-Header für Sie festlegen. Ich kann es jetzt einfach sehen : Thank you for your concerns. We assure you that we take security very seriously and run or systems on secure servers. There is no need to worry about [insert security issue here] as all that is handled by.... -1, aber ich würde es umkehren, wenn es richtig bearbeitet wird.
Nateowami
4
Es gibt zunehmend eine Kategorie von PaaS-Lösungen (DIY PaaS), die auf Ihrer eigenen Infrastruktur funktionieren und somit einige der Probleme mit der Flexibilität / Kontrolle von PaaS lösen. Einige Beispiele: OpenShift , Cloudfoundry , Hasura . Haftungsausschluss: Ich arbeite bei Hasura.
iamnat
35

Eigentlich können Sie beides verwenden - Sie können eine App mit Amazon Servern ec2 entwickeln. Dann schiebe es (mit Git) für eine Weile kostenlos zu Heroku (benutze Heroku Free Tier, um es der Öffentlichkeit zu servieren) und teste es so. Es ist sehr kostengünstig im Vergleich zum Mieten eines Servers, aber Sie müssen mit einer restriktiveren Heroku-API sprechen, über die Sie nachdenken sollten. Quelle: Diese Methode wurde für eine meiner Online-Klassen "Startup Engineering from Coursera / Stanford" von Balaji S. Srinivasan und Vijay S. Pande übernommen

Es wurde ein Schema hinzugefügt, damit meine Erklärung leichter zu verstehen ist

sivi
quelle
15
Was ist der Vorteil der Verwendung der Mikroinstanz als Entwicklungsmaschine anstelle Ihres lokalen Computers? Ich sehe keinen zusätzlichen Vorteil des Hinzufügens des AWS in diesem speziellen Fall. Vielen Dank!
Mateo
5
wahrscheinlich, weil es in einer akademischen Umgebung die Anweisungen zum Einrichten der Entwicklungsumgebung konsistenter macht und sie sich keine Sorgen machen müssen, dass es unter Windows funktioniert
Jeff Dickey
2
Diese Architektur hilft, viele Unverträglichkeiten des Windows / Linux-Betriebssystems zu vermeiden. Lernen Sie auch das Linux-Betriebssystem, ohne es auf Ihrem lokalen Computer installieren zu müssen. Wenn Sie einen Mac haben, ist dies weniger problematisch, aber viele Benutzer verwenden Windows.
Sivi
13
Es heißt virtuelle Maschine, ich sehe immer noch nicht viel Sinn darin.
Abe Petrillo
2
Eine separate Plattform für Inszenierung und Produktion zu haben, ist eine super schreckliche Idee. Die wichtigsten Softwareversionen werden sich in inkompatibler Weise unterscheiden. Sie sollten in der Lage sein, Ihren Code für die Entwicklung lokal auszuführen, auch wenn sich das native Betriebssystem vom Produktionsbetriebssystem unterscheidet (im schlimmsten Fall mit VMware oder Vagrant oder mit einem Emulator, wenn Sie für eine eingebettete Plattform erstellen; nativ ist dies jedoch im Allgemeinen einfacher zu arbeiten mit). Nur die Möglichkeit, Code remote in der Cloud bereitzustellen, ist eine schreckliche Hürde für eine schnelle Anwendungsentwicklung, die das Testen und Debuggen unnötig zeitaufwändig macht.
Iain Collins
34

Es gibt viele verschiedene Möglichkeiten, diese Entscheidung anhand von Entwicklungs-, IT- und Geschäftszielen zu betrachten. Fühlen Sie sich also nicht schlecht, wenn sie überwältigend erscheint. Aber auch - überdenken Sie nicht die Skalierbarkeit.

Denken Sie über Ihre Anforderungen nach .

Ich habe Websites entwickelt, die mehr als 8 Millionen Unikate pro Tag gewartet und wöchentlich Terabyte an Videos geliefert haben, die auf Infrastrukturen basieren, die bei 250.000 US-Dollar an Hardware-Hardware beginnen, und zwar von einem riesigen IT-Mitarbeiter von MM im Wert von MM.

Aber ich hatte auch kleinere Websites, die 10 bis 20.000 US-Dollar pro Jahr generieren sollten, keine sehr hohen Anforderungen an Traffic, Datenbank oder Verarbeitung hatten, und ich habe diese ohne Kompromisse von einem generischen Hosting-Konto von 10 US-Dollar pro Monat ausgeführt.

In Zukunft wird die Bereitstellung aufgrund des Fortschritts eher wie Heroku als wie AWS aussehen. Es gibt keinen Wert beim IT-Drehknopf bei der Skalierung von Internetinfrastrukturen, der nicht zunehmend automatisierbar ist, und nichts davon hat etwas mit dem Wert des von Ihnen angebotenen Produkts oder der von Ihnen angebotenen Dienstleistung zu tun.

Denken Sie auch an eine kommerzielle Website - Skalierbarkeit ist das, was wir oft als "gutes Problem" bezeichnen - obwohl Skalierbarkeitsprobleme bei Websites wie Facebook und Twitter sehr bekannt waren, hatten sie keinen negativen Einfluss auf ihren Erfolg - die Nachrichten könnte sogar zu mehr Anmeldungen beigetragen haben (alle Presse ist gute Presse).

Wenn Sie einen Dienst haben, der mehr als 100.000 Unikate pro Tag generiert und Skalierungsprobleme hat, würde ich ihn Ihnen gerne abnehmen, unabhängig von der Sprache, Datenbank, Plattform oder Infrastruktur, auf der Sie ausgeführt werden!

Skalierbarkeit ist ein behebbares Implementierungsproblem - das Fehlen von Kunden ist ein existenzielles Problem.

BricoleurDev
quelle
28

Normalerweise stellen die Leute diese Frage: Heroku oder AWS, wenn sie anfangen, etwas bereitzustellen.

Mein Experiment mit Heroku und AWS. Hier ist meine kurze Übersicht und mein Vergleich:

Heroku

  • Ein Befehl zum Bereitstellen aller Projekttypen: Ruby on Rails, Nodejs
  • So viele 1-Klicks, um Plugins und Dritte zu integrieren: Es ist super einfach, mit etwas zu beginnen.
  • Keine automatische Skalierung; Das bedeutet, dass Sie manuell vergrößern / verkleinern müssen
  • Die Kosten sind teuer, insbesondere wenn das System mehr Ressourcen benötigt
  • Kostenlose Instanz verfügbar
  • Die freie Instanz geht in den Ruhezustand, wenn sie inaktiv ist.
  • Rechenzentrum: Nur USA und EU
  • KANN mit Heroku run bash(Danke, MJafar Mash für den Rat) in die Maschinenebene eintauchen / darauf zugreifen, aber es ist irgendwie begrenzt! Sie haben keinen vollen Zugriff!
  • Sie müssen nicht zu viel über DevOps wissen

AWS - EC2

  • Dies ist genau wie bei einem Computer mit vorkonfiguriertem Betriebssystem (oder nicht). Sie müssen also Software und Bibliothek installieren, damit Ihre Website / Ihr Dienst online geschaltet wird.
  • Plugin & Bibliothek müssen manuell integriert werden oder Automatisierungsskript (öffentliches Skript & von Ihnen geschrieben)
  • Auto Scaling & Load Balancer sind die unterstützten Dienste. Lernen Sie einfach, wie Sie Ihr System konfigurieren und in es integrieren
  • Die Kosten sind recht günstig und hängen davon ab, welche Dienste und wie viele Stunden Sie nutzen
  • Es gibt mehrere freie Stunden für T2.micro-Instanzen, aber normalerweise zahlen Sie jeden Monat ein paar Dollar (wenn Sie immer noch T2.micro verwenden).
  • Ihre kostenlose Instanz wird nicht in den Ruhezustand versetzt und ist rund um die Uhr verfügbar (weil Sie möglicherweise dafür bezahlen :))
  • Rechenzentrum: auf der ganzen Welt. Wählen Sie die Region aus, die am besten zu Ihnen passt.
  • Tauchen Sie in die Maschinenebene ein. So können Sie es genießen
  • Einige Kenntnisse über DevOps, aber es ist okay, Stackoverflow ist dort hilfreich!

AWS Elastic Beanstalk ist eine Alternative zu Heroku, aber billiger

  • Elastic Beanstalk wurde ab 2010 als öffentliche Beta angekündigt. Dies erleichtert uns die Arbeit mit der Bereitstellung. Für Details gehen Sie bitte hier

  • Beanstalk ist kostenlos. Die Kosten, die Sie bezahlen, werden für die von Ihnen genutzten Dienste und die Anzahl der Nutzungsstunden berechnet.

  • Ich benutze Elastic Beanstalk für eine lange Zeit und ich denke, es kann der Ersatz von Heroku und billiger sein!

Zusammenfassung

  • Heroku: Am Anfang einfach, KOSTENLOS , aber später teuer
  • AWS: Nicht einfach, freie Stunden verfügbar, etwas billiger , Beanstalk sollte bedenklich sein

In meinem aktuellen System verwende ich Heroku für die Inszenierung und Beanstalk für die Produktion!

Hieu Pham
quelle
3
Mir gefällt, wie Sie die Frage beantworten. Ich habe Heroku und AWS ausprobiert. Ich stimme Ihnen zu, um zu empfehlen:Use Heroku for staging, and Beanstalk for production!
Chetabahana
1
heroku run bashund Sie haben Shell-Zugriff auf Ihren Prüfstand
Mohammad Jafar Mashhadi
Können Sie eine Preisschätzung abgeben? Ich muss Java Web App auf Tomcat veröffentlichen (Spring Framework, angleJS usw.). Lassen Sie uns über 1000 Benutzer pro Monat nachdenken, die jeweils 5 Minuten lang die App verwenden. Was ist der geschätzte Preis? (wie sehr geringe Nutzung, aber Verfügbarkeit für den ganzen Monat)
Rasiermesser
1
@razor Wenn Sie eine t2-Mikroinstanz verwenden (gut für die Vorproduktion oder kleine Projekte), ist der Preis so günstig, dass er ungefähr 5 bis 10 US-Dollar pro Monat beträgt, wie mein Speicher im vorherigen Projekt. Das Detail hier aws.amazon.com/ec2/pricing
Hieu Pham
und Heroku wird viel teurer sein? (2 mal?) Bei ähnlicher Verwendung? Ich kenne die Preisseiten, aber es ist schwer zu berechnen / sich vorzustellen, wie viel CPU-Leistung eine so einfache App benötigt oder wie viel DB nach einem Monat verbraucht wird (DB wird ziemlich klein sein)
Rasiermesser
27

Die vorhandenen Antworten sind weitgehend zutreffend:

  • Heroku ist sehr einfach zu verwenden und bereitzustellen, kann einfach für die automatische Bereitstellung eines Repositorys (z. B. GitHub) konfiguriert werden, verfügt über viele Add-Ons von Drittanbietern und berechnet mehr pro Instanz.

  • AWS bietet eine größere Auswahl an Erstanbieter-Diensten zu wettbewerbsfähigen Preisen, einschließlich DNS, Lastenausgleich, kostengünstiger Dateispeicherung und Unternehmensfunktionen wie die Möglichkeit, Sicherheitsrichtlinien zu definieren.

Für die tl; dr springe zum Ende dieses Beitrags.

AWS ElasticBeanstalk ist ein Versuch, eine Heroku-ähnliche Plattform für die automatische Skalierung und einfache Bereitstellung bereitzustellen. Da es EC2-Instanzen verwendet (die automatisch erstellt werden), können EB-Server alles tun, was jede andere EC2-Instanz kann, und es ist billig zu betreiben.

Die Bereitstellung mit EB ist sehr langsam. Die Bereitstellung eines Updates kann pro Server 10 bis 15 Minuten dauern, und die Bereitstellung in einem größeren Cluster kann den größten Teil einer Stunde dauern - im Vergleich zu nur Sekunden für die Bereitstellung eines Updates auf Heroku. Bereitstellungen in EB werden ebenfalls nicht besonders nahtlos abgewickelt, was zu Einschränkungen beim Anwendungsdesign führen kann.

Sie können alle Dienste, die ElasticBeanstalk hinter den Kulissen verwendet, verwenden, um Ihr eigenes maßgeschneidertes System zu erstellen (mit CodeDeploy, Elastic Load Balancer, Auto Scaling Groups - und CodeCommit, CodeBuild und CodePipeline, wenn Sie all-in gehen möchten), aber Sie können definitiv ein gutes Geld ausgeben Ein paar Wochen, in denen es das erste Mal eingerichtet wird, da es ziemlich kompliziert und etwas kniffliger ist, als nur Dinge in EC2 zu konfigurieren.

AWS Lightsail bietet eine Hosting-Option zu einem wettbewerbsfähigen Preis, hilft jedoch nicht bei der Bereitstellung oder Skalierung - es ist wirklich nur ein Wrapper für das EC2-Angebot (kostet aber viel mehr). Sie können bei der Ersteinrichtung automatisch ein Bash-Skript ausführen. Dies ist eine nette Geste, aber teuer im Vergleich zu den Kosten für die Einrichtung einer EC2-Instanz (die Sie auch programmgesteuert ausführen können).

Einige Gedanken zum Vergleichen (um zu versuchen, die Fragen zu beantworten, wenn auch auf Umwegen):

  1. Unterschätzen Sie nicht, wie viel Arbeit die Systemadministration kostet, einschließlich der Aktualisierung aller installierten Elemente mit Sicherheitspatches (und gelegentlichen Betriebssystemaktualisierungen).

  2. Unterschätzen Sie nicht, welchen Nutzen die automatische Bereitstellung, die automatische Skalierung sowie die Bereitstellung und Konfiguration von SSL haben.

    Die automatische Bereitstellung beim Aktualisieren Ihres Git-Repositorys ist mit Heroku mühelos. Es ist nahezu augenblicklich und elegant, sodass es für Endbenutzer keine Ausfälle gibt. Es kann so eingestellt werden, dass es nur aktualisiert wird, wenn die Tests / die kontinuierliche Integration erfolgreich sind, sodass Sie Ihre Site nicht beschädigen, wenn Sie fehlerhaften Code bereitstellen.

    Sie können ElasticBeanstalk auch für die automatische Bereitstellung verwenden. Seien Sie jedoch darauf vorbereitet, eine Woche damit zu verbringen, dies beim ersten Mal einzurichten. Möglicherweise müssen Sie die Art und Weise ändern, in der Sie Assets (wie CSS und JS) bereitstellen und erstellen, um mit der Art und Weise zu arbeiten, wie ElasticBeanstalk Bereitstellungen oder Erstellungslogik handhabt in Ihre App, um Bereitstellungen zu handhaben.

    Beachten Sie bei der Schätzung der Kosten, dass Sie für eine nahtlose Bereitstellung ohne Ausfall von EB mehrere Instanzen ausführen müssen - EB stellt Updates für jeden Server einzeln bereit, damit Ihr Service nicht beeinträchtigt wird -, während Heroku einen neuen Prüfstand für Sie erstellt und nur veraltet Der alte Dienst wird bearbeitet, bis alle Anforderungen an ihn bearbeitet wurden (und löscht ihn dann).

    Interessanterweise können die Hosting-Kosten für den Betrieb mehrerer Server mit EB günstiger sein als für eine einzelne Heroku-Instanz, insbesondere wenn Sie die Kosten für Add-Ons berücksichtigen.

Einige andere Fragen, die nicht speziell gestellt, aber durch andere Antworten aufgeworfen wurden:

  1. Die Verwendung eines anderen Anbieters für Produktion und Entwicklung ist eine schlechte Idee.

    Ich schaudere, dass die Leute dies vorschlagen. Während Code im Idealfall auf jeder vernünftigen Plattform einwandfrei ausgeführt werden sollte, damit er so portabel wie möglich ist, variieren die Softwareversionen auf jedem Host erheblich. Nur weil Code im Staging ausgeführt wird, bedeutet dies nicht, dass er in der Produktion ausgeführt wird (z. B. Major Node.js / Ruby / Python / PHP / Perl-Versionen können sich in einer Weise unterscheiden, die Code inkompatibel macht, häufig in stiller Weise, die möglicherweise nicht abgefangen wird, selbst wenn Sie eine angemessene Testabdeckung haben.

    Eine gute Idee ist es, Heroku für Prototypen, kleinere Projekte und Microsites zu nutzen, damit Sie Dinge schnell erstellen und bereitstellen können, ohne viel Zeit in Konfiguration und Wartung zu investieren.

    Berücksichtigen Sie bei dieser Entscheidung unbedingt die Kosten für die Ausführung von Produktions- und Vorproduktionsinstanzen, und vergessen Sie dabei nicht die Kosten für die Replikation der gesamten Umgebung (einschließlich Dienste von Drittanbietern wie Datenspeicher / Add-Ons, Installation und Konfiguration von SSL usw.). .

  2. Seien Sie bei der Verwendung von AWS vorsichtig mit vorkonfigurierten AWS-Instanzen von Anbietern wie Bitnami - sie sind ein Sicherheitsalptraum. Sie können standardmäßig viele notorisch anfällige Anwendungen verfügbar machen, ohne dies in der Beschreibung zu erwähnen.

    Verwenden Sie stattdessen nur eine gut unterstützte Mainstream-Distribution wie Ubuntu oder Debian (oder CentOS, wenn Sie RPM-Unterstützung benötigen).

    Hinweis: Das Amazon-Angebot verfügt über eine eigene Distribution namens Amazon Linux, die RPM verwendet, jedoch EC2-spezifisch ist und von Open-Source-Software von Drittanbietern weniger gut unterstützt wird.

  3. Sie könnten auch eine EC2 - Instanz auf AWS - Setup (oder Lightsail) und configure mit so etwas wie flynn oder dokku auf sie - auf dem Sie dann einfach mehrere Standorte bereitstellen könnte, die es wert sein kann , wenn Sie eine Menge von Dienstleistungen erhalten oder sein wollen in der Lage, neue Dinge leicht zu spinnen. Die Einrichtung ist jedoch nicht so automatisch wie die Verwendung von Heroku, und Sie können am Ende viel Zeit mit der Konfiguration und Wartung verbringen (bis zu dem Punkt, an dem ich festgestellt habe, dass die Bereitstellung mithilfe von Amazon Clustering und Docker Swarm einfacher ist als die Einrichtung; YMMV).

Ich habe AWS EC-Instanzen (allein und in Clustern), Elastic Beanstalk und Lightsail sowie Heroku gleichzeitig verwendet, je nach den Anforderungen des Projekts, an dem ich arbeite.

Ich hasse es, Zeit mit der Konfiguration von Diensten zu verbringen, aber meine Heroku-Rechnung würde Tausende pro Jahr betragen, wenn ich sie für alles verwenden würde und AWS einen Bruchteil der Kosten berechnet.

tl; dr

Wenn Geld nie ein Problem wäre, würde ich Heroku für fast alles verwenden, da es eine enorme Zeitersparnis bedeutet - aber ich würde AWS immer noch für kompliziertere Projekte verwenden wollen, bei denen ich die Flexibilität und die erweiterten Services benötige, die Heroku nicht bietet.

Das ideale Szenario für mich wäre, wenn ElasticBeanstalk eher wie Heroku funktioniert - dh mit einer einfacheren Konfiguration und einem schnelleren und besseren Bereitstellungsmechanismus.

Ein Beispiel für einen Dienst, der fast so ist, ist now.sh , , der tatsächlich AWS hinter den Kulissen verwendet, aber Bereitstellungen und Clustering genauso einfach macht wie auf Heroku (mit automatischem SSL, DNS, ordnungsgemäßen Bereitstellungen, supereinfacher Cluster-Einrichtung und Verwaltung).

Ich habe es ziemlich oft sowohl für die Node.js-App als auch für Docker-Image-Bereitstellungen verwendet. Die größte Einschränkung besteht darin, dass die Instanzen gemeinsam genutzt werden (was sich in ihren geringeren Kosten widerspiegelt) und derzeit keine Option zum Kauf dedizierter Instanzen besteht. Das Open Source-Bereitstellungstool "Jetzt" kann jedoch auch für die Bereitstellung auf dedizierten Instanzen in AWS sowie in Google Cloud und Azure verwendet werden.

Iain Collins
quelle
8

Es war ein bedeutender Prozentsatz unseres Geschäfts, Menschen von Heroku zu AWS zu migrieren. Beides hat Vorteile, aber nach einer Weile wird es bei Heroku chaotisch ... sobald Sie ein bestimmtes Maß an Komplexität benötigen, ist es mit Herokus Einschränkungen nicht mehr einfach, es aufrechtzuerhalten.

Es gibt jedoch zunehmend Optionen, um die Benutzerfreundlichkeit von Heroku und die Flexibilität von AWS zu nutzen, indem Sie mit großartigen Frameworks / Tools auf AWS arbeiten.

Kendall Miller
quelle
Können Sie eine Preisschätzung abgeben? Ich muss Java Web App auf Tomcat veröffentlichen (Spring Framework, angleJS usw.). Lassen Sie uns über 1000 Benutzer pro Monat nachdenken, die jeweils 5 Minuten lang die App verwenden. Was ist der geschätzte Preis? (wie sehr geringe Nutzung, aber Verfügbarkeit für den ganzen Monat)
Rasiermesser
3

Lustige Sache ist, dass Heroku tatsächlich AWS im Backend verwendet. Es nimmt Ihnen den gesamten Aufwand und erledigt das Architekturmanagement auf EC2 für Sie. (Bekam dieses Wissen von einem leitenden Ingenieur einer großen Firma während eines Interviews)

Saurav Prakash
quelle
1

Gut! Ich beobachte, Heroku ist berühmt für angehende und neugeborene Entwickler, während AWS die Entwicklerpersönlichkeit weiterentwickelt hat. DigitalOcean spielt auch auf diesem Gebiet eine wichtige Rolle. Cloudways hat es sehr einfach gemacht, einen Lampenstapel mit einem Klick auf DigitalOcean und AWS zu erstellen. Es ist weitaus besser, alle Dienste und Pakete mit einem Klick zu aktualisieren, als alles manuell zu erledigen.

Sie können dies hier vollständig überprüfen: https://www.cloudways.com/blog/host-php-on-aws-cloud/

Shahroze Nawaz
quelle
1

Nun, Heroku verwendet AWS im Hintergrund. Alles hängt von der Art der Lösung ab, die Sie benötigen. Wenn Sie ein Core-Linux- und Entwickler-Typ sind, haben Sie keine Angst davor, VM von Grund auf neu zu erstellen, wie z. B. die Auswahl von Ami-Optionen für Palcement usw., können Sie sich für AWS entscheiden. Wenn Sie Dinge auf Oberflächenebene tun möchten, ohne diese Nettigritien zu haben, können Sie mit Heroku gehen.

Prasoon
quelle
0

Amazon Web Services (AWS) bietet zahlreiche Dienste von IaaS bis PaaS mit einer garantierten Haltbarkeit von 99,9999999% und Verfügbarkeit von Daten und Infrastruktur. AWS bietet Infrastrukturautomatisierung sowie verschiedene Tools, mit denen Entwickler ihren Anwendungsbereitstellungsprozess weiterleiten können.

Auf der anderen Seite ist Heroku nur PaaS, das Dienste zur Verwaltung Ihrer Plattform in der Cloud anbietet. Bei AWS steht es nirgendwo, ob es sich um Infrastruktur oder Sicherheit handelt.

Prash
quelle
6
Zitat benötigt für: "Es steht nirgendwo bei AWS, ob es sich um Infrastruktur oder Sicherheit handelt."
pdoherty926
0

Manchmal frage ich mich, warum Leute AWS mit Heroku vergleichen. AWS ist ein IAAS (Infrastructure as a Service), das deutlich macht, wie robust und berechnend das System ist. Heroku hingegen ist nur ein SAAS, es ist im Grunde nur ein Bruchteil der AWS-Services. Warum sollten Sie also Probleme mit der Einrichtung von AWS haben, wenn Sie Ihr erstes Produkt mit Heroku an Prime senden können?

Heroku ist kostenlos, einfach und leicht, fast alle Arten von Stacks im Web bereitzustellen. Heroku wurde speziell entwickelt, um alle Probleme beim Versand Ihrer Anwendung an einen Live-Server in kürzester Zeit zu umgehen.

Trotzdem möchten Sie Ihre Anwendung möglicherweise mithilfe eines der Tutorials beider Parteien bereitstellen und vergleichen

AWS DOCS und Heroku Docs

Sammy Joseph
quelle
0

Obwohl sowohl AWS als auch Heroku Cloud-Plattformen sind, unterscheiden sie sich, da AWS IaaS und Heroku PaaS ist

Gopinath J.
quelle
2
Das ist nicht richtig. AWS bietet sowohl IAAS- als auch PAAS-Angebote an.
Glenn Bech
0

Heroku ist wie eine Teilmenge von AWS. Es ist nur eine Plattform als Service, während AWS als alles und auf jeder Ebene implementiert werden kann.

Die Implementierung hängt von den Geschäftsanforderungen ab. Wenn es in eines passt, verwenden Sie es entsprechend.

Krunal Barot
quelle