Kostenlose Analyse

appero mytime-fx goes Heroku

Autor_factory42

Warum mich der Umzug unserer Zeiterfassung zum Heroku-Fan gemacht hat

mytime-fx in Heroku

Das beste Feedback, welches man als Softwareentwickler zu einem Produkt bekommen kann ist - keins. Software muss in erster Linie funktionieren und zwar ohne dass man darüber nachdenken muss wie. Das spiegelt sich einerseits im Interface-Design und guter Usability wider, andererseits in der nahtlosen Kommunikation verschiedener IT-Systeme.

Um eine neue Idee einer Applikation im realen Leben auszuprobieren, ist in den meisten Fällen softwareseitig schnell ein lauffähiger Prototyp erstellt, mit welchem man Kommunikation und Funktion testen kann. Es gehört zum Handwerkszeug der jeweiligen Entwickler, für ihre Programmiersprache eine lokale Testumgebung (Localhost) aufzusetzen und loszulegen. Einfach mal ranklotzen, Pizzakartons stapeln, im Tunnel sein.

Keep the flow going

Nach der anfänglichen Euphorie, der neuen App-Idee bereits Leben eingehaucht zu haben (und man das erste Lob vom Chef eingeheimst hat), will man natürlich auch den Rest der Welt mit seiner geistigen Schöpfung befruchten. Leider ist man schnell mit Problemen konfrontiert, welche mit der neuen Software selbst weniger zu tun haben:

Wo deployen wir unsere App? Hosten wir einen eigenen Server? Wer kümmert sich um die Pflege und spielt Sicherheitsupdates ein? Kann unser Server skalieren wenn wir (erwartungsgemäß :-) riesigen Erfolg mit unserer Anwendung haben? Wie sieht unser Deployment-Prozess aus?

Zugegeben, jeder Entwickler hat seine eigenen Vorlieben und Stärken im kompletten Entwicklungsprozess, aber mich haben oben genannte Fragestellungen eher abgeschreckt. Ich konzentriere mich lieber auf die Umsetzung und Verbesserung inhaltlicher Themen und möchte mich weniger mit der Administration von Servern beschäftigen. Auch wenn man nach Industriestandards geht und beispielsweise einen Apache Webserver, einen Apache Tomcat sowie ein SSL-Zertifikat auf einer Cloud-Instanz wie Amazon EC2 installiert, benötigt es doch einiges an Zeit und Wissen, um den Anforderungen an Sicherheit, Verfügbarkeit und Skalierbarkeit gerecht zu werden:

Muss der Apache2-Daemon als root laufen? Über welche Ports wird der Redirect auf den Tomcat ausgeführt? Ist unsere Version von OpenSSL anfällig für den Heartbleed-Bug? Ist die Firewall richtig konfiguriert? Warum haben wir einen SIGTERM bekommen - war das eine DDoS Attacke?

Heroku LogoUnd genau hier kommt Heroku ins Spiel: Serverumgebungen für Nicht-Server-Spezialisten! Es ist unglaublich einfach, eine lokale Anwendung mit Heroku ins Netz zu bringen: kostenlosen Heroku Account anlegen - eine neue App mit dem Namen des Projektes anlegen - Source-Code mit Hilfe von Git nach Heroku committen - sich freuen!


Das ganze funktioniert für die gängigen Sprachen PHP, Java, Node.js, Python, Ruby, Clojure, Go, Scala & Play. Sobald man seinen Code nach Heroku pusht, erkennt ein Compiler, um welches Projekt es sich handelt. Findet dieser z.B. eine index.php oder eine pom.xml, sind das eindeutige Hinweise auf ein PHP- bzw. auf ein Java-Projekt, welches mit Maven erstellt wurde. Daraufhin wird die nötige Laufzeitumgebung bereitgestellt und man bekommt eine öffentliche URL für seine Anwendung. Man kann quasi im Handumdrehen auf einer “echten” Serverumgebung - natürlich mit zeitgemäßer TLS 1.2 Verschlüsselung - testen.

Tausche root-Rechte gegen Toolbox

Gerade die ersten Schritte eines Projektes sind mit der kostenlosen Free-Instanz wunderbar zu erledigen. Auch für private Projekte, bei denen mal eben ein Endpoint gebraucht wird, um die Wetter-Daten seiner Arduino-Installation bei sich am Balkon zu tracken, ist Heroku perfekt geeignet. Für den Produktiv-Einsatz werden die Kosten sekundengenau nach den genutzten Ressourcen abgerechnet. Über einen Scheduler könnte man die verfügbare Performance gezielt steuern und muss so keine überhöhten monatlichen Fixkosten einkalkulieren.

Administrieren kann man seine Anwendung sowohl über eine grafische Oberfläche als auch über die Command Line, um schnell Änderungen vorzunehmen - beispielsweise um die bereitgestellte Performance zu erhöhen und die Last auf mehrere so genannte Dynos zu verteilen. Ein komplett integrierter Marktplatz stellt Add-Ons zur Verfügung, die den Live-Betrieb der Anwendung erleichtern: egal ob Monitoring, Auswertung von Performance-Daten oder eine fertige Lösungen zu Datenbanken, Dokumentenerzeugung oder E-Mail-Versand - alles ist nur ein paar Mausklicks entfernt.

Heroku Dashboard

Heroku bietet nicht nur Platform as a Service (PaaS), sondern ist auch für Salesforce-Kunden sehr interessant: mit Heroku Connect lassen sich Datensätze aus Salesforce in der eigenen Anwendung nutzen. Diese werden in Echtzeit zwischen den Systemen synchronisiert und in einer lokalen Postgres Datenbank gespeichert. Somit sind umfangreiche SQL-Operationen möglich, ohne gegen die API-Limits zu laufen!

Sicherlich gibt es auch Use Cases, welche auf Heroku nicht ohne Weiteres umgesetzt werden können - allerdings habe ich noch keine gefunden! Durch individuelle Buildpacks lassen sich alle Dependencies eines Projektes wie Scripts, Services, Binaries oder Frameworks individuell in der Laufzeitumgebung deployen. Auch die Entwickler-Dokumentation ist hervorragend, so dass ich für alle Herausforderungen bei der Umstellung des mytime-fx Services innerhalb kürzester Zeit eine Lösung gefunden habe.

Meinen eingangs erwähnten Anspruch an Software - einfach zu tun, wofür sie gedacht ist - komplettieren wir nun mit dem Umzug auf Heroku auf fast tragische Weise: Für unsere Kunden hat sich in der Nutzung von mytime-fx rein gar nichts geändert. Rein egoistisch gesehen war es die beste Entscheidung: weder um die Erneuerung unseres SSL-Zertifikates noch um das Einspielen regelmäßiger Sicherheits-Updates muss ich mich kümmern - Heroku läuft einfach.
Themen: Heroku mytime-fx Zeiterfassung