Paar wichtige Fragen zur App Programmierung

Vielleicht nicht das was du hören willst, aber wenn du keine Ahnung von dem Thema hast, dann sind jegliche Vorschläge/Korrekturen die wir machen könnten ein Buch mit 7 Siegeln für dich. Such dir einen Consultant der sich mit dem Thema auskennt, der das ganze überwacht.

Nur so ein paar Punkte die mir auffallen (Backend):
  • NodeJS basiertes Backend ist ohne die Verbreitung der App zu kennen ein mögliches Problem, da kannst du schnell in Skalierungsprobleme laufen.
  • Deine ganze Authentication Geschichte ist kritisch zu betrachen, je nach was du da exakt machen willst, ist die offensichtliche Empfehlung auf einen kommerziellen Service ala Auth0 zu setzen um Unmengen an möglichen Sicherheitslücken durch eigene Implementierungen zu umgehen.
 
  • Gefällt mir
Reaktionen: H3llF15H und nocie
Tornhoof schrieb:
---Vollzitat entfernt---
bitte Zitierregeln beachten
Vielen Dank für dein Feedback. Du hast sicherlich auch nicht ganz unrecht, doch ich kann mich ja über Dinge informieren und die dann meinem Programmierer vorlegen. Eine Person hat oft seine Lieblinge, welche verwendet werden, weshalb es dann noch gut ist von anderen ein Feedback zu erhalten.

Die von dir genannten Tipps sind auf jeden Fall verwertbar. Ich werde mir beide Themenbereiche nun mal genauer anschauen. Vielen Dank Dir!

Vielleicht hast Du noch eine gute Alternative zu NodeJS? Ist nämlich keine Nischenapp und könnte in der Theorie viele Nutzer erreichen.
 
Zuletzt bearbeitet von einem Moderator:
nocie schrieb:
Vielleicht hast Du noch eine gute Alternative zu NodeJS? Ist nämlich keine Nischenapp und könnte in der Theorie viele Nutzer erreichen.
Ist kompliziert zu sagen, du hast da schon Recht mit persönlichen Vorlieben der Entwickler.
Bzgl. Backend ist eine der üblichen Empfehlungen für Applikationen ohne exakte Nutzerangaben und damit verbundenen Performanzmessungen, mit einer Entwicklungsumgebung zu starten die schnelle Fortschritte erlaubt (und ja da gehört NodeJs etc. dazu) und wenn dann die Last bekannt ist, nach und nach die Teile auszutauschen, die Bottlenecks sind. Das kommt natürlich auch drauf an was das BAckend alles können muss, um zu entscheiden ob das realistisch möglich ist.
Ansonsten ggf. gleich überlegen ob nicht eher JAVA oder .NET 5.0 besser geeignet ist.
 
  • Gefällt mir
Reaktionen: nocie
Mein Verständnis ist das es keine echten Push notifications ohne Google auf Android gibt. Apps dürfen nicht einfach beliebig im Hintergrund laufen, deshalb kann das nur robust funktionieren wenn das OS die Notifications verwaltet. Wenn die Notifications ein Kernfeature sind, würde ich keine andere Variante als die mit Google Service riskieren. Am Ende kommen die Notifications nicht zuverlässig an, und es gibt keinen einfachen Weg das zu beheben. Bin aber hier kein Experte, es ist ewig her das ich eine Android App gebaut habe.

D3 ist zu low-level für Charts, wenn man nur Standard will. Das ist sehr gut für eigene Visualisierungen oder wenn man absolute Kontrolle braucht, aber deutlich zu aufwendig für einfache Charts.

Mit Postgres macht man erstmal nichts falsch, das ist fast immer eine gute Wahl für den Anfang. Um Skalierung würde ich mir zu diesem Zeitpunkt keine großen Sorgen machen, es ist wirklich nicht einfach so viele Benutzer zu bekommen um hier an die Grenze zu stoßen.

Zu der Diskussion um die Backend Sprache, die beste Sprache ist hier diejenige die dein Entwickler am besten kann. Um eine Sprache und Framework zu nehmen das man erst lernen muss sollte man schon einen sehr guten Grund haben.
 
  • Gefällt mir
