In Q4 im letzten Jahr hatten wir wieder einen Sprint für technische Verbesserungen genutzt.
Das machen wir regelmäßig, damit keine übermäßigen technischen Schulden auf uns zukommen und wir immer auf dem aktuellen Stand sind.
Auch Performance-Verbesserungen sind da häufig ein Thema, wie zum Beispiel die Suchseiten-Performance oder der schnelle Export.
Dieses Mal lag uns aber eine Verbesserung des Imports am Herzen. Das hatten wir schon lange angedacht, hatten bisher aber noch keine Ressourcen dafür.
Folgende Probleme wollten wir damit lösen:
- Der Import schlägt manchmal fehl und die Fehlersuche ist relativ schwierig.
- Das Portal steckt manchmal in einem Zustand fest, in dem kein neuer Import gestartet werden kann, weil etwas fehlgeschlagen ist. Da ist häufig manuelle Arbeit nötig gewesen, auch beim Entwickeln selbst (da schlägt ja häufiger etwas fehl).
- Für die Entwickler hat der Import auch Schwierigkeiten bereitet: Wir konnten unsereren Debugger nicht verknüpfen, weil der Import in einem eigenen Prozess lief. Das hat Zeit gekostet, immer eine provisorische Lösung einzubauen.
- Viele Datenbankprobleme hatten die Ursache darin, dass der Import in einem eigenen Prozess lief und die Portal-Anwendung die Änderungen nicht direkt mitbekommen hat – da gab es also auch Verzögerungen durch Caching.
Wie wir es gelöst haben:
Wir haben den Import aus der Datei weiterhin eingelesen und diesen aber in eine Datenbank-Tabelle geschrieben. Dann starten wir einen Hintergrundtask in der Anwendung und holen uns immer die nächsten 100 Einträge, die importiert werden sollen, bis alle zu importierenden Einträge abgearbeitet sind. Das ist nun deutlich robuster.
An der eigentlichen Import-Logik (z. B. dem Überschreiben von Einträgen) hat sich nichts geändert.
Weiterer Vorteil: Man kann jetzt mehrere Importe nacheinander starten
Das war früher nicht möglich. Da musste man erst warten, bis der letzte Import fertig war. Nun werden die Importe einfach nacheinander abgearbeitet. Es gibt auch keine Meldungen mehr, dass gerade ein Import läuft.
Die Benachrichtigung nach Abschluss des Imports erfolgt wie bisher in einer E-Mail für jeden einzelnen Import, also jede hochgeladene Import-Datei.
Hinterlasse eine Antwort