Microservices-Architektur

Probleme bei älteren Anwendungen

Viele ältere Cloud-Anwendungen verwenden eine monolithische Architektur. Obwohl diese Legacy-Anwendungen mehrere Mandanten bedienen können, bestehen sie aus einer großen und schwerfälligen Menge von stark voneinander abhängigen Komponenten. Ein Ausfall einer Komponente kann verheerende Auswirkungen auf eine andere Komponente haben, was zu einem Ausfall der Dienste für viele oder alle Mieter führt. Für die Aktualisierung dieser Systeme müssen sie offline geschaltet werden, was den Zugriff der Benutzer während des Aktualisierungsprozesses einschränkt. Die Probleme monolithischer Dienste werden noch verschärft, wenn sie in proprietären Rechenzentren mit begrenzter Hardware eingesetzt werden, da die Hardwarebeschränkungen die Verfügbarkeit und Skalierbarkeit der Software-Ressourcen weiter einschränken.

Die Microservices-Lösung von Genesys Cloud

Genesys Cloud löst die Probleme der monolithischen Architektur durch den Einsatz von Microservices. Mit Microservices lösen wir komplexe Probleme mit einfachen, zustandslosen Objekten. Unsere Microservices-Architektur bietet außerdem eine praktisch unbegrenzte Skalierbarkeit über Tausende von Servern in mehreren, geografisch unterschiedlichen Rechenzentren.

mono vs. Mikro

Anstatt mehrere eng gekoppelte Komponenten zu verwenden, unterteilt Genesys Cloud seine Funktionalität in Dienste, von denen jeder eine bestimmte Art von Anfrage bearbeitet. Jeder Genesys Cloud Service verwendet Elastic Load Balancers (ELBs), um die Arbeit zu verteilen; jede Gruppierung enthält mehrere Server, die je nach Last dynamisch skaliert werden. Wir überwachen kontinuierlich den Datenverkehr auf Serviceebene und optimieren die Microservices auf der Grundlage von Nutzungsgrad und Art der Anfragen.

Dieses Diagramm veranschaulicht die wichtigsten Services der Genesys Cloud.

Skalierung nach Bedarf 

Die meisten Genesys Cloud-Services verwenden einen ELB mit einer Auto Scaling Group (ASG). Genesys Cloud verteilt die Last und überwacht die Gruppen nach service-spezifischen Richtlinien (CPU für rechenintensive Dienste, mittlere Antwortzeit für einen Abfrageservice, usw.). Wenn wir einen Schwellenwert überschreiten, fügt die Gruppe bei Bedarf automatisch zusätzliche Ressourcen hinzu oder entfernt sie. Wenn ein Unternehmen beispielsweise plötzlich eine Million Faxe versenden muss, werden die zugehörigen Microservices automatisch skaliert, um den Bedarf zu decken, ohne dass andere Funktionen oder andere Tenants beeinträchtigt werden.

Ausfallsichere Verarbeitung

Da sie unabhängig voneinander arbeiten, kann sich ein Problem mit einem Microservice nicht auf den anderen auswirken, was das Problempotenzial stark einschränkt. So werden beispielsweise die Abfrage von Voicemail, der Faxversand und die Weiterleitung eingehender Kundenanrufe über drei separate Microservices abgewickelt. Wenn der Microservice zum Abrufen von Sprachnachrichten ausfällt, funktioniert der Microservice für eingehende Kundenanrufe ohne Unterbrechung weiter.

Verlässlichkeit durch Wiederherstellung

Wenn ein einzelner Server ausfällt, erkennt der entsprechende ELB/ASG Fehler bei der Zustandsprüfung oder Zeitüberschreitungen und trennt die ungesunde Komponente vom Load Balancer. Wenn dieser Fehler nicht nur vorübergehend ist, löst eine zusätzliche Logik ein Selbstheilungsverhalten aus, bei dem der fehlerhafte Knoten gestoppt und ein komplett neuer Server an seiner Stelle erstellt wird. Der Datenverkehr geht unvermindert weiter, und die anderen Server der Gruppe können die zusätzliche Arbeit problemlos bewältigen. Genesys Cloud erholt sich, bevor ein Benutzer eine Service-Lücke bemerkt. Dieser Wiederherstellungsprozess erfordert einen Anstieg der Ressourcen, aber wir haben über Amazon Web Services (AWS) Zugang zu reichlich On-Demand-Bandbreite.

Genesys Cloud basiert auf AWS, dem unangefochtenen Marktführer für internationale Cloud-basierte Implementierungen. Wir arbeiten eng mit Amazon zusammen, um deren Überwachungs- und ELB-Systeme zu testen und zu verfeinern.

AWS-Regionen