Reaktionen: nocie
Du hast so ziemlich die einzigen Alternativen aufgesagt, das gleiche gilt übrigens bei Apple.
Im Prinzip auch eigentlich ganz logisch, statt 50 Apps zu haben die alle ihre eigene Verbindungen aufrecht halten gibt es das einmal Zentral von Google / Apple.

Die eigenen Lösungen scheitern oft am Energiemanagement, das OS entscheidet ob und wann dein Job laufen darf und für Benachrichtigungen ist das oft nicht gut genug. Bei Android funkt Deep Sleep/Doze dazwischen, bei Apple ist setMinimumBackgroundFetchInterval der eigentliche Weg aber Apple entscheidet wann gefetcht wird (und das ist sehr selten der minimale Interval).

Wird nicht verkehrt sein beide Optionen anzubieten, Degooglet-Android User wissen ja was die Vor/Nachteile sind. Aber fakt ist ohne Google und Apple sind schnelle und zuverlässige Benachrichtigungen nicht drinnen (solange man nicht irgendwelche Hacks benutzt um das Handy aktiv zu lassen, zumindest auf iOS gab es ein Weg mit GPS dazu).


Und lass dich nicht wegen möglichen Skalierungsproblemen wirr machen, vieles ist eine Frage der Infrastruktur und Anforderung (IO ist in Node solide, CPU intensive aufgaben weniger). Ich kann in Rust und Go genauso humbug programmieren, wenn der Entwickler gut in Node unterwegs ist ist das besser als ihm eine "bessere" ihm unbekannte Programmiersprache aufzuzwängen.
Zumal Nest einen zu sauberem Code zwingt und man recht schwer aus deren Vorgaben herausbrechen kann, CPU-lastige Aufgaben kann man mit Nests Queues und Tasks auch gut navigieren.
Aber ohne die genaue Aufgabenstellung zu kennen kann dir keiner sagen ob Node sinnvoll ist oder nicht.
 
  • Gefällt mir
Reaktionen: nocie
Ich danke euch erneut für die Ratschläge. Sowas ist sehr wertvoll und ich weiß das zu schätzen.

Und in einem anderen Forum hatte ich auch schon Gegenwind bekommen, dass ich es ja lassen soll, weil ich mich nicht so perfekt auskenne. Nur ist es für mich ein privates Projekt, in welches ich viel Geld investiere und ich habe nur begrenzte Möglichkeiten. Daher muss ich mich da irgendwie durchschlagen. Und so ganz sensibel sind die Daten innerhalb der App dann doch nicht, dass man partout keinen Anfänger an das Projekt lassen sollte. Die Daten sind nur laut Gesetz sensibel... aber deshalb lasse ich die App sowieso am Ende nochmal auf Herz und Nieren prüfen - gerade weil nur eine Person programmieren wird und ich sicherstellen muss, dass diese Person keine Dummheiten implementiert hat.
Ergänzung ()

Dalek schrieb:
Mein Verständnis ist das es keine echten Push notifications ohne Google auf Android gibt. Apps dürfen nicht einfach beliebig im Hintergrund laufen, deshalb kann das nur robust funktionieren wenn das OS die Notifications verwaltet. Wenn die Notifications ein Kernfeature sind, würde ich keine andere Variante als die mit Google Service riskieren. Am Ende kommen die Notifications nicht zuverlässig an, und es gibt keinen einfachen Weg das zu beheben. Bin aber hier kein Experte, es ist ewig her das ich eine Android App gebaut habe.
Der Messenger Signal verwendet diesen Weg. Dort muss man dann zwingend die App aus dem Ernergiesparplan nehmen, damit ab und an eine Verbindung zum Signal Server passieren kann, um neue Nachrichten abfragen zu können. Dadurch kommen die Nachrichten leider nicht immer zeitnah an und erfordert eben weitere Interaktionen des Nutzers, um diesen Alternativweg einzurichten. Also es ist schon erlaubt, dass die Apps im Hintergrund laufen dürfen. Bei Signal und Co. ist es auf jeden Fall der Fall.
Ergänzung ()

