Blog

Was ist eigentlich eine Bereitstellung?

Robert van Loghem

Aktualisiert Oktober 23, 2025
6 Minuten
Sie haben gerade die erste Version Ihrer Anwendung mit Maven gebacken. Als nächstes starten Sie die Verwaltungskonsole des Anwendungsservers in der Entwicklungsumgebung. Dann stellen Sie die neue Version von ear-file auf dem Server bereit und starten Ihren Browser, um zu sehen, ob Sie die Anwendung erreichen können. Als Sie versuchen, die Seite zu laden, erhalten Sie die DNS-Fehlermeldung "Host nicht gefunden". Zeit, Bob anzurufen! - dem freundlichen Betreiber der ganzen verrückten Infrastruktur und Middleware. Bob ist natürlich gerne bereit, einen DNS-Eintrag hinzuzufügen, der www.app-in-dev.com auf einen Apache-Server verweist. "Moment! Ein Apache-Server?", rufen Sie aus. "Aber er sollte auf unseren Anwendungsserver verweisen, nicht auf einen HTTP-Server." Bob, der inzwischen daran gewöhnt ist, jungen Entwicklern die Feinheiten moderner Netzwerktopologien beizubringen, erklärt ruhig, dass alle Anfragen, die von einem Browser kommen, zunächst einen Cluster von HTTP-Servern durchlaufen müssen, bevor die Anfragen an die Anwendungsserver weitergeleitet werden. " Sie müssen auch Apache konfigurieren!" sagt er. "Aber ich entwickle eine Java-Anwendung, ich muss sie nur auf einem Anwendungsserver bereitstellen und dann bin ich fertig", antworten Sie. Bob seufzt. "Hören Sie, mein Sohn, das Drücken der Schaltfläche Deployment in der Verwaltungskonsole ist nur ein kleiner Satz in der großen Deployment-Geschichte." Das Ziel einer Bereitstellung Bevor ich auf die ganze Geschichte der Bereitstellung eingehe, müssen Sie sich erst einmal klar machen, was das Ziel einer Bereitstellung ist. Es ist: "Eine Anwendung für Endbenutzer verfügbar machen". Das bedeutet, dass der Endbenutzer seinen Browser geöffnet hat, "www.app.com" eingibt und die Anwendung in der Produktion sieht, daher die www.app.com URL, voll funktionsfähig!Was wird also benötigt, um die Anwendung auszuführen? Verfolgen wir die Browseranfrage des Endbenutzers und sehen wir uns an, auf welche Komponenten sie trifft; Zuerst trifft sie auf eine Firewall, dann auf einen http-Server, eine weitere Firewall, den Anwendungsserver und schließlich auf die Anwendung, die auf dem Anwendungsserver läuft und eine Datenbank zum Abrufen von Daten verwendet. Insgesamt sind 5 Komponenten involviert, um die Anwendung erfolgreich verfügbar zu machen: Wir müssen nicht nur alle 5 Komponenten konfigurieren, sondern auch einige Daten auf einigen dieser Komponenten platzieren und sicherstellen, dass sie in der richtigen Reihenfolge (neu) gestartet werden, damit der Endbenutzer ein schönes Bild erhält. Wenn ich alle Schritte aufschreiben würde, die für eine vollständige Bereitstellung der Anwendung in der Produktion erforderlich sind, würde das in etwa so aussehen
a. Führen Sie SQL-Skripts zum Erstellen von Tabellendefinitionen in der Datenbank aus. b. Konfigurieren Sie die JDBC-Datenquelle im Anwendungsserver c. Konfigurieren Sie http-Ports und virtuelle Hosts im Anwendungsserver, damit die Anwendung für http-Anfragen erreichbar ist d. Installieren Sie die Anwendung auf dem Anwendungsserver e. Starten Sie die Anwendung f. Konfigurieren Sie die Firewall, indem Sie Ports öffnen, um die Kommunikation zwischen dem http-Server und dem Anwendungsserver zu ermöglichen g. Konfigurieren Sie einen http-Server so, dass Anfragen, die für "www.app.com" eingehen und NICHT mit z.B. .js,.html,.gif enden, an den Anwendungsserver weitergeleitet werden h. Platzieren Sie den statischen HTML-Inhalt auf dem http-Server i. Starten Sie den http-Server (erneut), damit er die neue Konfiguration einliest j. Konfigurieren Sie die externe Firewall so, dass der Zugriff von "www.app.com" auf den richtigen http-Server geleitet wird.
Eine komplexere Umgebung fügt der Liste der Bereitstellungsschritte natürlich noch mehr Schritte hinzu. In einer hochverfügbaren Cluster-Umgebung muss ich beispielsweise alles mindestens zweimal machen und sicherstellen, dass alle Komponenten für die Ausführung in dieser Cluster-Umgebung konfiguriert und (neu) gestartet werden. Eine Bereitstellung ist eigentlich... Die oben genannten Schritte stellen sicher, dass "eine Anwendung für Endbenutzer" in der Produktion verfügbar ist. Sie lassen sich im Allgemeinen in die folgenden Bereitstellungskategorien einteilen, und das ist es, was eine Bereitstellung wirklich ist:
1. Installation von Anwendungen (Schritt d.) Dies ist der zentrale Teil der Bereitstellung, bei dem die eigentliche Anwendungslogik auf dem Server installiert wird. In J(2)EE/Java bedeutet dies normalerweise die Installation einer EAR- oder WAR-Datei. 2. Konfigurieren von Ressourcen (Schritt b.) Die Anwendung benötigt möglicherweise Daten aus anderen Systemen, wie Datenbanken oder Mainframes. Die Anwendung kann Ressourcen verwenden, um Daten abzufragen oder zu empfangen. Ressourcen werden normalerweise im Anwendungsserver konfiguriert. 3. Konfigurieren von Middleware-Komponenten (Schritt a, c, f, g, h, j.) Um die Anwendung zu erreichen oder eine Instanz bereitzustellen, auf der die Anwendung ausgeführt oder Daten untergebracht werden können (z.B. Erstellen von Anwendungsserver-Clustern, http-Server-Instanzen, Erstellen von Datenbankinstanzen, Erstellen/Aktualisieren von Tabellen), muss die Middleware konfiguriert werden. 4. Starten/Stoppen von Komponenten (Schritt e, i.) Um sicherzustellen, dass eine Komponente ordnungsgemäß funktionieren kann, muss sie möglicherweise (erneut) gestartet werden. 5. und alle oben genannten Schritte (1, 2, 3, 4) in der richtigen Reihenfolge auszuführen. Um sicherzustellen, dass die Anwendung ordnungsgemäß und ohne Fehler startet, muss eine gewisse Reihenfolge eingehalten werden, welche Komponente zu welchem Zeitpunkt (neu) gestartet werden muss. Wenn Sie z.B. die Anwendung installieren (Schritt d.) und starten, bevor die Datenquelle konfiguriert ist (Schritt b), wird die Anwendung möglicherweise nicht ordnungsgemäß gestartet. Dies wird noch wichtiger, wenn Sie eine neue Version Ihrer Anwendung in einer hochverfügbaren Cluster-Umgebung bereitstellen. Es gibt eine zusätzliche Kategorie für Unternehmen, die eine DTAP-Umgebung (Entwicklung, Test, Abnahme, Produktion) einrichten: 6. Konfigurieren der installierten Anwendung für verschiedene Umgebungen Bei einer Bereitstellung muss die Konfiguration an eine bestimmte Umgebung angepasst werden. Wenn Sie z.B. eine Anwendung in der Entwicklungsumgebung installieren, benötigt sie einige Daten aus der Entwicklungsdatenbank, dieselbe Anwendung in der Testumgebung benötigt Daten aus der Datenbank in der Testumgebung und so weiter.
Was eine Bereitstellung nicht ist... Viele Leute scheinen zu denken, dass die Installation der Anwendung auf einem Anwendungsserver die eigentliche Bereitstellung ist. Sicher, auf der Schaltfläche in der Verwaltungskonsole des Anwendungsservers steht "Anwendung bereitstellen", aber damit wird nur der Teil des Anwendungsservers erledigt und das funktioniert nur in einfachen Umgebungen, wie der Entwicklungs- oder Entwicklerarbeitsplatzumgebung. Sobald die Anwendung eine komplexere Umgebung mit mehreren Middleware-Komponenten erreicht, reicht dies einfach nicht mehr aus und Sie benötigen zusätzliche Schritte, um die Anwendung für Test-/Endbenutzer zugänglich zu machen. Was oder wer kann eine echte Bereitstellung durchführen Die meisten Leute verlassen sich darauf, dass andere Leute die eigentliche Bereitstellung durchführen, indem sie die Middleware manuell konfigurieren, die Schaltfläche "Bereitstellen" in der Verwaltungskonsole drücken und all das andere Zeug. Einige versuchen, die Bereitstellung zu automatisieren und verlassen sich auf Bereitstellungsskripte oder Produkte wie Phurnace oder Buildforge, aber diese übernehmen nur einen sehr kleinen Teil der eigentlichen Bereitstellung, nämlich nur die Installation von Anwendungen (siehe Kategorie 1 oben) und die Konfiguration von Ressourcen (siehe Kategorie 2 oben). Es gibt nicht viele Produkte auf dem Markt, die eine "echte" Bereitstellung übernehmen können. XebiaLabs bietet ein Produkt namens Deployit an, das alle 6 Bereitstellungskategorien unterstützt. Seien Sie sich darüber im Klaren, was nötig ist Wenn Sie also nicht in der glücklichen Lage sind, Zugang zu einem Produkt zu haben, das eine echte Bereitstellung ermöglicht, sollten Sie sich darüber im Klaren sein, was getan werden muss, damit Ihre Anwendung für den Endbenutzer verfügbar ist. Erstellen Sie ein paar Skripte, verwenden Sie Deployment-Tools und reservieren Sie in Ihrem Projekt Zeit für die manuelle Konfiguration dieser Middleware-Komponenten durch die (Betriebs-)Mitarbeiter.

Verfasst von

Robert van Loghem

I'm always interested in the latest and greatest when it comes to; communication, infrastructure, user experience and coming up with some crazy creative solution which might seem as a weird combination ;) I use and spread the word about multimedia (podcasts, vodcasts, movies, comics) to effectively communicate concepts, ideas, documentation, past experiences and so on. Furthermore i am heavy into infrastructure but then the middleware part, like HTTP servers, Application Servers, Messaging, Virtualization, etc... I get really enthousiastic if the infrastructure is clustered, highly available and is critical to doing business! I also like to do development and thus "i eat my own dogfood".

Contact

Let’s discuss how we can support your journey.