5 dumme Gründe, warum Sie Heroku nicht verwenden

Russell Smith ist Mitbegründer und CTO von Rainforest QA.

Wenn ich anderen CTOs und Ingenieuren sage, dass wir uns bei der Führung unseres Geschäfts stark auf Heroku verlassen, reagieren sie immer gleich: Warum? Warum nicht AWS? Machst du Witze? Haben Sie schon von Google Cloud gehört? Bist du ein Idiot?

Dies geschieht ohne Fehler. Mit. Aus. Scheitern. Das Argument lautet normalerweise ungefähr so: Warum mehr für ein PaaS bezahlen, wenn Sie es selbst auf Google oder AWS erstellen können - und es genau so haben, wie Sie es möchten? Zu dem sage ich: Poppycock. Diesen Menschen fehlen die wirklichen Vorteile von PaaS und vielleicht auch ein grundlegender wirtschaftlicher Sinn.

Wir verwenden Heroku seit Anfang 2012 intensiv bei Rainforest QA, um unseren automatisierten QS-Testdienst durchzuführen. Wir stellen fast alles in Heroku bereit - für Produktion, Staging und Qualitätssicherung für die meisten Apps. Es ist stabil, wirtschaftlich sinnvoll und passt genau zu unseren Bedürfnissen.

Hier sind die Hauptargumente, die ich gegen Heroku höre, und warum ich sie (meistens) für trügerisch halte.

# 1. Heroku ist NIH (hier nicht erfunden)

Wenn es von unserem Team nicht liebevoll zusammengesetzt wird, kann es nicht perfekt für uns sein, daher ist es nicht gut genug. Heutzutage wird standardmäßig AWS (das übrigens auch NIH ist) verwendet und dann Mitarbeiter eingestellt, um die derzeit angesagte Infrastruktur meines Startups als Schneeflocke zusammenzustellen. Diese Denkweise weist mehrere Mängel auf:

  • Ihrem Engineering-Team fehlt die Zeit, um die Fähigkeiten zu erlernen und die Arbeit ordnungsgemäß zu erledigen - es sei denn, Sie stellen zusätzliche Mitarbeiter ein, die äußerst klug sind.
  • Sie können keine zusätzlichen Leute einstellen, die extrem klug sind. Großartige Leute sind sehr teuer, schwer zu finden und arbeiten wahrscheinlich schon woanders.
  • Sie müssen selten nur einmal eine Infrastruktur aufbauen. Wenn sich Ihre Anforderungen ändern, müssen Sie alles neu erstellen.
  • Ihre benutzerdefinierte Infrastruktur wird erst dann getestet, wenn Sie sie im Kampf getestet haben. Oder besser gesagt, bis Ihre Kunden und Ingenieure haben. Setzen Sie sie nicht durch. Tu es einfach nicht.

Wenn Sie der Meinung sind, dass Sie die besten Leute einstellen können, um Ihre Infrastruktur zusammenzubauen, machen Sie sich selbst etwas vor. Aber selbst wenn Sie könnten, bringt die Zeit, die Sie mit dem Aufbau dieser Infrastruktur verbringen, Ihr Produkt selten, wenn überhaupt, voran (es sei denn, die Infrastruktur selbst ist ein zentraler Bestandteil Ihres Angebots).

Deshalb bevorzuge ich meine Route:

  • Mit Heroku können wir uns auf das konzentrieren, was wir am besten können - den Aufbau einer automatisierten QS-Plattform.
  • Es kann tatsächlich eine gute Sache sein, wenn Ihnen einige architektonische Einschränkungen auferlegt werden. Sie befreien Sie von Wahl- und Analyse-Lähmungen.
  • Heroku fügt ständig Funktionen hinzu, die unser Produkt tatsächlich voranbringen.

