[Empfehlung Hoster] RESTful Webservice als Backend für mobile Applikation

aptem

New Member
Hallo liebe Freunde,

ich brauche eure Einschätzung bezüglich der vielen Anbieter für Serverhosting auf dem Markt da draußen.

In meinem Kopf schwirren momentan 3 geniale Ideen für mobile Apps für die Android-, iOS- und Windows-Platform, die alle ein Backend in Form eines REST-Webservices benötigen.

Im Moment bin ich dabei die erste Idee umzusetzen und den Webservice zu implementieren. Als Technologie verwende ich im ersten Ansatz Spring, da ich aus dem Java-Umfeld komme und hier so gut wie keine Einarbeitungszeit nötig war. Demzufolge wird auf dem Server ein JVM Webserver/-container ala Tomcat laufen. Als Datenbank verwende ich während der Entwicklung MySQL, bin aber nicht darauf beschränkt. Später kommen noch MongoDB oder Cassandra zum Einsatz. Es werden ca. 1,3 TB an Dateien initial auf dem Server gespeichert, die von den Usern heruntergeladen werden können.

Weiterhin habe ich die Nutzerzahlen geschätzt, die diese App nutzen werden. Die Zahlen entsprechen dem "best-case" Szenario d.h. die App ist bereits über einen längeren Zeitraum in den Stores und hat eine konstante Anzahl an wiederkehrenden Nutzern.
Ich gehe von einer aktiven Nutzergemeinschaft von um die 200.000 User aus. Schätzungsweise 1.000 - 2.000 User werden die App gleichzeitig nutzen.

Im Moment liebäugle ich mit den Dedicated Servern von Webtropia (Pro/Power Server), Strato (Linux Level 4 / 5) und Hosteurope (L Paket). Hetzner sieht auch nett aus, hat aber anscheinend keine Traffic-Flatrate.
Webtropia hat einen garantierten Peak von 300Mbit, weshalb ich hier zuschlagen würde, wenn es soweit ist. Bei Strato konnte ich keine Infos diesbezüglich finden und Hosteurope hat nur 100Mbit.

Basierend auf den oben genannten Informationen, lässt sich die Last im "best-case" Szenario von nur einem Dedicated Server stemmen? Ich vermute das eine verteilte Architektur besser wäre, also die Anfragen, auf sagen wir 2-3 Server zu verteilen. Ich habe keine Ahnung was so ein Server an Last wegstecken kann, da fehlt mir leider die Erfahrung.


Wie sieht euer Rat aus? Welcher Hoster? Welche Architektur? Was sollte ich sonst noch bedenken?

Ich bin für jeden Hinweis dankbar!
 
Also ein Dedicated Server ist auf jeden Fall die leistungsfähigste Variante - wobei dieser halt nicht skalieren kann. Fraglich wäre wie ein großer vServer das ganze (dank skalierung) wegstecken könnte.

Der Vorteil von einem vServer / Cloud ist halt dass du einfach sagen kannst "steckt mit noch 4 neue CPUs und 32GB Ram rein" - das geht bei einem dedicated Server nicht. Dafür ist Festplattenplatz (2 TB) bei vServern ne teure Nummer.

Abraten würde ich dir von Strato im allgemeinen (ich kenne da die vServer - die bringen nichts von der versprochenen Leistung, außerdem glänzt der Support eher durch Abwesenheit) und ich weiß nicht ob Webtropia vom Support her sonderlich gut ist (solltest du ihn benötigen).
(das ist aber nur Hörensagen)
Supporttechnisch ist Hetzner und Hosteurope weit vorne mit dabei.

Was die Frage betrifft ob der Server das stemmen kann - ich denke das kommt auf die Anwendung drauf an. So hat z.B. ein Apache2 Webserver bei 10.000 gleichzeitigen Zugriffen erhebliche Probleme (für jeden Zugriff muss ein Thread mit Stack allokiert werden - bei 2 MB Stack pro Thread sind das schon 20 GB), während hingegen modernere Technologien (z.B. Node.js) mit einer Event-Schleife arbeiten und mit 10.000 Requests leichter klarkommen.