Genesys Cloud wird in mehreren, unabhängigen AWS-Regionen rund um den Globus eingesetzt. Jede Region besteht aus mehreren Amazon Availability Zones", von denen jede aus einem oder mehreren physischen Rechenzentren besteht. Die Redundanz ist bereits auf dieser Ebene in die Struktur des Systems integriert, wobei jede Availability Zone über eine separate Stromversorgung, Backbone-Netzwerkanbindung, replizierten Datenspeicher und (in einigen Fällen) eine physische Trennung über tektonische Störungsplatten hinweg verfügt. Die Kundendaten werden über die Zonen und Rechenzentren innerhalb einer Region hinweg repliziert. Der Ausfall eines ganzen Rechenzentrums würde nur zu einer vorübergehenden Kapazitätsverringerung führen; die Situation würde sich automatisch und ohne jeglichen Datenverlust heilen. Neben der Dauerhaftigkeit der Daten ist auch die Datenhoheit ein wichtiger Aspekt bei der Cloud-Bereitstellung. Die Genesys Cloud-Architektur ermöglicht es einer Organisation, ihre "Region of Record" zu definieren, um sicherzustellen, dass die Daten keine regionalen Grenzen innerhalb unserer Infrastruktur überschreiten.

AWS-Regionen für Genesys Cloud

AWS-Regionen für die Bereitstellung von Genesys Cloud Voice

Browser und mobile Clients

In vielerlei Hinsicht spiegeln die Genesys Cloud Clients den zustandslosen Ansatz der Microservices wider. Wenn der Browser Genesys Cloud aufruft, wird eine Reihe von Objekten in den Speicher des Browsers eingebaut, einschließlich Ereignisbenachrichtigungen für Datenaktualisierungen. Wenn der Browser neue Informationen erhält, aktualisiert er die Objekte im Speicher und anschließend die Ansicht für den Benutzer.

Wenn ein Benutzer seine Ansicht ändert oder eine neue Aufgabe startet, werden die vorhandenen lokalen Daten sofort angezeigt, während eine Anfrage zur Prüfung auf Aktualisierungen gestellt wird. Diese Datenanforderungen werden an die verfügbaren Dienste angepasst und optimiert, um die Datenbandbreite zu verringern und die Geschwindigkeit der Client-Ansichten zu verbessern.

Ständige Aktualisierungen

Wir pushen kontinuierlich neuen Code in unser Genesys Cloud-Produktionssystem. Wenn ein kleiner Fehler entdeckt wird, beheben wir ihn einfach sofort und stellen neue Versionen der betroffenen Dienste bereit.

Unsere verteilte Architektur ermöglicht es uns, rollende Updates zu veröffentlichen, ohne das gesamte System für Wartungsarbeiten abzuschalten. Wir verwenden Lastausgleich und Techniken wie "rot-schwarze Bereitstellungen", um sicherzustellen, dass die Kunden nicht durch unseren Aktualisierungsprozess beeinträchtigt werden. Wenn eine neue Version eines Microservices (mit neuen Funktionen oder Korrekturen) verfügbar ist, erstellen wir ein komplett neues Server-Image für diesen Service. Dieses Abbild wird verwendet, um völlig neue Server zu erstellen, anstatt bestehende Systeme zu patchen. Wenn diese neuen Server online gehen und für gesund befunden werden, werden sie an den Load Balancer angeschlossen und ein kleiner Prozentsatz des Datenverkehrs wird nun von ihnen abgewickelt. Unter der Annahme, dass die neuen Server wie gewünscht funktionieren, wird mehr Kapazität hinzugefügt, und die alten Server (mit der vorherigen Version des Dienstes) werden aus dem Load Balancer entfernt, und ausstehende Anfragen werden abgearbeitet. Innerhalb weniger Minuten können ganze Serverflotten, die die Funktionen eines bestimmten Microservices bereitstellen, ersetzt werden. Dies sorgt nicht nur für eine nahtlose, kontinuierliche Bereitstellung von Diensten, sondern auch für eine unvergleichliche Zuverlässigkeit. Durch die Vermeidung von Upgrades an Ort und Stelle wird die Sprödigkeit reduziert, da garantiert wird, dass die Systeme, die wir in unseren Vorproduktionsumgebungen testen, funktional identisch mit den Systemen sind, die in der Produktion eingesetzt werden. Darüber hinaus ermöglicht es ein schnelles Rollback auf die bekannt gute Variante eines Microservices für den unwahrscheinlichen Fall, dass eine neue Version nicht wie gewünscht funktioniert.

Die Unabhängigkeit von Microservices und unser umfangreicher automatisierter Test- und Build-Promotion-Prozess ermöglichen es Genesys, Fehlerkorrekturen zu veröffentlichen, ohne Angst haben zu müssen, dass versehentlich etwas anderes kaputt geht. Darüber hinaus kann Genesys Microservices für neue Funktionen erstellen, ohne bestehende Services zu beeinträchtigen. Updates erfolgen, während Millionen von Kunden Genesys Cloud aktiv nutzen.