Moin,

In unserer Besprechung heute haben wir festgestellt, dass die aktuelle technische Struktur der xRes-Software (Verzeichnis- und Repo-Struktur) nicht optimal sind und haben Ansätze für die Lösung besprochen.

Probleme:

Grundidee unserer Lösung:

Die Umsetzung haben wir in diese Schritte / Reihenfolge gelegt:

  1. Zuerst "reparieren" wir das DB-Deployment und vermeiden damit die Probleme, die wir in allen vergangenen Releases mit der Reihenfolge von Schema-Änderungs-Dateien hatten. In Zukunft werden Dateienamen von Schema-Änderungen statt der durchlaufenden Nummer mit einem Unix-Timestamp beginnen. Das DB-Deployment und der zugehörige Unit-Test werden entsprechend angepasst.
  2. Dann wird VBE ein erstes "Package" erzeugen und mit mir zusammen den Build-Prozess erweitern. Über eine Mittwochs-Session werden wir dann den Prozess des Umzugs von Code aus "modules" und "lib" in "packages" abstimmen.
    Der Ansatz für diesen Umzugsprozess ist es noch NICHT, Pakete auch per composer.json zu laden. Statt dessen werden wir eine Anbindung z.B. per git-submodules verwenden, dies wird den Umzug erleichtern und Dependency-Probleme auf später verschieben.
    Mit dieser Stufe hoffen wir, bis xRes 2.5 fertig zu sein.
  3. Im nächsten Schritt wird die Config zentralisiert (also: alle Konfigurationen einer xRes-Instanz). Es gibt dabei mehrere Ansätze, die xResConf.xml statt des bisherigen Broadcast zu verteilen, auf einer Maschine nur einmalig und zentral abzulegen und ggf. gar in einem Repo automatisch zu versionieren.
    In diesem Schritt sollte ferner das Verzeichnis "modules" entfernt werden und damit das git-Repo der Verzeichnis-Struktur im Livebetrieb angeglichen werden.
    Nicht zuletzt wäre zu überlegen, ob wir in dieser Stufe des Umbaus ein "webroot" einführen und allen anderen Code an eine Stelle verschieben, die per Apache nicht erreichbar ist. Auf diese Weise können wir die Sicherheit der Software erhöhen (besonders auf dem Service01) und Logs ENDLICH auf die vorgesehene Daten-Partition verschieben.
  4. Im letzten Schritt wird die Paketierung auf das Abhängigkeits-System umgestellt. Die Packages werden als Pakete gebaut, zentral abgelegt und per composer zu einem Verzeichnisbaum zusammen geführt. Es muss dafür einmalig aufgeschlüsselt werden, welches Package welche anderen Packages benötigt und daraus eine composer.json erzeugt werden.
    In diesem Schritt kann auch der Autoloader auf einen vom Composer erzeugten Cache umgestellt werden.
  5. Optional kann in einem zusätzlichen Arbeitsgang überlegt werden, ob wir die Versionierung von Paketen zulassen wollen. Aktuell sieht es nach einer nicht erforderlichen Komplexität aus, in Zukunft KÖNNTE es aber hilfreich sein, von einem Package neben der neusten auch alte Versionen vorliegen zu haben und diese in noch nicht aktualisierten Modulen zu verwenden.

@VBE: DANKE für den Vorschlag!

VG SRK

-- 
Mit freundlichen Grüßen
 
Stefan Rank-Kunitz
 - Lead Developer -
________________________________________________________
TraSo GmbH

Georg-Schumann-Str. 294
D-04159 Leipzig
Tel.: +49 341 355 740 - 43

E-Mail: s.rank-kunitz@traso.de
________________________________________________________
Handelsregister: Amtsgericht Leipzig, HRB 21850