Dalek schrieb:
Um Skalierung würde ich mir zu diesem Zeitpunkt keine großen Sorgen machen, es ist wirklich nicht einfach so viele Benutzer zu bekommen um hier an die Grenze zu stoßen.
Ja, das dachte ich mir auch. Sollte es zu einer großen Nutzerzahl kommen, so wäre das Projekt sowieso instande größere Budgets aufzutreiben, um die App dann einem großen Update zu unterziehen.
 
Zuletzt bearbeitet von einem Moderator:
nocie schrieb:
Und so ganz sensibel sind die Daten innerhalb der App dann doch nicht, dass man partout keinen Anfänger an das Projekt lassen sollte. Die Daten sind nur laut Gesetz sensibel...
Du hast in deiner Liste ein Authentication Konzept drinnen, damit ist die Wahrscheinlichkeit sehr hoch dass du PII (Persönlich Identifizierbare Informationen) speichern wirst/musst und dann musst dich zwangsweise mit GDPR/DSGVO auseinandersetzen. Entsprechende Fehler in dem Bereich können schnell teuer werden.
 
  • Gefällt mir
Reaktionen: mental.dIseASe und nocie
Tornhoof schrieb:
Du hast in deiner Liste ein Authentication Konzept drinnen, damit ist die Wahrscheinlichkeit sehr hoch dass du PII (Persönlich Identifizierbare Informationen) speichern wirst/musst und dann musst dich zwangsweise mit GDPR/DSGVO auseinandersetzen. Entsprechende Fehler in dem Bereich können schnell teuer werden.
Ja, das ist mir bewusst und ich bin teilweise auch ein Befürworter dieser neuen Regelungen. Nur die Daten, um welche es in der App geht, fallen auch unter die neuen Regelungen - laut einem Gerichtsurteil. Das wurde aber von vielen infrage gestellt und ist auch mehr oder weniger absurd.. Aber natürlich, es fallen neben diesen Daten auch andere Nutzerdaten an, welche auch außreichend geschützt werden sollten.
 
Tornhoof schrieb:
NodeJS basiertes Backend ist ohne die Verbreitung der App zu kennen ein mögliches Problem, da kannst du schnell in Skalierungsprobleme laufen.
Möglich ja, allerdings ist es für die meisten Apps ein guter Startpunkt. Wenn Nutzerzahlen über 100 000 erreicht werden, hat man meistens sowieso die Zeit / das Geld um ein neues Backend zu schreiben.
Außerdem bieten AWS & co. ja Loadbalancer an, mit denen du die Last gut verteilen kannst.

nocie schrieb:
Der Messenger Signal verwendet diesen Weg.

Nein. Signal benutzt FCM Notifications (Google), um die Geräte "anzupingen", wenn neue Benachrichtigungen vorliegen. Die Apps können normalerweise Listener für solche Events im Hintergrund laufen lassen. Dort stößt die Signal-App dann das eigentliche Laden der Benachrichtigungen vom Signal-Server an. Wenn keine Play-Services da sind, werden Websockets benutzt. Allerdings sind die (durch den Energiesparmaßnahmen vieler Handys) deutlich unzuverlässiger.
Du kannst davon ausgehen, dass bei Signal viele Leute lange Zeit an den Notifications gearbeitet haben. Falls du deine erste App programmierst / programmieren lässt: Geh es nicht "zu ernst" an.

Fang klein an, baue Verbesserungen später. Ansonsten steckst du dein ganzes Geld in die Sicherheit deiner App, aber kein Mensch nutzt sie am Ende.

Lg
 
  • Gefällt mir
Reaktionen: mental.dIseASe, BeBur und nocie
nocie schrieb:
Daher stelle ich mir gerade bei Push Notifications die Frage, welche Alternative wir denn haben. Bei der Recherche bin ich auf Push via WebSockets gestoßen, doch ganz zufriedenstellend scheint diese Lösung nicht zu sein. Der Nutzer müsste die App doch aus den Energiespareinstellungen entfernen, damit die App nicht in Standby geht und der WebSocket geschlossen wird, richtig? Und damit die App nicht Unmengen an Akku zieht, müsste man einen Intervall zum Abfragen neuer Push Notifications einrichten, korrekt? Dadurch würden die Benachrichtigungen dann verzögert beim Nutzer ankommen.
Es gibt für Android ein neues Framework, das es ermöglicht, dass man als User selbst das Pushsystem auswählen kann: Unified Push
Standardmäßig kannst du z.B. FCM nutzen lassen, wenn der User aber einen anderen Push-Distributor installiert hat, wird dieser zum Empfang benutzt.
Dort kann man als User z.B. sogar einen selbstgehosteten Push-Provider festlegen.

