Als Software-Engineering Team bei DER STANDARD wollen wir sichergehen, dass unsere Software-Architektur den stetig wachsenden Anforderungen einer modernen Nachrichten- & Diskurs-Plattform gerecht wird. In diesem Artikel möchten wir einen Blick hinter die Kulissen werfen und eine high-Level Übersicht über unsere Architekturprinzipien geben.

Domain-Driven-Design: Die Kunst der Domänenerkundung

Domain-Driven-Design (DDD) ist ein Eckpfeiler unserer Software-Architektur bei DER STANDARD. Diese methodische Herangehensweise ermöglicht es uns, komplexe Geschäftsdomänen zu verstehen, zu strukturieren und in unabhängige Microservices zu übersetzen.

Die Basis von DDD ist eine tiefgreifende Erkundung der Geschäftsdomänen: Wir nehmen uns die Zeit, die verschiedenen Aspekte unserer Plattform zu verstehen, sei es die Community mit Kommentaren und Foren, das Publishing von redaktionellen Inhalten oder die Steuerung und Ausspielung von Werbung. Diese Auseinandersetzung mit den Domänen ermöglicht es uns, klare Abgrenzungen zwischen den Services zu ziehen und somit Microservices zu schaffen, die spezifische Geschäftsprobleme effektiv lösen.

Einige der DDD-Domänen bei DER STANDARD.
DER STANDARD

Microservices & Event-Driven Architecture

Ein zentraler Grundsatz von DDD besteht darin, dass jedes Microservice eine klar definierte Domäne oder Teile davon abdeckt. Im Fokus unserer Architektur stehen dabei Microservices nach dem Event-Driven Ansatz.

Event-Driven Publishing Workflow
DER STANDARD via www.drawio.com

Ein Beispiel: Wenn ein neuer Artikel in unserem-Headless CMS "Livingdocs" angelegt wird, löst dies ein Event aus, das von mehreren Services verarbeitet werden kann. Der Content Store speichert daraufhin den Artikel in einer Elastic-Search DB und das Akamai CDN wird invalidiert, um den geänderten Artikel über das Editorial Web an alle Leser:innen auszuliefern.

Die losere Kopplung der Kommunikation, die Events ermöglichen, ist ein wesentlicher Vorteil dieser Architektur. Ein Service muss nicht im Detail darüber informiert sein, welche anderen Services auf seine Events reagieren. Diese Flexibilität ist von großer Bedeutung für eine dynamische Plattform wie wir sie bei DER STANDARD haben.

Die Nutzung von Events trägt auch wesentlich zur Skalierbarkeit unserer Architektur bei. Durch die Verarbeitung von Events können Services automatisch anhand der aktuellen Workload skaliert werden. Dies erlaubt eine effiziente Ressourcennutzung und die Bewältigung von Lastspitzen. Mehr dazu noch später.

Caching und Content Delivery Networks

In unserer Architektur spielt Caching in Verbindung mit einem Content Delivery Network (CDN) eine entscheidende Rolle. Diese Maßnahmen dienen dazu, die Performance zu verbessern, Skalierbarkeit zu gewährleisten und eine reibungslose User Experience sicherzustellen.

Wir setzen auf ein mehrschichtiges Caching, um die Antwortzeiten zu minimieren. Dies beinhaltet sowohl das Caching in einem CDN, auf Webserverebene als auch auf Clientebene. Auf der den Servern wird zusätzliches In-Memory-Caching genutzt, um häufig abgerufene Daten temporär zu speichern. Das Caching auf der Client-Seite wird über HTTP Cache-Control-Header im Browser gesteuert.

Ein essenzieller Bestandteil unserer Architektur ist die Einbindung des CDNs von Akamai zur Bereitstellung statischer Ressourcen wie Bilder, CSS und JavaScript. Durch die Verteilung dieser Inhalte auf Servern des CDNs minimieren wir Latenzzeiten und beschleunigen das Laden von Seiten erheblich.

Die Auslieferung von Artikeln erfolgt ebenfalls über das CDN, wobei die Time-To-Live (TTL) des CDNs an die Aktualität des Artikels angepasst ist. Über Events in der Publishing Pipeline wird außerdem automatisch das CDN invalidiert, wenn ein Artikel verändert wird. Diese Integration des CDNs gewährleistet eine konsistente High-Performance-Nutzererfahrung unabhängig vom Standort der Benutzer:innen.

Analyse und Monitoring

Monitoring nimmt eine zentrale Rolle ein, um Einblicke in die Nutzung unserer Plattform zu gewinnen, Lastspitzen vorherzusagen und Fehler frühzeitig zu identifizieren. Wir setzen darum auf ein umfassendes Monitoring-System, bestehend aus Sentry, AWS CloudWatch und einem eigenen BI-Analytics Service.

Detaillierte Analysen über die Nutzung verschiedener Plattformfeatures ermöglichen uns, Trends zu identifizieren, beliebte Funktionen zu erkennen und Ressourcen entsprechend zu optimieren. Diese Erkenntnisse fließen in unsere kontinuierlichen Verbesserungen ein, um eine optimale User Experience zu gewährleisten..

