Eine kleine Historie
James Lindenbaum, Orion Henry und Adam Wiggins gründeten 2007 Heroku und wurden bereits 2010 von Salesforce aufgekauft. Der Unternehmenssitz, wie kann es anders sein, ist in San Francisco. Zu Beginn unterstützte die Cloud-Platform nur Anwendungen die mit RubyOnRails geschrieben wurden. Um das Jahr 2010 gab es einen regelrechten RubyOnRails Boom und Heroku profitierte natürlich davon. Laut des Unternehmens halfen sie zum damaligen Zeitpunkt bereits Millionen von Programmierern bei der Erstellungen von Apps auf Amazon Web Services (AWS). Seit der Übernahme von Salesforce integrierten sie immer mehr cloud-basierte Services, unterstützten mehr und mehr Programmiersprachen und änderten nicht nur einmal Preisstruktur und Aussehen der Benutzeroberfläche.
Screenshot Heroku.com
Funktionalitäten
Heroku ist anwendungsortientiert
Die Hauptzielgruppe sind Programmierer, Programmier-Teams und Softwareentwicklungsfirmen die sich nicht auf die Bereitstellung und Einrichtung von Server Infrastrukturen kümmern, sondern sich auf die Entwicklung von Anwendungen konzentrieren möchten. Die cloud-basierte Umgebung umfasst Benutzer-Management, Entwicklung, Testen, Qualitätsmanagement und Handhabung von Test- und Produktivsystemen.
Einfach Skalierung von Apps
Ein großer Vorteil von Heroku ist die Möglichkeit per Mausklick weitere Ressourcen (dyno) für eine Anwendung dazu zu buchen. Eine Auto-Skalierung von Dynos ist ebenfalls möglich und spart so Kosten.
Screenshot selection of dynos
Benutzerfreundliche Umgebung
Mittlerweile unterstützt Heroku viele verschiedene Programmiersprachen und Integrationen. So kann praktisch jeder Programmierer das passende Set mit Programmiersprache, Datenbank und Services für die Anwendung aussuchen. Herausragend gegenüber der Konkurrenz sind auch die Dokumentationen zu den einzelnen Funktionen und Erstellung von Anwendungen für z.B. RubyOnRails, Spring oder die Einrichtung und Benutzung einer Datenbank wie z.B. Postgres oder MongoDB.
Sicheres und nachvollziehbares Deployment
Heroku benutzt für das deployment von Anwendungen GIT Versionskontrolle. Dadurch wird ein sicherer und nachvollziehbarer Deployment Prozess bereitgestellt, der dem Entwicklungs-Workflow gerecht wird.
Test- und Produktivsysteme (Staging & Production)
Heroku vereinfacht die Handhabung von Test- und Produktivsystemem (Staging & Production). Das Testsystem dient dabei als deployment Server für Entwickler und ebenfalls als Testsystem für die Qualitätssicherung. Der aktuelle Stand des Testsystems lässt sich dann per Mausklick auf das Produktivsystem übertragen.
Kontinuierliche Integration (Continuous Integration)
Ein weiterer nützlicher Service is die Continuous Integration für Anwendungen. Seit der Einrichtung haben wir in unserem Team bereits viel Zeit und Fehler eingespart! Auf einfache Weise lassen sich GitHub Repository, Codeship oder andere CI-Services mit der Deployment-Pipline (Staging & Production) verbinden, visuell darstellen und vereinfacht den allgemeinen Prozess.
Heroku Marktplatz
Heroku ist mittlerweile zu einem der größten Marktplätze für Softwareentwicklungs-Services geworden. Viele Dienste lassen sich per Mausklick installieren und mit einem kleinen Skript für die Anwendung integrieren. Die Services umfassen verschiedene Datenbanken, Überwachung-Tools, Logging-Services, Email/SMS Versand, Caching, Fehlerbehandlung, Content Management Systeme (CMS), Suchfunktionen, Tools für Metriken und Analysen, Netzwerk-Services, Fehlermeldungen und Benachrichtigung, Management von Benutzern, Sicherheit, Bild- und Videoverarbeitung etc.
Screenshot heroku Marketplace
Heroku Enterprise
Heroku hat mittlerweile eine Umgebung geschaffen, in der sich auch größere Unternehmen wohlfühlen. Heroku Enterprise hilft Teams dabei Anwendungen in Kollaboration zu entwickeln und bringt eine mehrstufiges Benutzermanagement mit. Mit Heroku Enterprise genießt man außerdem einen besseren Support, der ansonsten bei der Vielzahl an Entwicklern leider etwas zu kurz kommt.
Natürlich haben die vielen Vorteile bei der Benutzung der Plattform auch seine Nachteile. Ein großer Nachteil ist der Kostenfaktor! Bis zu einem bestimmten Level kann man den Hobby Dyno von Heroku nutzen mit sehr geringen Kosten von 7$/Monat. Möchte man aber bereits ein ordentliches Testsystem bereitstellen mit größerer Postgres-Datenbank und 1-2 externe Services, dann können die Kosten im Monat schnell auf 50-80$/Monat klettern. Parallel zum Testsystem läuft natürlich noch das Produktivsystem mit einem ähnlichen Preis für Dyno(s) und Datenbank pro Monat.
Ein weitere Nachteil ist der abgeschlossene Bereich der Anwendung, zu dem man keinen Zugriff per SSH erhält. Man muss also komplett auf die Einstellungen und Installationskripte von Heroku und Drittanbietern vertrauen. (Vielleicht aber auch nicht so schlecht, da sonst Entwickler ohne entsprechendes KnowHow ständig ihre Apps abschießen). Mit Heroku-CLI kann man sich zumindest auf einer Art Konsole für seine App bewegen und der Aufbau einer Verbindung zu einer Datenbank ist ebenfalls möglich.
Wir denken, dass Heroku die ideale Plattform für alle ist, die es sich nicht leisten können entsprechende Kompetenzen im Bereich der System-Administration aufzubauen oder einzukaufen. Sollten jedoch die monatlichen Kosten der App sich einem Gehalt eines System-Administrators nähern, dann halten wir es für sinnvoll eine eigene Infrastruktur aufzubauen.
Gibt es bereits einen System-Administrator im Team oder in ihrem Unternehmen, dann ist die Benutzung einer eigenen Serverumgebung für Ihre Anwendung wohl eher die richtige Wahl. Dennoch sollten Sie Heroku ihren Server-Admins vorführen und die Anwendungen testweise entwickeln und deployen lassen. Auch wenn man den Dienst am Ende nicht benutzt, kann man jedoch in Sachen Benutzerfreundlichkeit einiges von Heroku lernen.
Welche Alternativen gibt es zu heroku?
Nicht nur Salesforce hat das potential von cloud-basierten Entwicklungsumgebungen erkannt. Seit dem Start von Heroku bis heute (2017) entwickeln verschiedene Firmen eine „Platform-as-a-Service" (Paas). Je nach Ausrichtung der Community oder des Unternehmens wird ein einfacher Workflow für die Entwicklung von Apps versprochen. Meist gibt es eine Vielzahl an Integrationsmöglichkeiten von verschiedenen Services. Hier eine kleine Übersicht von Alternativen zu heroku:
Heroku Alternative:
OpenShift - Open Source, Auto-skalierung, cloud-basiert, git
DigitalOcean - SSD Cloud-Server, dedizierter IP und Root-Zugriff (zum Kostenrechner)
Google App Engine - Deploy von Apps in Googles Datenzentren und Infrastruktur, früher Hauptfokus Java
Microsoft Azure - Einfaches hosting und Skalierung mit Microsoft Azure und SQL Azure (zum Kostenrechner)
Nanobox - Starke Konkurrenz zur Heroku Umgebung mit weniger Kosten und ähnlichen Funktionen
Cloudfoundry - Open Source, Paas für Java, Ruby, Python und Node.js
CleverCloud - Sichere Infrastruktur, Auto-Skalierung, faire Kostenstruktur und Integration von vielen Services