CMS für die Cloud

Wenn du dich mit dem Thema Cloud beschäftigst, ist Neos CMS einen Blick wert.
Es wurde für die Cloud gebaut. 
Seine entkoppelte Architektur ist prädestiniert für 
verteilte Dienste, nicht-persistente Dateisysteme und natürlich Skalierbarkeit.


Cloud Bestandteile

Was bedeutet "Cloud Readiness"? 
Der Betrieb eines CMS in der Cloud kann recht kompliziert sein, insbesondere bei einem Container-Setup. Unserer Erfahrung nach gibt es einige Probleme, die angegangen werden müssen, damit die Vorteile voll zum Tragen kommen.

Natürlich ist Cloud in erster Linie auf Skalierbarkeit zurückzuführen. Aber bei der Skalierung treten einige Probleme auf. Denke über die gemeinsame Nutzung deines Dateisystems über Container, Protokollierung, Metriken usw. nach. Wie geht Neos mit diesen Herausforderungen um? 


Dateisystem
Dateisystem

Die gemeinsame Nutzung von Dateien über Instanzen hinweg sollte auf jeden Fall vermieden werden. Jede einzelne Instanz muss in sich geschlossen und unabhängig sein. Cloud impliziert auch, dass kein persistentes Dateisystem zur Verfügung steht, daher sind Umgebungsvariablen das Mittel der Wahl. Neos löst diese Probleme - ein lose gekoppeltes Asset-Management mit einer Vielzahl an Adaptern -  Plugins müssen von dieser Tatsache nichts wissen.

Cloud Storage Support
Das "Storage Interface" integriert externe Datenquellen direkt in den Redaktions-Workflow. Implementierungen existieren für "Amazon S3" und "Google Cloud Storage".
Cloud / Container Ready
Neos eignet sich gut für den Betrieb in einer Cloud-Umgebung, insbesondere durch die Konfiguration über Environment-Variablen und Cloud-Storage. In der Community gibt es viel Erfahrung, Neos in Kubernetes oder Heroku/Dokku zu betreiben.
Private Cloud
Mit der Asset-Quelle Nextcloud erhältst du über das Medienmodul direkten Zugriff auf Daten in deiner privaten Cloud.
Asset-Quellen
Externe Assets können über das "AssetSourceInterface" integriert werden. Damit lassen sich sowohl DAM-Systeme als auch MediaLibraries anbinden.
Logging und Fehler
Logging und Fehler

In einer ephemerischen Umgebung ist das Wissen, wo genau ein Fehler aufgetreten ist, die Grundlage für sauberen Betrieb und effiziente Fehlersuche. Mit Neos kannst du dich um das Logging über Instanzen hinweg kümmern, da es vollständig PSR-3-kompatibel ist und mit geeigneten Backends, z.B. JSON für deinen ELK-Stack oder Diensten wie papertrail läuft.

Logging
Neos protokolliert normalerweise auf Dateiebene und erlaubt die Konfiguration der Protokollebenen. Alternativ unterstützt Neos Graylog, Monolog, Sentry und PSR-3.
PSR 3 - Logging
Logging in Flow implementiert die offizielle PSR-3-Protokollierungsschnittstelle und macht sie dadurch standardkonform und wiederverwendbar.
Microservices
Microservices

Neos bietet eine Vielzahl moderner Web-Mikrodiensten an, die perfekt zu modernen (progressiven) Webanwendungen in Kombination mit statischen Marketinginhalten passen. Beginnend mit der Authentifizierung (oAuth2, openID Connect), seinen PSR-7-kompatiblen HTTP-Stack- und RESTful-APIs und GraphQL, punktet es heute bei vielen Entwicklern.

PSR 7 - HTTP Message
Flow implementiert PSR-7 HTTP message interfaces.
Authentifizierungs-Provider
Neos bietet eingebaute Authentifizierung über http-basic-auth oder ein Login-Formular. Zusätzliche Provider erlauben es, Neos mit externen Diensten wie LDAP und OAuth2 zu verbinden.
Authentifizierungs-
Server
Benutzer mittels OAuth2-Server authentifizieren und autorisieren.
REST
Das zugrundeliegende Neos.Flow-Framework verfügt über eine einsatzbereite Basisimplementierung für Rest Controller.
GraphQL
GraphQL ist eine Open-Source Abfrage- und Manipulationssprache, die den Zugriff auf das Content-Repository in Neos ermöglicht.
Security
Security

Um Security-Management in der Cloud muss man sich proaktiv und permanent kümmern - ansonsten ist die potenzielle Angriffsfläche viel breiter als in nicht-Cloud-Szenarien: Replizierung repliziert schließlich auch Schwachstellen. Das gilt für die Systemumgebung, aber auch für deine Anwendung. Neos bietet dir  sehr defensive Sicherheitsmechanismen, die für jeden Funktionsaufruf eine explizite Genehmigung verlangt und über eine Eingabevalidierung verfügt.

Security-Framework
Das Flow-Security-Framework kümmert sich um den Zugriffsschutz, die Authentifizierung der Benutzer und die Abwehr von Angriffen.
Decoupling
Decoupling

Wenn möglich, lassen sich Dienste in Neos entkoppeln. Es gibt eine Vielzahl von Funktionen, die auf unterschiedlichen Nodes ausgeführt werden können. Dies gilt für Elasticsearch, Redis, MessageQueues, Mails - und sogar für Metriken, die bei der Überwachung deiner Systeme helfen. All dies kann von deiner eigentlichen Neos-Umgebung getrennt und auf verschiedenen Nodes ausgeführt werden. Das kommende Event Sourced Content Repository bietet einen weiteren separierbaren Dienst.

JobQueue

Ressourcenintensive Aufgaben können asynchron ausgeführt werden. Queue-Backends für Redis, Beanstalkd, DB und andere sind verfügbar.
ElasticSearch
Es gibt ein leistungsstarkes Such-Plugin auf Basis von ElasticSearch, welches maximale Kontrolle über Indizierung und Ergebnispriorisierung bietet.

Fazit

Es ist eine echte Herausforderung, ein CMS in der Cloud zu betreiben. Neos bietet dir eine große Vielfalt an Lösungen und fühlt sich der Cloud zu Hause.