Ein weiterer wichtiger Aspekt unseres Monitoringsystems ist die Fähigkeit, Lastspitzen vorherzusagen. Durch die Analyse von Nutzungsdaten und historischen Mustern können wir potenzielle Belastungsspitzen erkennen und unsere Infrastruktur proaktiv skalieren. Dies trägt dazu bei, eine gleichbleibende Performance auch in Zeiten erhöhter Nachfrage sicherzustellen.

Monitoring dient nicht nur dazu, positive Aspekte zu verstärken, sondern auch, um potenzielle Probleme frühzeitig zu erkennen. Fehler werden automatisch aufgezeichnet und im Team kommuniziert. Dies ermöglicht es uns, schnell zu reagieren, bevor sich Fehler auf die User Experience auswirken. Die kontinuierliche Überwachung minimiert Ausfallzeiten und trägt zur Stabilität der Plattform bei.

Effizienz durch PaaS

Die Verwendung von AWS als Platform-as-a-Service (PaaS) Cloud ist ein zentraler Baustein unserer Architektur. Statt Zeit mit der Konfiguration und Verwaltung von Infrastruktur zu verbringen, bieten PaaS-Plattformen vorkonfigurierte Umgebungen. Unsere Entwickler:innen können sich auf die Code-Entwicklung und Anwendungslogik konzentrieren, während die das Rollout der Infrastruktur, sowie der Anwendungen in AWS automatisch über Continuous Integration/Continuous Deployment (CI/CD) Pipelines erfolgt. Für Services, Queues, Datenbanken werden dabei wo möglich die PaaS fully-managed Services genutzt, um den Wartungsaufwand zu reduzieren.

Skalierbarkeit

In der Architektur von DER STANDARD steht Skalierbarkeit im Fokus, um eine flexible und reaktionsschnelle Plattform zu schaffen. Unsere Strategien und Prinzipien gewährleisten, dass unsere Services mit steigenden Anforderungen problemlos mithalten können. Der Cloud-PaaS Ansatz erlaubt uns, vergleichsweise einfache Ressourcen mehrfach zu betreiben und dadurch zu skalieren.

Ein wesentlicher Baustein unserer Skalierbarkeitsstrategie ist Event-Driven Microservices-Paradigma. Hierbei ermöglicht die entkoppelte Kommunikation zwischen den Services eine flexible Anpassung an die jeweilige Workload. Durch die Nutzung von Events können Services & Worker automatisch skaliert werden, um Lastspitzen zu bewältigen. Dieser Ansatz gewährleistet nicht nur Flexibilität, sondern auch eine effiziente Ressourcennutzung.

Caching spielt eine entscheidende Rolle bei der Bewältigung von Lasten und der Verbesserung der Skalierbarkeit. Durch das Zwischenspeichern von Daten auf verschiedenen Ebenen reduzieren wir die direkte Belastung der Services und verkürzen Antwortzeiten. Ein effizientes Caching trägt dazu bei, Ressourcen optimal zu nutzen und somit die Skalierbarkeit unserer Services zu verbessern.

Ausfallssicherheit

In der Architektur unserer technischen Infrastruktur steht Ausfallssicherheit an vorderster Stelle, um sicherzustellen, dass unsere Plattform selbst in anspruchsvollen Situationen für unsere Leser:innen zuverlässig bleibt. Unser Fokus liegt auf bewährten Prinzipien und Strategien, die eine kontinuierliche Verfügbarkeit unserer Services gewährleisten.

Ein zentraler Aspekt der Ausfallssicherheit ist die Implementierung von Redundanz und Verteilung. Durch die Bereitstellung von Services auf mehreren Servern oder sogar in verschiedenen Rechenzentren minimieren wir das Risiko von Ausfällen. Redundanz ermöglicht es, dass andere Instanzen einspringen können, wenn eine Komponente ausfällt, und gewährleistet somit eine kontinuierliche Verfügbarkeit.

Um im Falle eines Ausfalls schnell und nahtlos reagieren zu können, setzen wir auf effektive Failover-Mechanismen, meist auf CDN oder Reverse Proxy Ebene. Diese Mechanismen erkennen automatisch einen Ausfall und leiten den Verkehr zu einer funktionsfähigen Instanz um. Dadurch wird die Auswirkung eines Ausfalls minimiert, und die Plattform kann kontinuierlich Services bereitstellen.

Fazit

Die Software-Architektur bei DER STANDARD ist das Ergebnis eines Zusammenspiels von Prinzipien, Technologien und einem klaren Fokus auf die Bedürfnisse unserer Domänen. Durch Domain-Driven-Design, Event-Driven Microservices, effizientes Caching, umfassendes Monitoring, Skalierbarkeit, Ausfallssicherheit und die Nutzung von Cloud-based PaaS schaffen wir eine robuste Plattform, die den Herausforderungen einer modernen Zeitung gewachsen ist und unsere Leser:innen bestmöglichst mit Inhalten versorgt. In weiteren Beiträgen werden wir auf einige dieser Aspekte im Detail eingehen. (Max Knor, 21.12.2023)