Software-Abhängigkeiten
Inspiriert von der Grafik „Dependency“ stellen wir heute kurz die wichtigsten Fakten zur Vorgehensweise bei der Entwicklung der prometheus-Software vor.
Im aktuellen Hauptentwicklungsstapel haben wir ruby on rails 7.1, ruby 3.2, elasticsearch 8.7, mariadb 10.11 und apache 2.4 neben den anderen Komponenten imagemagick zum Verarbeiten von Bildern, ffmpeg zur Verarbeitung von Videos und nokogiri zur Verarbeitung der meisten Metadatenimporte. Zunächst testen wir alle Änderungen und Neuerungen auf unserer aus zwei Teilen bestehenden Testsuite. Zum einen unterhalten wir eine Unit-Test-Suite mit Minitest, um wichtige Komponenten unserer Anwendung isoliert zu testen, wie z.B. das Berechtigungsmodell und die Bildverarbeitung. Zum anderen simuliert unsere e2e-Suite mit selenium-webdriver echte Benutzer*innen, die einen Browser starten und die Prometheus-Anwendung verwenden. Kein Code wird jemals auf unseren Servern bereitgestellt, ohne dass er alle Tests zuvor bestanden hat.
Um sicherzustellen, dass wir neue Teammitarbeiter*innen leicht einarbeiten können und gleichzeitig einen konsistenten Codestil beibehalten, verwenden wir rubocop während unserer Testläufe, mit der ein paar Regeln durchzusetzen sind. In ähnlicher Weise führen wir Sicherheitsaudits mit Tools wie Brakeman durch. Während der Entwicklung verwenden wir eine Reihe von Debuggern und Profilern, um Flaschenhälse einzugrenzen und schwer zu findende Fehler zu beheben.
Das Bildarchiv betreiben wir auf drei Servern mit insgesamt 12 CPUs und 48G RAM. Vor kurzem wurden diese und unsere anderen Server auf Debian 12 migriert, die Basis für viele beliebte Linux-Distributionen wie Ubuntu oder Mint.