Auf iOS haut das natürlich nicht hin.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: nocie
KitKat::new() schrieb:
Es gibt für Android ein neues Framework, das es ermöglicht, dass man als User selbst das Pushsystem auswählen kann: Unified Push
Standardmäßig kannst du z.B. FCM nutzen lassen, wenn der User aber einen anderen Push-Distributor installiert hat, wird dieser zum Empfang benutzt.
Dort kann man als User z.B. sogar einen selbstgebastelten Push-Provider festlegen.

Auf iOS haut das natürlich nicht hin.
Passender Hinweis, vielen Dank. Habe ich mir mal notiert. Scheint noch nicht ganz so populär zu sein. Aber wenn es gut funktioniert, dann hätte ich nichts dagegen.

Schaue ich mir auch privat mal genauer an. Die Liste der unterstützen Apps ist nur leider sehr klein. Würde mich aber freuen, wenn es dann für Element kommt.
 
  • Gefällt mir
Reaktionen: KitKat::new()
falls du wert auf privatspäre/sicherheit legst wäre evtl nach fertigstellung der app noch ein externes review der app sinnvoll um schwachstellen aufzudecken die selbst gute programmierer gerne einbauen
 
  • Gefällt mir
Reaktionen: nocie
Von wem kommen die Technologie-Angaben? Von dir oder vom Entwickler? Ist das eine Freelancer-Platform (fiverr oder so) oder eine richtige Agentur/Freelancer mit dem du im Dialog stehst?
Wieso hast du diese Punkte, speziell auch die Implikationen bezgl. Push-Notifications nicht mit dem Entwickler besprochen?
nocie schrieb:
Denn sollte dieser sich mit Firebase austoben, so kann ich als Projektleiter die App gar nicht nutzen, da ich ein Gerät ohne Google Services besitze. Das wäre dann echt doof.
So ein Android-Gerät ohne Google haben vllt 0,01% der Menschen. Sind die deine Zielgruppe? Wieso kaufst du nicht einfach irgendein 100 Euro Android Smartphone? Du willst doch eh die App auch im Apple Store haben? Dann willst du doch vermutlich auch die Apple-Variante der App einfach mal aufrufen können und wirst dir doch eh noch ein iPhone anschaffen, oder nicht?

nocie schrieb:
Es werden aber auf jeden Fall sensible Daten erhoben
Die erste Frage die sich da jedem stellt: Was meinst du mit sensibel, die DSGVO kennt "besonders schütztenswerte Daten". Erhebst du diese?

Tornhoof schrieb:
NodeJS basiertes Backend ist ohne die Verbreitung der App zu kennen ein mögliches Problem, da kannst du schnell in Skalierungsprobleme laufen.
Das ist realitätsfern.
 
  • Gefällt mir
Reaktionen: nocie
nocie schrieb:
Nur ist es für mich ein privates Projekt, in welches ich viel Geld investiere und ich habe nur begrenzte Möglichkeiten. Daher muss ich mich da irgendwie durchschlagen. Und so ganz sensibel sind die Daten innerhalb der App dann doch nicht, dass man partout keinen Anfänger an das Projekt lassen sollte. Die Daten sind nur laut Gesetz sensibel...
Auch wenn es sich um einen Nebenthema handelt, aber ich bekomme das Business Modell geistig nicht hin. Einerseits steckst Du 'viel privates Geld' in die Software und andererseits schränkst Du die Verbreitung der App massivst ein (wer nutzt schon F-Droid?!) und erschwerst auch die Monetarisierung der App. Würde mich interessieren was Du Dir hier vorgestellt hast oder handelt es sich doch eher um ein altruistisches Projekt?
 
  • Gefällt mir
Reaktionen: nocie
BeBur schrieb:
Sind die deine Zielgruppe? Wieso kaufst du nicht einfach irgendein 100 Euro Android Smartphone?
Mextli schrieb:
schränkst Du die Verbreitung der App massivst ein