Ich hab leider nicht die geringste Ahnung von Spring, vermute aber dass JAVA und Apache Tomcat nicht unbedingt die besten Technologien für etwas was viel Last erzeugt sind. Aber ich lass mich gerne eines besseren Belehren.
So oder so solltest du probieren auf keinen Fall irgendwelche I/O zu blocken und alles Asysnchron abzuarbeiten - bei einem File Request also auf keinen Fall blocken sondern weiter arbeiten.

Ich denke damit kannst du deine gleichzeitigen Requests auch auf einem günstigen Root-Server oder vServer durchbringen.

Also mal versuchen dass Problem nicht einfach durchs draufwerfen von Hardware und Geld zu lösen :-)

Thomas

PS: Lesestoff: https://en.wikipedia.org/wiki/C10k_problem
 
Also ein Dedicated Server ist auf jeden Fall die leistungsfähigste Variante - wobei dieser halt nicht skalieren kann. Fraglich wäre wie ein großer vServer das ganze (dank skalierung) wegstecken könnte.

Müsste das nicht durch einen Load Balancer zu realisieren sein, mit mindestens 2 dedizierten Servern?
Im Grunde würde ich am liebsten eine Cloud-Technologie wie z.B. GoogleAppEngine oder Heroku nutzen, aber das ist mir zu teuer. Was die für Summen dort verlangen ... davon kannst du dir gleich 5 dedizierte Server holen.

Was die Frage betrifft ob der Server das stemmen kann - ich denke das kommt auf die Anwendung drauf an. So hat z.B. ein Apache2 Webserver bei 10.000 gleichzeitigen Zugriffen erhebliche Probleme (für jeden Zugriff muss ein Thread mit Stack allokiert werden - bei 2 MB Stack pro Thread sind das schon 20 GB), während hingegen modernere Technologien (z.B. Node.js) mit einer Event-Schleife arbeiten und mit 10.000 Requests leichter klarkommen ...

Dieses Problem sollte sich über einen fest definierten Thread-Pool lösen lassen (sagen wir z.B. 1000 Threads), der dann alle Requests asynchron abarbeiten. Hier scheint es aber auf jeden Fall Lösungsmöglichkeit zu geben, auch für asynchrone I/O-Verarbeitung.
Ich habe mich auch nur zunächst für Java entschieden, weil ich mich damit auskenne und nicht viel dazulernen brauche. Es geht mir vorallem darum, schnell ein fertiges Produkt auf die Beine zu stellen. Wenn es nachher läuft, kann ich das Backend immer noch in einer effizienteren Technologie implementieren (wobei ich denke, dass es in Java ohne Probleme laufen sollte ... Java wird ja nicht umsonst im Enterprise-Kontext eingesetzt)

Ich möchte/brauche zunächst auch nicht zu viel in eine Serverlandschaft zu investieren, da ich nicht mit einer explodierenden Useranzahl von Beginn an rechne.

Abraten würde ich dir von Strato im allgemeinen (ich kenne da die vServer - die bringen nichts von der versprochenen Leistung, außerdem glänzt der Support eher durch Abwesenheit) und ich weiß nicht ob Webtropia vom Support her sonderlich gut ist (solltest du ihn benötigen).
(das ist aber nur Hörensagen)
Supporttechnisch ist Hetzner und Hosteurope weit vorne mit dabei.

Ich habe mir Hetzner nochmal genauer angeschaut und die Kollegen bieten sogar teilweise eine garantiere Bandbreite von 1Gbit an (z.B. die EX41-Serie). Ich müsste nur gucken ob ich auf lange Sicht mit 30TB auskomme im Monat. Und sonst sieht der Anbieter sehr vernünftig aus.
 
Vergiss nicht, dass du bei Hetzner den extra Telekom Traffic zubuchen musst.

Wie hoch ist denn in etwa dein Budget und welche Hardware wird benötigt?
 
Vergiss nicht, dass du bei Hetzner den extra Telekom Traffic zubuchen musst.

Ich muss? Aus dem verlinkten Artikel konnte ich rauslesen, dass mir diese Option frei steht.

