Neue Versionen für Serveranwendung

DaBe1812

Bekanntes Mitglied
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?
 

Marinek

Bekanntes Mitglied
Hi,

für Datenbankmigration verwende ich immer


oder Flyway.

Liquibase finde ich persönlich deutlich besser.

Du sagst nicht, welches Framework verwendet wird. Aus Erfahrung kann ich sagen, dass es gut funktioniert die DB Änderungen beim Start der Anwendung durchzuführen. Um hier keine Unfälle zu produzieren würde ich die Datenmigration aber seperat durchführen.

Bei solchen Sachen, wie Blue/Green Deployment ist es empfehlenswer die neue Version und die alteversion in der Software zu unterstützen. ggf. durch sinnvolle Adaptoren.

Für die Versionspfle möchte ich am Besten die Informationen aus GIT nutzen. Wir verwenden für die Entwicklung gitflow, somit hat man den Versionsstring explizit in dem Branchnamen und die Buildnummer anhand des Commit Hashes.

Die Buildwerkzeuge (grade, maven etc.) können diese Daten lesen und der Anwendung bereitstellen. Die Anwendung kann diese Daten lesen und darstellen.
 

LimDul

Top Contributor
Liquibase würde ich auch empfehlen.

Für die Nummerierung der Versionen sollte man sich für ein Schema entscheiden, ein bekanntes ist https://semver.org/

Bzgl. der Pflege der Versionen. GIT + Maven/Gradle. Bei uns ist es so, es gibt einen Main Branch der die Entwicklung für die nächste Version enthält und dann z.B. die Version 3.1.0-SNAPSHOT hat. Wenn die Version released wird, dann wird ein Branch hotfix-3.1 angelegt, wo bei Bedarf dann 3.1.1, 3.1.2 usw. gebaut werden. Der Main bekommt dann - je nach dem was die nächste Version ist - 3.2.0-SNAPSHOT oder 4.0.0-SNAPSHOT.