Ich vermute mal TE hat sich sein Handy aktiv "entgooglet" wenn er laut eigener Aussage auf Privatsphäre fokussiert ist. Laut Verlauf sieht er mir jetzt nicht nach jemandem aus der absolut keine Ahnung hat.

Nur weil er gerne die Option haben will seine App ohne Google Play Services zu betreiben heißt das ja nicht dass er die nicht im Play Store veröffentlichen kann.
Die die keine Play Services haben freuen sich wenn kein Google Zeug dabei ist, die die aus dem Play Store laden juckt es nicht solange die App funktioniert.
In dem Sinne erweitert er eher seine Userbase, eine andere Frage ob es sich lohnt Zeit und Geld in alternative Push-Methoden zu stecken wenn dann 3 F-Droid User die App installieren.
 
  • Gefällt mir
Reaktionen: nocie
BeBur schrieb:
Von wem kommen die Technologie-Angaben? Von dir oder vom Entwickler? Ist das eine Freelancer-Platform (fiverr oder so) oder eine richtige Agentur/Freelancer mit dem du im Dialog stehst?
Wieso hast du diese Punkte, speziell auch die Implikationen bezgl. Push-Notifications nicht mit dem Entwickler besprochen?
Weil dieser von mir Geld bekommt und es sein kann, dass dieser eben nur die bequemste Wahl trifft. Ich wollte eben noch ein unabhängiges Feedback bekommen. Klar sollten vernünftige Programmierer auch gut beraten können, doch mein Budget ist begrenzt, weshalb ich sicher nicht den Besten der Besten habe.

BeBur schrieb:
So ein Android-Gerät ohne Google haben vllt 0,01% der Menschen. Sind die deine Zielgruppe? Wieso kaufst du nicht einfach irgendein 100 Euro Android Smartphone? Du willst doch eh die App auch im Apple Store haben? Dann willst du doch vermutlich auch die Apple-Variante der App einfach mal aufrufen können und wirst dir doch eh noch ein iPhone anschaffen, oder nicht?
Damit hast Du schon Recht, doch ich habe auch meine Prinzipien und es ist lächerlich, wenn ich nun eine App mache, welche bis oben hin voll mit Firebase und AWS ist. Und privat predige ich dann ganz andere Dinge... das ist nicht toll. Außerdem möchte ich auch einen Schritt in die richtige Richtung gehen und nicht auf maximale Nutzerzahlen aus sein. Ein Kompromiss ist mein Ziel.

BeBur schrieb:
Die erste Frage die sich da jedem stellt: Was meinst du mit sensibel, die DSGVO kennt "besonders schütztenswerte Daten". Erhebst du diese?
Ja.

Mextli schrieb:
Auch wenn es sich um einen Nebenthema handelt, aber ich bekomme das Business Modell geistig nicht hin. Einerseits steckst Du 'viel privates Geld' in die Software und andererseits schränkst Du die Verbreitung der App massivst ein (wer nutzt schon F-Droid?!) und erschwerst auch die Monetarisierung der App. Würde mich interessieren was Du Dir hier vorgestellt hast oder handelt es sich doch eher um ein altruistisches Projekt?
Wie oben schon erwähnt, möchte ich eben einen Schritt in die richtige Richtung machen und nicht auf maximalen Profit aus sein. Wenn ich das privat predige, sollte ich es auch dort etwas einfließen lassen. Erstmal wird es wohl wirklich ein altruistisches Projekt werden. Generell ist das Thema der App sehr gemeinnützig. Dennoch möchte ich meine ganze Zeit dort rein investieren, was mich dazu zwingt, dass ich eben mindestens die Betriebs- und Lebenserhaltungskosten rein bekomme. Aber Montetarisierung ist erstmal ganz am Ende dran.

Joshinator schrieb:
Ich vermute mal TE hat sich sein Handy aktiv "entgooglet" wenn er laut eigener Aussage auf Privatsphäre fokussiert ist. Laut Verlauf sieht er mir jetzt nicht nach jemandem aus der absolut keine Ahnung hat.

