Java App - Server - Datenbank: Welche Sprachen, welche Hoster

AljoSt

Cadet 1st Year
Registriert
Feb. 2014
Beiträge
9
Hallo zusammen,

Ich programmiere eine App unter Android, die später aber auch unter iOS laufen soll. In der App geht es prinzipiell um online-shopping, allerdings nicht in der Form eines typischen Shops, sonder mit "spielerischen" Elementen. Entsprechend muss neben der App eine DB her und ein Server, der "kompliziertere" Rechenaufgaben bewältigt, d.h. er bekommt eine Anfrage, und benutzt einem Machine-Learning Algorithmus um die Elemente aus der DB auszuwählen.
Ich programmiere eigentlich recht viel, bin aber (leider) bisher nicht mit Programmierung auf Servern konfrontiert worden, habe also entsprechend wenig Ahnung.

Deswegen hätte ich an dieser Stelle ein paar Fragen.

1. Wird so ein System lediglich aus den drei Schichten App, DB, Server und entsprechend drei Sprachen (java/objectiveC, SQL/NoSQL, ??) bestehen oder gibt es Zwischenschichten die für die Schnittstellen nötig sind?

2. Welche Sprache würdet ihr Serverseitig empfehlen? Ich fände es nicht schlecht, in Java oder c++ programmieren zu können. Zum einen müsste ich weniger lernen, zum anderen ist es wahrscheinlich für die Programmierung der Machnine-Learning Algos sinnvoll. Abgesehen davon sollte der Einstieg möglichst einfach sein.

3. Als Hoster scheint mir Amazon (AWS) ganz interessant zu sein. Zum einen wegen der anfänglichen freien Nutzung, zum anderen wegen der Skalierbarkeit. Leider finde ich ziemlich wenig Erfahrungsberichte diesbezüglich. Meint ihr, dass das (langfristig) der richtige Hoster für so ein Projekt ist?

4. Bisher benutze ich eine lokale SQlite DB. AWS bietet nun aber sowohl relationale DBs als auch NoSQL (DynamoDB) an. In der DB wird es viele m:n-Relationen geben (Nutzer x hat Item y,z gekauft) und auch entsprechende Abfragen. Welche Sprache würdet ihr verwenden, und was sind die Gründe dafür/dagegen?

5. Es werden sowohl einfache Daten als auch Bilder und Videos ausgetausch. Muss dabei etwas spezielles beachtet werden? Für den Datenaustausch wollte ich json verwenden.


Vielen Dank schonmal :)
 
1) App funkt mit RESTful-Webservice auf dem Server, der dann ggf. mit der DB interagiert.

2) Eher Java als C++. Spring Boot kannst du dir mal ansehen. Wenn es eine Nummer schlanker sein soll Python mit Flask, wenn es auch noch "experimenteller" und C-ähnlicher sein darf, dann ist Rust mit Iron ganz hübsch.

3) Hab selbst keine Erfahrung mit AWS aber (u.a. von Kollegen) nur Gutes gehört. Da machst du nichts falsch. Musst natürlich immer die Kosten im Blick haben. Skalieren kostet.

4) Kaum zu beantworten ohne richtig drin zu stecken. Es geht ja anscheinend darum, für den User irgendwas serverseitig auszuwählen und anzubieten. Da sind wohl auch Graph-DBs im Boot. Vielleicht brauchst du auch einen Elasticsearch oder Hadoop-Cluster, was weiß ich. :p Ich würde sagen - mach erstmal relational weiter, bis du Performance-Probleme bekommst. Sonst bist du ohnehin von all den Technologien so erschlagen, dass gar nichts mehr läuft.

5) JSON ist top zum Übertragen. Bei Bildern und Videos würde ich nur darauf hinweisen, dass diese meiner Meinung nach im Filesystem besser aufgehoben sind, als als Blob in einer DB.
 
Vielen Dank für die Antwort. War leider die letzten beiden Tage sehr beschäftigt, werde mich aber jetzt mal in die Thematik einlesen :)
 
Zurück
Oben