Mittels der Build-Tools (Maven/Gradle) kann man z.B. die Version auch in eine MANIFEST-Datei schreiben und aus der Anwendung drauf zugreifen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
deetee Neue JEE Infrastruktur aufsetzen Allgemeines EE 33
G Neue Session bei der Verwendung von Frames Allgemeines EE 3
Y Eine neue Seite mit Servlet öfnnen Allgemeines EE 9
N JBoss Problem mit Bibliothek in unterschiedlichen Versionen Allgemeines EE 2
K Welche Versionen? Allgemeines EE 3
Oneixee5 JSON für Spring Boot Endpunkte erzeugen Allgemeines EE 8
TheWhiteShadow JSF plugins für tomcat webapp Allgemeines EE 0
R Docker für Windows in Microservices-Projekt Allgemeines EE 2
2 Wildfly JPA Konfiguration für mysql Allgemeines EE 0
R RHCSA/RHCE für Software Architect? Allgemeines EE 1
G JSF Datenstruktur für DataTable Allgemeines EE 2
S Welcher Java EE Applikationserver für RESTful Webservice? Allgemeines EE 2
G Softwarearchitektur für Batchjobs Allgemeines EE 1
A @Webfilter - für doppelte Anmeldung Allgemeines EE 0
R DotNet für J2EE Programmierer Allgemeines EE 1
I Brauche Anregungen für Mandantensystem: Abspeicherung Allgemeines EE 4
R Welches System das beste für programmierer. Linux oder Windows Allgemeines EE 8
L JSP: Dynamischer Content mit Beans für einen Konfigurator? Allgemeines EE 0
M JAX-RS: Unterschhiedliche Typen für POST und GET Allgemeines EE 1
A Zufallstext für YellowPress Allgemeines EE 5
D Prozess für die Zusammenarbeit Allgemeines EE 7
F Gesucht: Gratis Server für Java Entwickler Allgemeines EE 4
A Ideen für Datenhaltung Allgemeines EE 9
c_sidi90 Gute Bücher/Tutorials für Einstieg in JSP/Servlets Allgemeines EE 3
H Glassfish - Open Source Lizenz für den kommerziellen produktiven Einsatz? Allgemeines EE 2
Evil-Devil Server/Tech-Empfehlung für Web-App? Allgemeines EE 12
M Wegweiser für Projekt einer Katastrophen-Stab-SW gesucht! Allgemeines EE 2
slawaweis CMS Unterbau für eine Web 2.0 Anwendung Allgemeines EE 4
B Frameworks/Technologien für Web-Anwendungen Allgemeines EE 16
P Nur ein User für Web Application Allgemeines EE 11
W Struts Tutorial für EE Noobs? Allgemeines EE 2
H Installer für Tomcat-Anwendung Allgemeines EE 5
D maven für javaEE projekt Allgemeines EE 20
Java.getSkill() Anwendung Beans für Formulare Allgemeines EE 5
T Einstieg JEE: Frage für Frage bis zum Erfolg :-) Allgemeines EE 28
Antoras JSP für MVC geeignet? Allgemeines EE 13
I Für dieses Projekt ausreichend? Allgemeines EE 6
P [Maven2] maven-jaxb2-plugin - Kein absoluter Pfad für "<schemaDirectory> möglich??? Allgemeines EE 2
T Suche Buch für: Large Scale Web-Apps | Clustering | Scaling in Java ? Allgemeines EE 4
2 JSTL Tags für eine Bean? Allgemeines EE 4
S Weboberfläche für jconsole Allgemeines EE 5
I Klassen werden nicht für Import erkannt eclipse EE Allgemeines EE 2
F Architekturvorschläge für Online-Wörterbuch? Allgemeines EE 5
foobar Client-Jar und JPA-Entities für Remotzugriff Allgemeines EE 12
G Framework für selbsterstellte Formular und Seiten gesucht Allgemeines EE 3
R Sourcen einbinden von J2EE bzw auch für Servlets in Eclipse Allgemeines EE 8
D Standard für Authentifzierung und Autorisierung Allgemeines EE 5
D Liste für dataTable (JSF) manuell füllen Allgemeines EE 2
R Tutorial für J2EE Allgemeines EE 3
F FORM Auth in JBoss für User mit falscher Rolle ? Allgemeines EE 2
M Eclipse GUI für EJB-QL bzw HQL? Allgemeines EE 4
eskimo328 java oder php für Support-Ticketing-System Allgemeines EE 12
A web.xml für Servlet in Tomcat 5.5 erstellen Allgemeines EE 2
J Timeout für InitialContext Allgemeines EE 2
A web.xml für Servlet in Tomcat erstellen Allgemeines EE 6
J Encoder für Java String in html format Allgemeines EE 6
N Zugriff auf Webapp nur für localhost definieren (Tomcat) Allgemeines EE 2
J Konvertierungs-Fehler: Wert ''{0}'' für Modell ''{1}'' Allgemeines EE 10
flashfactor Gibt es ein Case Management für Java Application Server? Allgemeines EE 6
T Zu blöd für JSTL Allgemeines EE 6
B GlassFish & JAAS - Konfiguration für AppClient Allgemeines EE 1
M Kostenloses JSP Plugin für Eclipse Allgemeines EE 6
flashfactor Gibt es ein Transportsystem für Java EE Allgemeines EE 5
boxi JSF für Anfänger Allgemeines EE 8
F JSF h:outputlink für zurück Allgemeines EE 5
boxi JSF Parameter für die nächste seite übergeben Allgemeines EE 2
W Arbeitsumgebung für JSP-Development einrichten (Eclipse, .) Allgemeines EE 3
F Quiz in JSP - Sessionvariable mitzählen (für richtige Antw.) Allgemeines EE 2
P Basissystem für J2EE App Allgemeines EE 5
P JSP Servlets/ Java Klassen für FTP FileUpload (Bilder) + DB Allgemeines EE 3
W Statistiken für Webseiten? Allgemeines EE 2
E Popup Fenster für fertige JSP Seit? Allgemeines EE 3
G Java EE SDK für Mac OS X? Allgemeines EE 3
K JSP für DB-Verbindung Allgemeines EE 4
H relativer Pfad für stylesheet und Pics Allgemeines EE 5
H Gibt es ein jBoss Tutorial für JSPs ? Für Anfänger ? Allgemeines EE 5
J JSF: Authentifizierung für einen einzigen Fall "umgehen Allgemeines EE 6
H Test Application für Tomcat Allgemeines EE 3
S String escpapen für JavaScript, Datenbank, HTML Allgemeines EE 2
C Tutorial für JSF Allgemeines EE 4
G WEB-INF/classpath funktioniert nicht für Dateien Allgemeines EE 2
G StandAlone & DB im Intranet [Ehem.: Beratung für Einstei Allgemeines EE 8
Phreaker Wo bekomm ich für den JBOSS ne build.xml her? Allgemeines EE 2
B Java-Client für eBaySOAP-API liefert HTTP(400) Bad Request Allgemeines EE 2
M image für submit button Allgemeines EE 3
F relativer Pfad in Servlets für Dateien Allgemeines EE 2
H Schnelleinstieg für J2EE Projekt? Allgemeines EE 5
B Besondere Ländereinstellungen für eine TomcatApp Allgemeines EE 2
G Firefox Plugin für HTTP (req&resp) visualisierung? Allgemeines EE 2
ronny "jWic" Projekt: Framework für Webapplikationen Allgemeines EE 8
H JNDI Name für die Queue - Connection Factory in JBoss ändern Allgemeines EE 3
A Dateinamen für OutputStream Allgemeines EE 2
C "Data-holding" Klasse für JSP und ear Allgemeines EE 9
G Kickstart für JSF Allgemeines EE 2
D wysiwyg-editor für velocity? Allgemeines EE 3
J Hilfe. brauche Dokumente für die Diplomarbeit Allgemeines EE 9
A relativer Pfad zim Tomcat-Verzeichnis für FileInputStream Allgemeines EE 3
A Brauche ich J2EE für Beans? Allgemeines EE 9
J Test-Tools für JSP-Files? Allgemeines EE 9
C JSP Editor für Linux Allgemeines EE 3

Ähnliche Java Themen

Neue Themen


Oben