Zielgruppe BetriebVersion: GSB10.1Publikationsprozess
Die Publikation redaktioneller Inhalte wird vom Contentserver angestoßen.
Der publizierte Content wird durch den Contentserver in die Liveumgebung publiziert, indem der Content zunächst auf den Masterliveserver publiziert wird. Der Masterliveserver hält alle publizierten Inhalte vor und sorgt anschließend dafür, dass die angebundenen Replicationliveserver ebenfalls mit dem publizierten Content aktualisiert werden.
Der Publikationsprozess ist wie skizziert ein dreistufiger Prozess der im Folgenden beschrieben wird.
Zusammenstellung der zu publizierenden Dokumente
Die zu publizierenden Dokumente werden in initial auf dem Contentserver in einem sogenannten Publication-Set zusammengestellt. Das Publication-Set umfasst die folgenden Informationen:
- Contentzusammenstellung: Die Zusammenstellung umfasst alle zu publizierenden redaktionellen Dokumente inkl. der enthaltenen Binärdokumente (bspw. Bilder, Downloads)
- Liste der Publikationsevents: für jedes zu publizierende Dokument wird ein Publikationsevent erzeugt.
- Publication-Wrapper: Zusammenfassung der Publikationsevents im sogenanneten Publication-Wrapper. Der Wrapper kapselt somit das Publication-Set bzw. definiert dieses eindeutig.
Das Publication-Set wird direkt per HTTP/REST dem Masterliveserver übergeben. Die eigentliche Publikation wird vom Contentserver angestoßen indem ein REST-Aufruf gegen die HTTP-Schnittstelle des Masterliveservers durchgeführt wird. Der REST-Endpunkt des Masterliveservers ist in der Runtime-Property publisher.<TARGET>.uri
definiert. Die Übergabe des Publication-Sets vom Content- an den Masterliveserver erfolgt On-The-Fly, d.h. es werden keine temporären Dateien, o.ä. angelegt.
Verarbeitung auf dem Masterliveserver
Der Masterliveserver nimmt das Publication-Set entgegen und speichert dieses zunächst in seinem Temp-Directory. Das Temp-Directory des Repositories wird in der Systemd Service-Unit in der Varialbe java.io.tmpdir
definiert. Das zugrundeliegende Filesystem sollte hinreichend groß dimensioniert sein, um mehrere Publikationen speichern zu können. Im Idealfall sollte dieses die 2-3fache Größe des größten Mandanten umfassen.
Nachdem das Publication-Set gespeichert worden ist, wird der Import in das Repository des Masterliveservers durchgeführt. Im ersten Schritt wird der Content in das Repository geladen und anschließend werden die Pubklikationsevents des Publication-Wrappers erzeugt.
Nachdem die Events erfolgreich im Masterliveserver geschrieben worden sind, erfolgt die Quittung
der erfolgreichen Publikation gegenüber dem Contentserver. Damit ist aus Sicht des Contentservers die Publikation erfolgreich durchgeführt worden.
Das Publication-Set liegt weiterhin im Temp-Dir, um dieses anschließend an die angebundenen Replicationliveserver übertragen zu können.
Replication an die Replicationliveserver
Die auf den Masterserver publizierten Publication-Sets werden anschließend durch den Masterliveserver an die angebundenen Replicationliveserver übertragen. Hierzu prüft der Masterliveserver, auf welchen Replicationliveservern das Publication-Set noch nicht vorhanden ist. Anschließend wird dieses an die betreffenden Replicationliveserver übertragen.
Die Übertragung an die Replicationliveserver erfolgt ebenfalls per HTTP/REST. Die REST-Endpunkte der Replicationliveserver sind in der Runtime-Property replication.targets
definiert.
Die Verarbeitung des Publication-Sets auf dem Replicationliveserver entspricht im Prinzip dem Vorgehen auf dem Masterliveserver. D.h. das Publication-Set wird zunächst im Temp-Dir des Replicationliveservers gespeichert.
Anschließend erfolgt der Import der Inhalte in das Repository des Replicationliveservers und das abschließende Erzeugen der Publikationsevents.
Damit ist die Publikation des Publication-Sets auf dem Replicationliveserver abgeschlossen und das Publication-Set wird im Temp-Dir des Replicationliveservers gelöscht.
Housekeeping
Wie in der Beschreibung des Publikationsprozesses schon angedeutet, werden die Publication-Sets auf dem Masterliveserver im Temp-Dir abgelegt, damit diese von dort aus in einem nachträglichen Schritt an die Replicationliveserver repliziert werden können.
Die Publication-Sets verbleiben in Anschluss der Replikation im Temp-Dir da ggf. noch weitere Replicationliveserver mit dem Publication-Set aktualisiert werden müssen.
Das Temp-Dir des Masterliveservers sollte somit einer Überwachung unterliegen, um frühzeitig reagieren zu können wenn das zugrundeliegende Filesystem vollläuft oder alternativ über einen regelmäßigen Housekeeping-Prozess aufgeräumt werden, indem bspw. Dateien älter als eine Woche im Temp-Dir zu löschen.