Vor einigen Tagen habe ich um eure Meinung gebeten und wollte wissen, welche Technologien ihr einsetzen würdet. Viele Antworten habe ich erhalten und möchte in diesem Beitrag meine Entscheidung bekannt geben und diese auch etwas ausführen.

Hier nochmals die Anforderungen, die ich im verlinkten Beitrag definiert hatte:

  • Angedacht sind Apps für iOS, Android und Windows Phone (Benachrichtigungen sind wichtig; Zugriff auf Kamera, Mikrofon etc. wird nicht benötigt)
  • Zugriff via Web soll ebenfalls möglich sein
  • Daten werden über APIs von Drittanbietern abgegriffen
  • Eigene API für Einstellungen, Daten etc.
  • Riesige Datenmengen sind anfangs nicht zu erwarten

Aus meinen Gedanken und den vielen erhaltenden Antworten habe ich mich nun für die Technologien/Frameworks/Libraries etc. entschieden, die ich einsetzen möchte. Vermutlich bin ich zu einer Entscheidung gelangt, die so einige wohl nicht erwartet haben.

Backend

Am Backend werden sich auf jeden Fall REST-Services befinden. Umsetzen wollte ich diese anfangs mit Go, wollte dann aber gemäß dem Motto „Schuster bleib bei deinen Leisten“ weiter auf .NET setzen. Aber auch das habe ich verworfen. So wird am Backend Node.js eingesetzt werden. Erste Erfahrungen damit habe ich durch das eine oder andere Projekt damit bereits sammeln können.

Von Azure, Amazon AWS und Co. bin ich wieder abgekommen, da ich mich (im Moment) zu sehr an diese Services binden würde. Das mag irgendwann eine Option sein, gestartet wird jedoch ohne.

Als DBMS werde ich anfangs – so wie es aussieht – MySQL einsetzen.

Warum habe ich .NET verworfen?

Ich mag .NET und auch das Ökosystem. Aber irgendwie bin ich mit der Idee zu .NET zu greifen nicht ganz warm geworden. Wenn dann hätte ich zu ASP.NET 5 gegriffen, aber das ist noch nicht weit genug fortgeschritten, um ein Projekt möglichst flott produktiv zu bekommen. Davon abgesehen ist das Thema Hosting hierbei nicht einfacher. Aber das bedeutet ja nicht, dass es nicht vielleicht doch bei einem anderen Projekt eine Chance bekommt.

Frontend

Für mobile Endgeräte werde ich Ionic und Apache Cordova einsetzen. Damit kann ich meine Ziele wohl sehr schnell umsetzen und kann zudem Erfahrung mit den genannten Frameworks sammeln. Dass hier AngularJS mit von der Partie ist, ist natürlich positiv, da ich damit ganz gute Erfahrungen habe.

Begründung

Mir wird es zunehmend egal, auf welcher Plattform ich mich bewege. Sie muss mir zusagen und das was ich machen möchte schnell und zuverlässig erledigen. Das kann sich dann schon auch einmal (kurzfristig) ändern. Daher möchte ich eine Entwicklungsumgebung, die auf jeder Plattform ohne Probleme laufen kann. Mit dem gewählten Stack bringe ich in gewissen Bereichen Erfahrung mit, habe aber auch sehr viel zu lernen (warum ich das schlussendlich auch mache).

Ich bin auf jeden Fall schon gespannt, wohin die Reise tatsächlich gehen wird.

Zum Schluss noch ein dickes Dankeschön an alle die mir (egal über welchen Kanal) Feedback gegeben haben.

Danke Community!

Über den Autor

Norbert Eder

Ich bin ein leidenschaftlicher Softwareentwickler und Fotograf. Mein Wissen und meine Gedanken teile ich nicht nur hier im Blog, sondern auch in Fachartikeln und Büchern.

6 Kommentare

  • …wenn Du node.js einsetzen möchtest, würde ich Dir dringend einen Blick auf MongoDB raten – weg von MySQL. Die Kombination ist einfach unschlagbar und erleichtert die Entwicklung ungemein! Als Grundlage ist der MEAN-Stack zu empfehlen: mean.io/

    Grüße,
    Christian

    • @Christian: Danke für den Hinweis. Ich werde mir das noch einmal durch den Kopf gehen lassen und die Datenbankseite doch näher betrachten. Das hab ich ehrlich gesagt hinten angestellt und wollte hier auf Bekanntes zurück greifen.

  • @Christian: MongoDB harmoniert mit Node.js wirklich hervorragend (ich nutze momentan Mongoose). Aber die Entscheidung pro/contra NoSQL will schon gut überlegt und an mehr Kriterien festgemacht werden, als nur daran, was beliebt ist. NoSQL gibt’s ja nicht geschenkt.

    • Absolut…ich wollte auch nicht auf das Thema „Beliebtheit“ ansprechen. Ich hab selbst sehr gute Erfahrungen mit MongoDB / mongoose (und dem „Plugin-System“) gemacht. Wenn z.B. ACID über mehrere Datensätze/Dokumente ein Kriterium in Deinem Projekt ist, muss man sich das gut überlegen, richtig.

  • Schlüssige Technologiewahl. Zum Thema Datenbank: Eine Alternative wäre auch auf PostgreSQL zu setzen, die Unterstützung für JSON Datentypen ist hervorragend und es lässt sich damit das beste aus der relationalen mit der Dokument orientierten Welt verbinden.

    Zum Hosting einer Erstversion/Prototypen kann ich OpenShift Origin empfehlen wenn du auf MySQL setzt (3 Nodes gratis, GIT push Deployments, MySQL einfach installierbar, Performance OK) oder auch Heroku, wenn du PostgreSQL verwendest. Heroku macht auch für nicht Prototypen mit massiver Datenlast für PostgreSQL Instanzen ein äusserst günstiges Angebot.

    Wenn du experimentierfreudig genug bist, dann ist auf Web Framework Seite auch koa (koajs.com/) mit io.js (benötigt keinen –harmony switch mehr iojs.org) eine gute Wahl gegen die Callback Hölle.

    • Super, tolle Tipps! Danke. Die nächsten Abende sind jetzt ganz gut verplant :)

      Danke auch für den Tipp hinsichtlich Hosting für Erstversion/Prototyp: Das nimmt mir ein paar „Sorgen“ ab.

      Und bezgl. Callback-Hell: Ja, das wäre unbedingt zu vermeiden.