Wie hoch ist denn in etwa dein Budget und welche Hardware wird benötigt?

Naja ... ein Budget ist insofern vorhanden, dass ich auch 200 EUR im Monat ausgeben könnte, aber nicht will! Die Serverkosten sollten sich bei entsprechender Nutzerzahl, durch die App-Einnahmen decken lassen (+Gewinn).
 
Ich muss? Aus dem verlinkten Artikel konnte ich rauslesen, dass mir diese Option frei steht.



Naja ... ein Budget ist insofern vorhanden, dass ich auch 200 EUR im Monat ausgeben könnte, aber nicht will! Die Serverkosten sollten sich bei entsprechender Nutzerzahl, durch die App-Einnahmen decken lassen (+Gewinn).

Wir sprechen über eine mobile App, also werden schon recht viele Besucher über die DTAG angebunden sein.

Google mal nach Webtropia Reviews oder schau dir den Thread hier an.

Hosteurope bietet keine echten Dedizierten Rootserver an. Die Rootserver bei denen sind virtualisiert.

Zu Strato " Traffic-Unlimited: Keine zusätzlichen Kosten durch Traffic (bei Traffic-Verbrauch über 1.000 GB/Monat und danach je weitere 300 GB erfolgt eine Umstellung der Anbindung auf max. 10 MBit/s. Freischaltung jeweils kostenlos über den Kundenservicebereich). "

Schau dir mal www.23media.de an :) Die sollten besser zu deinen Anforderungen passen.
 
Grundsätzlich spricht ja nichts gegen virtualisierte root-Server.

Von der Beschreibung her sehe ich (abgesehen von vielen, fehlenden Infos zu dem, was die Server denn im Endeffekt nun "wirklich" machen sollen) eigentlich nur das Problem, daß man sich ggf. im Vorraus Gedanken zur Skalierbarkeit machen sollte.

