Skip to content
This repository has been archived by the owner on Dec 12, 2023. It is now read-only.

Scalability

pblanz edited this page Mar 28, 2016 · 3 revisions

Konzepte zur massiven Skalierung (massiv = hunderte Kommunen pro Monat)

Datenvolumen

App Synchronisierung

Herausforderung: Große Städte können mehrere Megabyte Daten haben (viel Info und Bilder). Alles synchron bei der Stadtauswahl zu laden dauert zu lang.

Lösung: Pagination

Serverlast

Herausforderung: Wenn viele Kommunen/Organisationen Daten eintragen und gleichzeitig viele Anfragen an die REST API kommen, dauern die Requests irgendwann zu lange.

Lösung: Read-Only Instanz für die REST API

Lösung: CDN, um die Last auf verschiedene Server zu verteilen. Ggf. eigene Server für die Datenbank.

Verwaltung von Bugs und Feature Requests

Herausforderung: Verschiedene {Städte, Personen, Sprachen, Geräte, App Versionen} - jede Kombination kann andere Issues haben. Wir müssen sie organisiert und übersichtlich halten.

Inhalt

Erarbeitung von Inhalt

Herausforderung: Alle Inhalte in verschiedenen Sprachen zu erarbeiten und einzutragen ist aufwändig.

Lösung: Datenübernahme anderer Städte: bis auf Stadt-spezifische Details ist der Aufbau und Inhalt vieler Inhalte austauschbar.

Lösung: Benutzer-führende Dateneingabe, in der man nacheinander nach der Eingabe von Stadt-Details gefragt wird, ohne alles komplett neu zu schreiben.

Globale Inhalte

Herausforderung: Es gibt Inhalte, die gelten auf einer deutschlandweiten Ebene. Diese können sich ändern und müssen upgedatet werden. Einzelne Städte haben nicht zwingend Interesse, zusätzlich globale Inhalte zu pflegen.

Wunsch nach privaten Instanzen

Sicheres Einspielen von Updates

Herausforderung: Neue Versionen müssen getestet werden und dürfen keine bestehende Funktionalität brechen.

Update der Entwicklungsumgebung

Datenbank

Herausforderung: Ein Pull vom Livesystem, um die lokale Datenbank anzupassen dauert jetzt schon mehrere Minuten. Mit noch mehr Städten wird diese Last weiter steigen.

Lösung: Aufbauend auf der database.sql ein search-replace und diese ausführen. Damit vermeidet man zumindest den schleppenden Netzverkehr.