myContent CMS Systemarchitektur

PS.Content basiert auf einer Mikroservice-Architektur. Dh. PS.Content besteht aus verschiedeneren, unabhängigen Diensten (im ug. Schaubild blau), welche spezielle Services dediziert zur Verfügung stellen. Diese Services können auf unterschiedlichen Servern (VMs) und in der Regel mehrfach betrieben werden, um das System entsprechend den Anforderungen zu skalieren. Alle PS.Content Services sind plattformunabhängig (JAVA/Spring).

Des weiteren verwendet PS.Content verschiedene Drittanbieterkomponenten (im ug. Schaubild grün), um zB. Daten oder Dateien abzuspeichern bzw. zu verwalten.

Drittanbieterkomponenten

PostgreSQL

PostgreSQL (kurz Postgres) ist ein plattformunabhängiges objekt-relationales Datenbanksystem. Postgres ist open source und somit kostenfrei einsetzbar.

PS.Content verwendet neben der Basis-Datenbank noch zwei PostrgreSQL-Erweiterungen: PostGIS (Geokoordinaten) und TimeScale-DB (Verarbeitung von Zeitreihendaten für PS.Content #Insights).

PostgreSQL wird auch vom Alfresco DMS (siehe unten) als Datenbanksystem verwendet. Es ist daher möglich, aber nicht empfehlenswert, Alfresco und PS.Content in die gleiche Datenbankinstanz zu installieren. Da mehrere PostgreSQL Instanzen in verschiedenen Versionen auf einem Server betrieben werden können, kann der gleiche Datenbankserver jedoch für beide Produkte verwendet werden.

In der Datenbank werden von PS.Content sämtliche Daten - außer Dateien (Assets) - abgelegt. Zur Ablage von Assets wird ein DMS verwendet. Siehe Alfresco.

Von der Performance her ist PostgreSQL mit Microsoft SQL Server und Oracle Database vergleichbar oder sogar schneller. Es stehen GUI und CLI Management-Tools zur Verfügung.

Postgres-GUI Tools

Alfresco DMS

Alfresco ist ein plattformunabhängiges Dokumenten Management System (DMS) welches von PS.Content verwendet wird, um Dateien jeglicher Art zu verwalten. Alfresco ist open source und in der "Community Edition" kostenfrei nutzbar.

Alfresco ist über eine CMIS Schnittstelle an PS.Content angebunden. Es können auch andere DMS Systeme eingesetzt werden, sofern sie eine CMIS Schnittstelle anbieten.

PS.Content speichert alle Metadaten eines Assets in einem eigenen Content-Model am Alfresco-Dokument. Es können somit verschiedene PS.Content Instanzen mit einem Alfresco DMS verwendet werden. (Staging und Live zB.)

Active MQ (Message Broker)

Da PS.Content aus verschiedenen, zum Teil mehrfach instantiierbaren Mikroservices besteht, die bei Bedarf miteinander kommunizieren müssen, wird eine Message-Queue verwendet um Ereignisse von einem Mikroservice zu potentiellen Empfängern zu übermitteln. Ereignisse können zB. das Speichern eines Artikels, das Importieren eines Elements, das Verändern von Daten etc. sein. Empfänger können zB. Teile von PS.Content aber auch Schnittstellen oder andere Softwareprodukte / -komponenten sein. So reagieren zB. UI Elemente, wie die History-Kachel eines Artikels eigenständig auf Änderungen am angezeigten Datensatz, sobald ein entsprechendes Event empfangen wird - Zb. beim Verändern des Artikels durch einen anderen Benutzer oder einen Systemprozess.

Der Austausch dieser Events erfolgt über JMS (Java Message Service). Active MQ kann Ereignisse Punkt zu Punkt und Punkt zu Mehrpunkt zustellen. Ereignisse werden dabei in einer eigenen Datenbank gepuffert, sodass die Zustellung von kritischen Ereignissen selbst nach einem Neustart des Messaging-Systems oder bei einem Ausfall des Empfängers gewährleistet ist.

Spring Boot Admin

Spring Boot Admin ist eine Management Oberfläche für sog. Spring-Boot-Container. Ein Spring-Boot Container ist eine in sich ausführbare JAVA Applikation die außer einer JAVA Installation (zB. OpenJDK oder Amazon Corretto) keine weiteren Abhängigkeiten aufweist. Alle PS.Content Mikroservices werden als Spring-Boot Container geliefert und können daher automatisch über die Spring-Boot-Admin Oberfläche überwacht und administriert werden. So können zB. die CPU Auslastung, der Speicherverbrauch, die Systemkonfiguration oder Protokollmeldungen eingesehen oder Protokolllevel und Umgebungsvariablen zur Laufzeit ohne Neustart umgestellt werden.


PS.Content Mikroservices

Config-Container

Der Config-Container stellt die zentrale Konfiguration für alle PS.Content-Container / Services außer den Editor-Service bereit.

AufgabeMehrfach instantiierbarZielplattformAbhängigkeiten
Konfigurationswerte für angeschlossene Systeme zur Verfügung stellenneinUnabhängigkeine

Content.Admin (Admin-Container)

Der Admin-Container übernimmt die Benutzerauthentifikation und die Rechteverwaltung in PS.Content. Er wird idR. nur einmalig instantiiert. 

AufgabeMehrfach instantiierbarZielplattformAbhängigkeiten
Benutzer und RechteverwaltungJaUnabhängigDatenbank, Config-Container

Content.Logic (Logic-Container)

Der Logic-Container übernimmt alle Transaktionen mit der Datenbank und dem DMS. Ferner übernimmt er auch alle Ex- und Importe und die Abarbeitung asynchroner Tasks.

→ Konfigschalter Logikserver

AufgabeMehrfach instantiierbarZielplattformAbhängigkeiten
ApplikationslogikJaUnabhängigDatenbank, DMS, Admin-Container, Config-Container

Content.UI (UI-Container)

Der UI-Container stellt die Web-Oberfläche von PS.Content zur Verfügung.

→ Konfigschalter UI Server

AufgabeMehrfach instantiierbarZielplattformAbhängigkeiten
Web-UIJaUnabhängigLogic-Container, Config-Container

Image-Processing

Der Service Image-Processing übernimmt die Bearbeitung von Bilddaten (Pixel und Vektor) zB. Zuschnitte, Previews etc.

Der Image-Processing Service stellt jeweils einen optionalen LRU (least recently used) DiskCache für Original-Bilder und die erstellten Bildausschnitte bzw. Bildvarianten bereit, sodass bei Requests das DMS (Alfresco) diese nicht permanent erneut ausliefern muss bzw. die Varianten erneut berechnet werden müssen.

→ Konfiguration Image-Processing

AufgabeMehrfach instantiierbarZielplattformAbhängigkeiten
BildverarbeitungBedingt (Cache nur pro Instanz)UnabhängigConfig-Container

Cnt.Event.Logic (#Event Logic)

Der Event-Logic-Container kapselt die Applikationslogik für das optionale PS.Content #Event Modul. 

→ Konfiguration #Events

AufgabeMehrfach instantiierbarZielplattformAbhängigkeiten
Applikationslogik #EventjaUnabhängigDatenbank, Admin-Container, Config-Container

Cnt.Event.Gateway (#Event Gateway)

Der Event-Gateway-Container stellt einen REST-Webservice für den externen Zugriff auf Eventdaten für das optionale PS.Content #Event Modul bereit. 

→ Konfiguration #Events

AufgabeMehrfach instantiierbarZielplattformAbhängigkeiten
REST-Webservice #EventjaUnabhängigDatenbank, Admin-Container, Logik-Container, Event-Logic-Container, Config-Container

Cnt.Insight.Logic (#Insights Logic)

Der #Insights-Logic-Container kapselt die Applikationslogik für das optionale PS.Content #Insights Modul. 

→ Konfiguration #Insights

AufgabeMehrfach instantiierbarZielplattformAbhängigkeiten
Statistiken & Tracking, Schreiben der Tracking DatenjaUnabhängigDatenbank, Admin-Container, Config-Container

Cnt.Insight.Proxy (#Insights Proxy)

Der #Insights-Proxy gestattet dem Tracking-Skript, welches auf externen Webseiten, Portalen, Apps etc. eingesetzt wird, die Tracking-Daten zu schreiben.

Es kann ein #Insights-Proxy für einen oder mehrere #Insights-Logic-Container verwendet werden.

AufgabeMehrfach instantiierbarZielplattformAbhängigkeiten

Proxy nach Außen

Beschränkung der Requests/Sekunde

jaUnabhängigInsight Logic, Config-Container

Editor Service

Der Editor-Service bildet die bi-direktionale Schnittstelle zum HUP Print-Redaktionssystem.

→ Konfiguration Editor-Service (Schnittstelle myContent CMS zu myContent PRINT)

AufgabeMehrfach instantiierbarZielplattformAbhängigkeiten
Schnittstelle HUP Print

Ja

Windows x86 / x64

HUP VL Logon/-Service