Ich sehe da eher ein großes Datengrab für die 1.3TB z.B. via NFS angebunden an ein Cluster aus Frontend-Servern - das lässt sich auch viel besser an die wirklich benötigten Ressourcen anpassen als irgendwelche Standard-HW-Kisten (auf die man bei dem benötigten Plattenplatz fast gezwungen ist, zurückzugreifen, wenn's bezahlbar bleiben soll).

Solche Konstellationen gibt's bei den meisten Anbietern nicht direkt über die Standard-Weboberfläche zu buchen sondern bedürfen einer Mail an den Vertrieb nach einem ded. Angebot. Und daraus ergibt sich, daß man bei einem kleinen Anbieter, der nicht so 100% festgefahren im Massengeschäft hängt vermutlich besser aufgehoben ist.

(wobei man das Szenario auch mal gar nicht so unkompliziert über z.b. AWS abwickeln könnte, ohne gleich daran Pleite zu gehen)
 
Von der Beschreibung her sehe ich (abgesehen von vielen, fehlenden Infos zu dem, was die Server denn im Endeffekt nun "wirklich" machen sollen) eigentlich nur das Problem, daß man sich ggf. im Vorraus Gedanken zur Skalierbarkeit machen sollte.

Der Server wird im Endeffekt einen REST-Webservice bereitstellen und über HTTP-Anfragen (GET, POST, PUT und DELETE) angesprochen. Dabei wird jede Anfrage irgendeine Form der Datenbankabfrage durchführen (überwiegend Selects und Updates). Andere Methoden wiederum werden auf das File-System (bzw. dokumentenbasierte Datenbank) zugreifen und Dateien für den User bereitstellen. Mehr der tut der Kram nicht ... komplizierte Berechnungen werden nicht durchgeführt.

Bei der Geschichte mit der Skalierbarkeit kam mir halt der Load Balancer in den Sinn, aber ob der wirklich den Job verrichtet wie ich mir das vorstelle, weiß ich nicht. Ich kenne mich in dem Bereich halt noch nicht so gut aus.

Ich sehe da eher ein großes Datengrab für die 1.3TB z.B. via NFS angebunden an ein Cluster aus Frontend-Servern - das lässt sich auch viel besser an die wirklich benötigten Ressourcen anpassen als irgendwelche Standard-HW-Kisten (auf die man bei dem benötigten Plattenplatz fast gezwungen ist, zurückzugreifen, wenn's bezahlbar bleiben soll).

Das wäre im Idealfall die Architektur wie ich sie mir vorstelle, 2-3 Server die als Ansprechpartner aus dem Internet dienen, die Anfragen bearbeiten und sich die Daten vom Datenbank-/Fileserver holen.

Welche Anbieter bieten sowas an? Du hast ja bereits gesagt, dass das in der Regel kein Standard ist. Kann ich mich dann vertrauensvoll an z.B. Hetzner richten und die bereiten mir ein Angebot vor?

An AWS habe ich auch schon gedacht, ich versuche mal mit dem Rechner dort auszurechnen was mich das kosten würde.
 
Anbieten dürften das die meisten - es gibt meistens überall neben dem Eingang für die Laufkundschaft von der Straße noch einen Eingang für die Business-Kunden mit "Sie wünschen wir spielen"-Programm.

Ob das dann in eine frei-Skalierbare Lösung wie AWS-Elastic-Irgendwas, MS-Azure oder Konsorten, eine Private-Cloud bei XYZ oder andere Lösungen hinausläuft hängt vermutlich ein wenig vom Status, Stand und Reichweite des Projektes ab. Evtl. startet man heute ja auch mit einem System und migriert dann hinterher auf was anderes, ...
 
Du sagst du hast grosse Dateien (~1 TB) und gleichzeitig noch ein Backend mit Programmlogik, wenn ich das oben beschrieben richtig gelesen habe.

Wäre es nicht ggf. sinnvoll das File-Hosting einem Spezialisten zu überlassen und sich auf das Hosten des Backends zu konzentrieren?

Ich habe jetzt keinen konkreten Anbieter im Kopf, aber ich kann mir sehr gut vorstellen, dass es diverse Cloud-Services gibt ("Filehoster"), die entsprechend skalierbar, redundant, geo-lokalisiert etc. das Hosting von Dateien anbieten. Wenn du Glück hast findest du sogar einen mit einem nutzungsbasierten Preismodell.

So könntest du dich auf dein Backend konzentrieren und hier vermutlich massiv Kosten sparen. Denn während mehrere Clients lange Downloads von deinem Server laufen lassen, steht natürlich auch weniger Bandbreite für dein Backend bereit (und ich vermute der Mehrwert der User ist nicht der reine Download von Daten?).

Ist nur ein Denkanstoss. Vielleicht hast du darüber bereits nachgedacht und bist zu dem Ergebnis gekommen, dass es zu teuer/sinnlos/nicht zielführend ist, dann ignoriere meinen Beitrag :)

Wenn du dich entschieden und eine Lösung gefunden hast, wäre es schön, wenn du sie hier vorstellen würdest.
 
Du sagst du hast grosse Dateien (~1 TB) und gleichzeitig noch ein Backend mit Programmlogik, wenn ich das oben beschrieben richtig gelesen habe.

Es sind 1,3 TB insgesamt, mehr als 2 TB sollten es während der Laufzeit nicht werden (wird sich im Laufe der Zeit erhöhen).

Denn während mehrere Clients lange Downloads von deinem Server laufen lassen, steht natürlich auch weniger Bandbreite für dein Backend bereit (und ich vermute der Mehrwert der User ist nicht der reine Download von Daten?).

Dazu muss ich noch sagen, dass sich die Gesamtgröße der 1,3 TB aus sehr vielen kleineren Dateien zusammensetzt. Dabei werden höchsten 2-3 MB pro Aufruf übertragen, wobei nahezu alles auf dem Smartphone gecached wird. In der Theorie könnte ein Nutzer die gesamten 1,3 TB runterladen, das macht aber in keinem Anwendungsfall Sinn.
Aber du bringst mich auf eine andere Idee. Ich werde euch auf jeden FAll auf dem Laufenden halten und wenn es soweit ist auch meine App hier vorstellen. :)
 
Back
Top