G
Gelöschtes Mitglied 68249
Gast
Hi,
ich habe mal ein paar grundsätzlich Fragen zur Versionierung, und wie ihr das macht, bzw. machen würdet.
Ich arbeite seit fünf Jahren an einer Serveranwendung mit Web-Frontend und in der Zeit haben wir einige Versionen veröffentlicht. Aber so ein paar Sachen denke ich mir immer könnten besser laufen. Mittlerweile habe ich wenigstens die Versionsnummer dreistellig, also die erste Zahl für große technische Veränderungen, die zweite für kleine und de dritte für fixes. Hier schon die erste Frage, macht eine vierte Zahl für das Build Sinn? Und wie zählt man das?
Kleines Vorwort zur Umgebung. In der Firma gibt es nativ viele Schichten, in dem Projekt gibt es emotional 5 Schichten, Anwendungsserver ist immer ein WLP:
Entwicklung -> lokaler Build, der die Datenbank der Test mit verwendet. Kann komplett frei gewartet und konfiguriert werden. Von hier hat man Zugriff auf sowohl produktive, als auch Test-Fremdsysteme.
Test -> liegt auf einem AIX Server, Files aus dem Build werden in einem Serververzeichnis abgelegt und der Applikationsserver wird mit einer Datei zur Installation der neuen Sourcen animiert. Ab hier ist keine eigene Konfiguration des WLP mehr möglich. Zugriff nur auf Entwicklungsumgebungen der Fremdsysteme.
Abnahme -> AIX-Server, eigene Datenbank. Transport der Sourcen nur mit einem Paket, Installation muss formlos beantragt werden, Zugriff nur auf Pre-Prod-Systeme der Fremdsysteme.
Pilot -> Eigene Datenbanken, alles, wie davor, nur liegt der AIX in der Produktivumgebung und kann somit auch auf die Prodsysteme der Fremdsysteme zugreifen. Hier sieht man, ob die Firewallfreigaben passen.
Produktion -> Wie Pilot, mit eigener Datenbank, aber hier sind dann auch mehr User auf dem System.
Datenbank ist im Hintergrund immer eine Oracle. Und die Datenbank bereitet mir seit Jahren am meisten Kopfzerbrechen. Jeder kennt es, dass in einer neuen Version evtl. Tabellen dazu kommen, oder bestehende Tabellen verändert werden müssen. Am Anfang hat das für mich bedeutet, dass ich die Veränderungsstatements selbst ausgeführt habe. Also entweder die Nacht vor dem Update, oder nach dem Update, was dann meistens in einem Neustart des Servers ausgeartet ist.
Mittlerweile habe ich eine Klasse im Build, die beim Serverstart direkt geladen wird und die Anpassungen machen soll. Hier gibt es aber das Problem, dass alles in jedem Stage funktioniert, NUR Create-Statements werden aus unbekannten Gründen nicht im Prod ausgeführt. Pilot ja, Prod nein. ch verwende dann denselben User, wie auch der WLP um die Creates manuell ab zu setzen. Diese kann ich theoretisch im Prod auch schon während der Abnahme ausführen, weil neue Tabellen tun dem Code ja nicht weh, aber ich verstehe es nicht.
Aber dazu meine Frage, wie könnte man die Datenbankveränderungen denn sonst noch anstoßen, bzw. wie würdet ihr das machen?
Des weiteren noch eine kleine Frage, wo sollte ich die Versionsnummer meiner Anwendung Pflegen, bzw. gibt es vielleicht eine sinnvolle Möglichkeit, dass die Anwendung diese selbst pflegt?
ich habe mal ein paar grundsätzlich Fragen zur Versionierung, und wie ihr das macht, bzw. machen würdet.
Ich arbeite seit fünf Jahren an einer Serveranwendung mit Web-Frontend und in der Zeit haben wir einige Versionen veröffentlicht. Aber so ein paar Sachen denke ich mir immer könnten besser laufen. Mittlerweile habe ich wenigstens die Versionsnummer dreistellig, also die erste Zahl für große technische Veränderungen, die zweite für kleine und de dritte für fixes. Hier schon die erste Frage, macht eine vierte Zahl für das Build Sinn? Und wie zählt man das?
Kleines Vorwort zur Umgebung. In der Firma gibt es nativ viele Schichten, in dem Projekt gibt es emotional 5 Schichten, Anwendungsserver ist immer ein WLP:
Entwicklung -> lokaler Build, der die Datenbank der Test mit verwendet. Kann komplett frei gewartet und konfiguriert werden. Von hier hat man Zugriff auf sowohl produktive, als auch Test-Fremdsysteme.
Test -> liegt auf einem AIX Server, Files aus dem Build werden in einem Serververzeichnis abgelegt und der Applikationsserver wird mit einer Datei zur Installation der neuen Sourcen animiert. Ab hier ist keine eigene Konfiguration des WLP mehr möglich. Zugriff nur auf Entwicklungsumgebungen der Fremdsysteme.
Abnahme -> AIX-Server, eigene Datenbank. Transport der Sourcen nur mit einem Paket, Installation muss formlos beantragt werden, Zugriff nur auf Pre-Prod-Systeme der Fremdsysteme.
Pilot -> Eigene Datenbanken, alles, wie davor, nur liegt der AIX in der Produktivumgebung und kann somit auch auf die Prodsysteme der Fremdsysteme zugreifen. Hier sieht man, ob die Firewallfreigaben passen.
Produktion -> Wie Pilot, mit eigener Datenbank, aber hier sind dann auch mehr User auf dem System.
Datenbank ist im Hintergrund immer eine Oracle. Und die Datenbank bereitet mir seit Jahren am meisten Kopfzerbrechen. Jeder kennt es, dass in einer neuen Version evtl. Tabellen dazu kommen, oder bestehende Tabellen verändert werden müssen. Am Anfang hat das für mich bedeutet, dass ich die Veränderungsstatements selbst ausgeführt habe. Also entweder die Nacht vor dem Update, oder nach dem Update, was dann meistens in einem Neustart des Servers ausgeartet ist.
Mittlerweile habe ich eine Klasse im Build, die beim Serverstart direkt geladen wird und die Anpassungen machen soll. Hier gibt es aber das Problem, dass alles in jedem Stage funktioniert, NUR Create-Statements werden aus unbekannten Gründen nicht im Prod ausgeführt. Pilot ja, Prod nein. ch verwende dann denselben User, wie auch der WLP um die Creates manuell ab zu setzen. Diese kann ich theoretisch im Prod auch schon während der Abnahme ausführen, weil neue Tabellen tun dem Code ja nicht weh, aber ich verstehe es nicht.
Aber dazu meine Frage, wie könnte man die Datenbankveränderungen denn sonst noch anstoßen, bzw. wie würdet ihr das machen?
Des weiteren noch eine kleine Frage, wo sollte ich die Versionsnummer meiner Anwendung Pflegen, bzw. gibt es vielleicht eine sinnvolle Möglichkeit, dass die Anwendung diese selbst pflegt?