Welcher Technologie-Stack wird benötigt, um meine App zu skalieren und ein Gleichgewicht zwischen Leistung und Produktivität zu finden?

Ich habe eine soziale mobile App, die mit Phonegap auf der Clientseite und PHP auf der Serverseite funktioniert. Ich habe mich für diese Technologien (Phonegap, Framework7 (Frontend-Framework), Apache & MySQL) entschieden, weil die erste Version ein MVP ist, also wollte ich es schnell und einfach mit Technologien machen, mit denen ich sehr vertraut bin. Jetzt erhalte ich viel Datenverkehr in der App und muss sie skalieren, um sie effizienter und kostengünstiger in der Wartung zu machen. Also muss ich einen anderen Stapel auswählen, mit dem ich arbeiten kann.

Mein Plan ist es, weiterhin Phonegap und Framework7 zu verwenden (die App funktioniert einwandfrei, verhält sich wie eine native App mit einer sehr vollständigen Benutzeroberfläche), aber die Serverseite ist das, worüber ich mir am meisten Sorgen mache.

Die Anforderungen sind vorerst:

  • Die Dateispeicherung (Bilder) muss effizienter sein, also schnellere Upload-Zeiten
  • Die CPU- und Speicherauslastung des Servers muss sinken (PHP verwendet viel Speicher und CPU für Aufgaben, für die andere Sprachen viel weniger Speicher oder CPU verwenden).
  • DB muss SQL sein, aber MySQL ist fehlerhaft und ich brauche ein schnelleres DB-System für schnellere Antwortzeiten an den Client.
  • Mein Server befindet sich derzeit in den Niederlanden (Amsterdam), daher wird ein CDN benötigt, um statische Dateien zu verteilen und sie für Personen aus anderen Ländern schneller verfügbar zu machen.

Die App selbst konzentriert sich nicht vollständig auf Fotos oder Videos oder ähnliches. Benutzer können Text, Links und Fotos teilen. Ansonsten sind die typischen Social-App-Features wie Freundschaften, Feed, Profil etc. enthalten.

Ich denke darüber nach, Python (Django) oder Node JS als serverseitige Sprache zu verwenden. Welche würdest du mir empfehlen zu verwenden? Was die DB betrifft, höre ich sehr gute Dinge über PostgreSQL und MariaDB. Welcher passt besser zu meinen Bedürfnissen? Natürlich muss es einen Caching-Server geben, und ich habe darüber nachgedacht, Memcached zu verwenden. Hat jemand Erfahrung mit einer Kombination dieser Technologien, der mir sagen kann, wie ich dieses Projekt skalierbar machen und ein perfektes Gleichgewicht zwischen Leistung und Produktivität finden kann (wenn ich ein Team einstelle, möchte ich, dass die Ingenieure problemlos mit dem Code arbeiten können, den ich werde schreiben).

Das Schreiben von gutem Code ist natürlich eine Voraussetzung. Aber bei dieser Frage geht es wirklich darum, welche Technologien Sie mir für eine App wie meine vorschlagen würden.

Können Sie diese Aussage "MySQL ist fehlerhaft" begründen? oder zumindest ausbauen? Wenn es Fehler gibt, erhöht das Melden natürlich Ihre Chancen, dass sie behoben werden, und es hilft anderen. (tolle Frage, obwohl +1 und starerd)

Antworten (1)

DB muss SQL sein, aber MySQL ist fehlerhaft und ich brauche ein schnelleres DB-System für schnellere Antwortzeiten an den Client.

sqlite wäre eine gute Wahl:

Die SQLite-Website ( https://www.sqlite.org/ ) verwendet natürlich SQLite selbst und verarbeitet zum jetzigen Zeitpunkt (2015) etwa 400.000 bis 500.000 HTTP-Anfragen pro Tag, von denen etwa 15-20 % dynamisch sind Seiten, die die Datenbank berühren.

 

Die CPU- und Speicherauslastung des Servers muss sinken (PHP verwendet viel Speicher und CPU für Aufgaben, für die andere Sprachen viel weniger Speicher oder CPU verwenden).

web.py mit der python sqlite3 API wäre eine einfache Alternative.

Mein Server befindet sich derzeit in den Niederlanden (Amsterdam), daher wird ein CDN benötigt, um statische Dateien zu verteilen und sie für Personen aus anderen Ländern schneller verfügbar zu machen.

Cloudflare hat einen kostenlosen Plan.

Die Dateispeicherung (Bilder) muss effizienter sein, also schnellere Upload-Zeiten

Cloudflare kann ein Originalbild gegen ein äquivalentes, mit WebP komprimiertes Bild austauschen