Nur weil er gerne die Option haben will seine App ohne Google Play Services zu betreiben heißt das ja nicht dass er die nicht im Play Store veröffentlichen kann.
Die die keine Play Services haben freuen sich wenn kein Google Zeug dabei ist, die die aus dem Play Store laden juckt es nicht solange die App funktioniert.
In dem Sinne erweitert er eher seine Userbase, eine andere Frage ob es sich lohnt Zeit und Geld in alternative Push-Methoden zu stecken wenn dann 3 F-Droid User die App installieren.

Vielleicht hätte ich erst alle Kommentare lesen sollen, bevor ich antworte. Dein Kommentar fasst es wohl ganz gut zusammen. Viel Ahnung habe ich nicht, aber ein bisschen. Ich weiß worauf ankommt und wie das Grundgerüst auszusehen hat.

__________

Vielen Dank nochmal für alle Beiträge. Gerade solche Diskussionen, bei welchen Dinge hinterfragt werden, sind besonders hilfreich und lassen einen auf neue Ideen kommen.

Ich werde mich nun nochmal genauer mit der Authentifizierung der Nutzer auseinandersetzen und mich in das Thema genauer einlesen, um mich dann am Ende für einen Dienstleister oder eine eigene lokale Lösung zu entscheiden. Der Rest scheint ja erstmal ganz solide zu sein und erscheint nicht all zu viel Gegenwind zu erfahren.

Danke!
 
Das ist ca. so wie wenn du ein Haus bauen willst. Da sollen wichtige Personen drin leben, deshalb soll besonderen Wert auf Sicherheit und Privatssphäre gelegt werden. Außerdem willst du die Umwelt schonen, deswegen soll das Haus mit wenig Strom auskommen und du hast gehört eine Solaranlage oder eine Wärmepumpe wären da gut.
Der Bauunternehmer hat dir nun mitgeteilt: Er gedenkt Bagger einzusetzen und eine Hebebühne und ein Gerüst und als Material benutzt er unter anderem Zement und Ziegelsteine und das Haus soll eine Wärmepumpe erhalten. Jemand sagt, eine Hebebühne ist etwas klein, ein Kran wäre besser. Außerdem schreibt jemand, dass normale Türschlösser nicht ausreichen, du willst dich deswegen mal nach Pförtnern umhören.


Das ist jetzt so ca. der Stand hier im Thread und dein Fazit war jetzt zuletzt "Ist ja ganz solide, was dieser Bauunternehmer mir da geschrieben hat".
 
  • Gefällt mir
Reaktionen: MM3000 und Raijin
BeBur schrieb:
---Vollzitat entfernt---
bitte Zitierregeln beachten
Korrekt, ich fand es sehr solide. Es kommt immer darauf an mit welcher Einstellung und Sicht man auf die Dinge zugeht und diese dann für sich nutzt. Viele Leute haben eben Ansichten, welche andere nicht teilen müssen und welche vielleicht auch Unsinn sind. Doch nur durch solche Szenarien, in welchen der Unsinn geäußert wird, kann eine nahrhafte Diskussion stattfinden, aus welcher ich mir ein deutlich besseres Bild machen kann, als wenn einer direkt mit der Lösung um die Ecke kommt. Ich bin also sehr mit den Beiträgen in diesem Thema zufrieden. Gerade weil diese nicht so toxisch sind, wie es in anderen Foren der Fall ist.

Falls noch jemand Tipps hat, würde ich mich wirklich sehr freuen. :freaky:
 
Ich würde gerne wissen, warum du dich nicht für Flutter entschieden hast… Jetzt ist es zwar eh zu spät, allerdings wenn die App eh auf beiden Plattformen angeboten werden soll, kann ich unschwer nachvollziehen warum man nicht Flutter wählt…

Meiner Erfahrung nach ist es wesentlich performanter und bietet gleich auch ne macOS und ne Windows Version deiner App an… Dadurch könntest du auf allen großen Systemen auftreten.

Ich weiß ja nicht in welchem Bereich deine App angesiedelt ist, vielleicht magst du uns eine Überkategorie nennen..?

Bist du denn bereits „eingefahren“ auf React Native.?

Falls nicht würde ich mir Flutter und dessen Möglichkeiten anschauen ;)
 
  • Gefällt mir
Reaktionen: nocie
Zurück
Oben