Hier sind nur einige der Heroku-Funktionen, die wir lieben:

  • Hochverfügbare Postgres
  • Die Verschlüsselung für Postgres ist standardmäßig aktiviert
  • Protokollabläufe (eine Standardmethode zum Sammeln und Weiterleiten von Protokollen)
  • Überprüfen Sie Apps (die den Code in jeder GitHub-Pull-Anfrage in einer vollständigen Einweg-App auf Heroku ausführen).
  • Der Heroku-Add-On-Marktplatz

Eine wichtige Neuerung, die kürzlich erwähnt werden sollte, ist Heroku Shield, mit dem wir einen BAA (Business Associate Agreement für HIPAA-Konformität von Salesforce.com) erhalten. Es gibt einige Anlaufschwierigkeiten, aber wenn wir die HIPAA-Konformität selbst aufbauen würden, wären einige Ingenieure erforderlich Monat oder mehr Arbeit. Stattdessen bringen diese Ingenieure unser Produkt voran und machen unsere Kunden glücklicher.

# 2. PaaS ist zu teuer

Aber Heroku ist soooo teuer! Dies ist Herdendenken und ignoriert die Kosten für das Finden, Rekrutieren und Trainieren großartiger Entwickler, um Ihre Schneeflockeninfrastruktur aufzubauen und zu warten. Ganz zu schweigen von den Kosten für die Bindung dieser Personen, die Unterbringung in einem Büro und die Bereitstellung von Tischtennisplatten oder was auch immer nötig ist, um sie bei Laune zu halten.

Hinzu kommen die Opportunitätskosten für die Einstellung von Mitarbeitern in Entwicklungs- und Systemadministratorfunktionen anstelle der Produktentwicklung. Und diese Kosten steigen linear, wenn Ihr Unternehmen skaliert. Mit Heroku haben Sie sinkende Grenzkosten im Maßstab.

Und vergessen Sie nicht die zusätzlichen Kosten für Ihre mangelnde Konzentration. Wenn Sie sich mit Fragen der peripheren Infrastruktur befassen, konzentrieren Sie sich nicht darauf, Ihr Produkt zu verbessern.

Wenn Sie Heroku bezahlen, müssen Sie sich nicht darum kümmern, Ihre Infrastruktur aufzubauen und jederzeit verfügbar zu halten - und es kostet immer noch das Gleiche oder weniger als die Einstellung und Bindung dieser zusätzlichen Mitarbeiter.

#3. PaaS ist zu einschränkend

Aber ... aber ... meine Schneeflocke! Viele Leute denken, dass ihre Anwendung oder Architektur spezielle Anforderungen hat. In den meisten Fällen ist dies nicht der Fall - und wenn dies der Fall ist, sollte dies wahrscheinlich nicht der Fall sein. Ich bin jedoch bereit, einige legitime Gründe zu akzeptieren, aus denen Sie Heroku möglicherweise nicht verwenden können. Hier sind sie:

  • Sie benötigen Tonnen von CPU oder RAM. Heroku lässt sich nicht bis zu AWS skalieren und die Konfigurationen sind etwas weniger flexibel. Wenn Sie wirklich Tausende von Servern benötigen, ist AWS (oder sogar Bare Metal) möglicherweise wirtschaftlicher. Aber Heroku unterstützt einige ziemlich große Instanzen. Für die meisten Menschen sollte es mehr als genug sein.
  • Sie benötigen Bare-Metal-Server oder Spezialprozessoren. Wenn Sie maschinelles Lernen oder andere GPU-intensive Arbeiten ausführen, ist Heroku möglicherweise nicht geeignet. Sie können jedoch weiterhin einen hybriden Ansatz verfolgen, wie wir es tun. Wir verwenden Heroku, aber auch Bare-Metal-Server, um die beste Leistung für unsere Virtualisierungsplattform zu erzielen.
  • Sie benötigen Nicht-HTTP-RPC, z. B. gRPC. Eingehender Datenverkehr, der nicht WebSocket, HTTP oder HTTPS ist, wird heute vom Heroku-Router nicht unterstützt.
  • Sie können nicht innerhalb der unterstützten Anwendungsmodelle arbeiten. Wenn Sie beispielsweise Internode-Kommunikation benötigen, damit sich eine Gruppe von App-Servern für Erlang oder Elixir wie eine Gruppe verhalten kann, oder wenn Sie ein einzigartiges Routing-Setup benötigen, ist Heroku nichts für Sie.

Es kann einige andere Gründe geben, aber oft sind sie für Ihr Unternehmen nicht wesentlich. Wenn Sie Ihre Anwendung so gestalten können, dass sie in das Heroku-Modell passt, erhalten Sie viele Vorteile. Die wichtigste ist die Konsistenz zwischen den Anwendungen - von der Bereitstellung über die Überwachung, Protokollierung bis hin zur Skalierung.

# 4. Heroku macht kein Docker

Aber ich muss Docker haben! Ärgern Sie sich nicht mehr. Seit Anfang September können Sie Docker-Images für Heroku bereitstellen. Bereits zuvor hatte Heroku ähnliche Funktionen wie Docker, sodass Sie Container-Builds Ihrer App versenden können. Es stimmte nicht mit Docker-Funktion für Funktion überein, aber Sie können sich Heroku als gehostete, verwaltete Version von Docker vorstellen. In jedem Fall ist diese Sorge jetzt weg.

# 5. Heroku ist nicht sicher genug

Aber Heroku ist nicht sicher! LOL. Dies sollte kein Problem sein, es sei denn, Sie befinden sich in einer stark regulierten Branche wie dem Finanzwesen oder benötigen eine bestimmte Zertifizierung, die von Heroku nicht unterstützt wird. Es gibt keinen Grund zu der Annahme, dass Heroku bedeutend weniger sicher ist als AWS. Es hat ein ganzes Team, das sich der Verwaltung der Sicherheit seiner Plattform widmet. machst du? Außerdem werden Sie eine Menge einmaliger Entscheidungen treffen, während Sie Ihre eigene Infrastruktur rollen, von denen keine getestet wurde. Heroku hat diese Entscheidungen lange vor Ihnen getroffen und sie wurden in einem Ausmaß getestet, das sich die meisten Unternehmen nur vorstellen können.

Im Gegensatz zu Ihrer benutzerdefinierten Umgebung ist Heroku außerdem konsistent und einheitlich. Es hat klar definierte Grenzen, was bedeutet, dass Ihre Angriffsfläche kleiner wird. Das bedeutet auch, dass es leichter zu verstehen ist, sodass Sie weniger wahrscheinlich versehentlich etwas tun, das eine Sicherheitsanfälligkeit verursacht.

Übrigens lieben Ingenieure eine konsistente Bereitstellungsumgebung, und zwar aus allen möglichen Gründen, abgesehen von der Sicherheit. 

Letztendlich muss jedes Unternehmen die beste Entscheidung für sein Unternehmen und seine Kunden treffen. Aber denken Sie daran, diesen Kunden ist es egal, ob Sie sich auf einem hochmodernen, selbstgezogenen Kunstwerk oder einem Allzweck-PaaS befinden. Sie sorgen dafür, dass Ihr Service funktioniert, dass er sich im Laufe der Zeit verbessert und dass Sie nicht gehackt werden. Heroku hat sehr gut für uns gearbeitet, und es würde wahrscheinlich für Sie.

- -

Das New Tech Forum bietet einen Ort, an dem Sie neue Unternehmenstechnologien in beispielloser Tiefe und Breite erkunden und diskutieren können. Die Auswahl ist subjektiv, basierend auf unserer Auswahl der Technologien, die wir für wichtig und für die Leser von größtem Interesse halten. akzeptiert keine Marketingmaterialien zur Veröffentlichung und behält sich das Recht vor, alle eingebrachten Inhalte zu bearbeiten. Senden Sie alle Anfragen an  [email protected] .