SLA, RPO und RTO pragmatisch betrachten

Anwendungen für die Public Cloud entwickeln

26.11.2015 von Robert Eichenseer
Werden Anwendungen als "Software as a Service" aus der Cloud bezogen, so akzeptieren Anwender weder Unterbrechungen noch Performance-Probleme. Eine hundertprozentige Verfügbarkeit ist jedoch kaum erreichbar. Die Lösung ist die "Graceful Service Degredation".

Eine Gartner Umfrage aus dem Jahr 2014 zeigt auf, dass 26 Prozent der CIOs in deutschen Unternehmen bedeutende Investitionen in Public Cloud Technologien getätigt haben. Interessant ist hierbei, dass dieser Wert über dem globalen Wert von 25 Prozent liegt. Ein Viertel der Befragten hat dabei angegeben, dass sie in Services investiert haben. Wobei "Software as a Service" mit 73 Prozent das größte Augenmerk aufweist. Unter "Software as a Service" versteht man die zur Verfügungstellung von Softwarepaketen, bei der der Anwender in der Regel keine Installationsschritte durchführen muss. Ein Login für grafische Anwendung bzw. ein Connection String für Daten-, bzw. Applikationsdienste ist alles, was der Anwender benötigt um den Service zu konsumieren.

Derartige Dienstleistungen müssen ausfallsicher und skalierend aufgebaut werden, da der Anwender keine Unterbrechungen wegen Hardwareproblemen, eingeschränkte Performance wegen Kapazitätsproblemen, Serviceunterbrechungen wegen Updates oder ähnliche Probleme bei Benutzung des Service akzeptiert. Im Unterschied zu klassischer Software, die als Installationsmedium vorliegt und auf lokalen Ressourcen installiert wird, kommt bei "Software as a Service" dem Service Level Agreement (SLA) eine tragende Rolle zu.

Aus dem SLA können Recovery Point Objective (RPO) und Recovery Time Objective (RTO) erarbeitet sowie die passenden Building Blocks für die Architektur gewählt werden. Das SLA bestimmt letztendlich auch die Kosten für den Betrieb des Services. Auch wenn eine hundertprozentige Verfügbarkeit des Service angestrebt wird, ist dies mit einem finanziell vertretbaren Aufwand nicht zu erreichen. Da auch die Provider von Public Cloud-Infrastrukturen deren Dienste, auf denen der eigene Service aufbaut, kein SLA mit einer 100 prozentiger Verfügbarkeit anbieten.

Checkliste Cloud-SLAs -
Checkliste Cloud-SLAs
Um zu beurteilen, ob ein Cloud-Provider kundenfreundliche SLAs anbietet, lassen sich folgende Kriterien anlegen und überprüfen:
Punkt 1:
Kurze und klare Gestaltung von Inhalt, Struktur und Formulierung.
Punkt 2:
Version in der Landessprache des Kunden.
Punkt 3:
Klare Definitionen von Fach- und Produktbegriffen zu Beginn.
Punkt 4:
Detaillierte Ankündigung und Planung der Wartungsfenster (Beispiel: "Viermal im Jahr an vorangemeldeten Wochenenden").
Punkt 5:
Leistungsbeschreibung in Tabellenform (Übersicht!).
Punkt 6:
Klar definierte Bereitstellungszeiträume für neue Ressourcen (Beispiele: Bereitstellung virtueller Server bei Managed Cloud in maximal vier Stunden; Bereitstellung kompletter Umgebungen oder dedizierter Server in fünf bis zehn Tagen).
Punkt 7:
Bereitstellung von klar abgegrenzten Konfigurationsoptionen für Ressourcen (Beispiel: Konfiguration von Servern nach Gigahertz, Gigabyte).
Punkt 8:
Einfach unterscheidbare Service-Levels (Beispiel: Silber, Gold, Platin); Abgrenzungskriterien können sein: Verfügbarkeit, Bereitstellungszeiten, fest reservierte Kapazitäten ja/nein, Support-Level (Telefon, E-Mail).
Punkt 9:
Bei IaaS-Angeboten unbedingt auf Netzwerk-Konfigurationsmöglichkeiten und Bandbreite achten (Volumen? Im Preis inkludiert ja/nein?).
Punkt 10:
Kundenfreundlicher Reporting- beziehungsweise Gutschriftenprozess (am besten aktive Gutschriften auf Kundenkonto; kein bürokratischer, schriftlicher Prozess; möglichst einfache Beweis- und Nachweispflicht für Kunden).
Punkt 11:
Reaktionszeiten und Serviceverfügbarkeit klar beschreiben (zentrale Hotline; Reaktionszeiten auf Incidents in Stunden).
Punkt 12:
Nennung der Rechenzentrumsstandorte mit Adresse und sonstigen Informationen wie Zertifizierungen und Tier.
Punkt 13:
Definition der Verfügbarkeiten: Unterschiede hinsichtlich Verfügbarkeit Server/VM und Verfügbarkeit Admin-Konsole definieren.
Punkt 14:
Erläuterung zu Möglichkeiten der SLA-Überwachung beziehungsweise des Incident-Reportings für den Anwender (Beispiel: Link auf Monitoring-Dashboard).

Graceful Service Degredation

Vor Auswahl der Architekturkomponenten sollten pragmatische Abwägungen bezüglich der Absicherung des Service im Problemfall getroffen werden. Häufig beginnt die Entwicklungsabteilung motiviert mit der Erstellung einer Architektur, die eine Vielzahl von Unwägbarkeiten berücksichtig und damit die Funktionalität des Service im Problemfall sicherstellt. Hierfür existieren viele Komponenten beziehungsweise Konzepte, die Verwendung finden können. Einige dieser Best Practice-Ansätze finden sich auch im weiteren Verlauf dieses Artikels.

Bevor die Entwicklungsabteilung jedoch in die Erstellung der Gesamtarchitektur abtaucht, sollte pragmatisch die Möglichkeiten einer sogenannten "Graceful Service Degredation" betrachtet werden. Unter "Graceful Service Degredation" versteht sich die Möglichkeit, einen Service trotz Ausfall eines großen Teils seiner Infrastruktur beziehungsweise von Programmkomponenten eine zwar limitierte, aber dennoch ausreichende Funktionalität zur Verfügung zu stellen.

Beispielhaft kann ein E-Commerce System betrachtet werden, bei dem die Lagerhaltungskomponente nicht erreichbar oder ausgefallen ist. Anstelle dem Anwender eine Fehlermeldung bei der Ermittlung des aktuellen Lagerbestandes im Bestellprozess anzuzeigen und damit die Bestellung unmöglich zu machen, wird dem Anwender die Durchführung der Bestellung ohne Einschränkung ermöglicht. Allerdings wird zum Abschluss der Bestellung nicht die gewohnte Bestellbestätigung erzeugt, sondern eine Mitteilung, die sich für die Bestellung bedankt und darauf hinweist, den möglichen Liefertermin schnellstmöglich mitzuteilen. Diese Meldung kann, sobald die Lagerhaltungskomponente wieder erreichbar ist, erzeugt und versandt werden.

Durch solche Verfahren kann die Funktionalität des Gesamtsystems ermöglicht werden, auch wenn elementare Bestandteile aktuell nicht verfügbar sind oder fehlerhaft arbeiten. Die Berücksichtigung eines solchen Verhaltens im Fehlerfall kann, richtig angewendet, die Komplexität und die Kosten eines ausfallsicheren Systems im Praxisbetrieb deutlich reduzieren. Nach den Überlegungen zum möglichen Serviceverhalten können die technische Betrachtung und der Aufbau einer Architektur für einen hochverfügbaren und ausfallsicheren Service beginnen. Nachfolgend finden Sie einige grundlegende Konzepte, die für den Aufbau eines "Software as a Service"-Angebots (SaaS) berücksichtig werden sollten.

Compute: Scale-Up vs. Scale-Out

Um kosteneffizient arbeiten zu können, sollte der Compute Tier bei einem SaaS-Angebot dynamisch mit der Anzahl der User wachsen, aber auch wieder schrumpfen können. Häufig wird bei einem Anstieg der User-Zahlen ein Scale-Up durchgeführt. Das heißt, der Server wird mit mehr Hauptspeicher, einer größeren Anzahl an Prozessoren, mehr Festplattenkapazität und mehr aufgerüstet. Dieses Szenario sollte vermieden werden, da bei weiterem Wachstum des Service zu einem bestimmten Zeitpunkt eine Aufrüstung des Servers nicht mehr möglich beziehungsweise wirtschaftlich darstellbar ist. Auch kann der Compute Tier bei sinkender User-Zahl nicht dynamisch wieder verkleinert werden.

Eine Alternative stellt hierbei das Scale-Out dar. Hier wird nicht die Kapazität eines einzelnen Servers erhöht, vielmehr wird die Last auf eine (theoretisch unbegrenzte) Anzahl von zusätzlichen, gleichberechtigten Servern verteilt. Sollten die jeweiligen Server statusbehaftete Informationen (beispielsweise Inhalt eines Warenkorbes) benötigen, so kann dieser Status auf zentrale Dienste wie Cache Services oder Datenbanken ausgelagert werden. Durch dieses Verfahren wird das Scale-Out des Service ermöglicht.

9 Basisanforderungen an einen Cloud-Vertrag -
9 Basisanforderungen an einen Cloud-Vertrag
Die Entscheidung Cloud-Services zu nutzen, bedingt aus Sicht von IDC daher grundsätzlich, dass die Nutzung des jeweiligen Cloud-Service dem Unternehmen einen höheren Level in Bezug auf IT Sicherheit und Ausfallsicherheit bietet als vorher. Die folgenden Punkte zählt IDC zu Basisanforderungen in Vertragsverhandlungen.
1. Zugangsrechte
Cloud-Services-Anbieter müssen in der Lage sein zu demonstrieren, dass die Kontrolle über Einstellungen, Aufsicht, Zugang des internen Personals jederzeit ausgeübt wird, damit Zuverlässigkeit und Integrität der internen Mitarbeiter sichergestellt ist. Ein Cloud-Anbieter sollte deshalb immer Identifikation und Zugriff mit geeigneten organisatorischen, personellen und technischen Maßnahmen absichern.
2. Gesetzliche Compliance
Es bestehen nach wie vor große Unsicherheiten, welche Daten extern in welche Cloud-Variante verschoben werden dürfen. Deshalb sind "Datenspeicherung in Deutschland" (50 Prozent) sowie "Verträge nach deutschem Recht" (48 Prozent) aktuell die beiden wichtigsten Sicherheitsanforderungen der befragten IT-Entscheider an Hosted und Public Cloud-Anbieter. Obwohl schlussendlich immer der Kunde für die Einhaltung der gesetzlichen Compliance verantwortlich ist, sollte aber die Verantwortung für die Einhaltung der konsistenten Qualität der Arbeitsvorgänge seitens der Anbieter eingehalten werden. Die Verteilung der Haftung zwischen Cloud-Provider und Kunde muss eindeutig geklärt sein und in rechtlich-bindenden Verträgen festgehalten werden. Unabhängige Audits müssen beschrieben werden und die Lösung von widersprüchlichen Anforderungen muss definiert werden. Nur so erreicht man Transparenz.
3. Anwendungszertifikate
Rechtsgültige Zertifikate sind ebenso eine Grundvoraussetzung für Cloud-Services, da diese bestätigen, dass das Unternehmen, welches für die Domain oder den Server verantwortlich ist, auch tatsächlich existiert. Nach Beobachtung von IDC steigt der Stellenwert von Standards und Zertifizierungen weiter stark an, denn sie schaffen Vertrauen und die Einhaltung von gesetzlichen Regularien lässt sich nachweisen.
4. Datenursprung
Insbesondere in Deutschland sind die Datenschutzrechte stark ausgeprägt. Zudem werden die Cyberattacken nicht nur hartnäckiger sondern sie sind auch wesentlich raffinierter. Die Verträge müssen somit auch die Einhaltung der vielfältigen lokalen Datenschutzanforderungen sicherstellen, welchen außerdem einem konstanten Wandel unterliegen.
5. Datentrennung
Da Public-Cloud-Services mandantenfähig sind und auf demselben Server oder Software-System mehrere Kunden bedienen, ist es essenziell, dass der Cloud-Hosting-Anbieter die Sicherheit zu jeder Zeit garantiert. Der Anbieter muss daher akzeptable Maßnahmen für das kontinuierliche Monitoring der Datenverarbeitung aufzeigen.
6. Datenwiederherstellung (Recovery)
Für den Fall einer Störung oder Katastrophe muss der Anbieter in der Lage sein, die Daten wiederherstellen zu können. Auch dies sollte immer Vertragsbestandteil sein und sogar die maximale Ausfallzeit für verschiedene Vorfälle regeln.
7. Transfer der Applikationen
Um Cloud-Services in die bestehende IT Landschaft zu integrieren und durchgängige Prozesse zu ermöglichen, sind in der Regel einige lokale Modifikationen notwendig. Dadurch können in der Regel Kosteneinsparungen erreicht werden. Gleichzeitig kann dies aber auch ein Hindernis für einen eventuellen Rücktransfer der Applikation darstellen. Es ist wichtig, vor allem auf die Interoperabilität der Lösungen auch vertraglich wert zu legen. Dies ist technisch gesehen ein anspruchsvoller Aspekt bei der Migration von Public-Cloud-Lösungen. Für die Befragten ist eine einfache Rückholung der Daten (35 Prozent) sowie die gesetzeskonforme und nachgewiesene Löschung aller Daten nach Anbieterwechsel (32 Prozent) besonders wichtig.
8. Business Continuity
Unternehmen reorganisieren sich, schließen sich mit anderen zusammen und Rechenzentren werden konsolidiert. Cloud-Services Verträge sollten daher den Transfer der Daten zwischen verschiedenen Rechenzentren klar regeln, um den Betrieb auch bei großen Veränderungen jederzeit sicherzustellen.
9. Monitoring und Reporting
ieser Aspekt kann insbesondere bei der Nutzung von Public-Cloud-Services komplex werden. Vor allem dann, wenn verschiedene Ansprechpartner die legale Verantwortung und die Kosten im Unternehmen dafür tragen. Die IT Abteilung sollte das Monitoring und Reporting idealerweise zentral übernehmen, um Synergien zu heben und Kosten zu senken.

Compute: Segregation of Concern

Nicht minder wichtig ist die Aufteilung des Service in Komponenten, welche eine eng eingegrenzte Problemstellung bearbeiten. Eine triviale Aufteilung in beispielsweise Frontend- und multiple Backend-Komponenten, welche unabhängig voneinander operieren können, kann als erster Schritt betrachtet werden. Diese Segregation of Concern ermöglicht es, rechenintensive Arbeiten sowohl asynchron als auch getrennt skalierbar von anderen Komponenten zu implementieren. Die notwendige Kommunikation der Komponenten untereinander kann durch bekannte Enterprise-Service-Bus-Technologien oder beispielsweise durch den Einsatz von internen Load-Balancern erreicht werden.

Durch Berücksichtigung von transienten Fehlern im Compute Tier wird eine weitere Stabilität erreicht. Hierbei handelt es sich um Fehler, die kurzfristig auftreten und durch einfache Wiederholung der Aktion gelöst werden. So kann zum Beispiel ein fehlerhafter Zugriff auf eine relationale Datenbank durch einfache Wiederholung gelöst werden, falls diese in einem Fail-Over-Cluster vom primären auf den sekundären Node gewechselt wurde.

Storage: Sharding, Master Slave und Peer-To-Peer-Speicherung

Der Storage Tier muss nicht minder aufmerksam betrachtet werden. Insbesondere relationale Datenbanksysteme wurden nicht in Hinblick auf Skalierung und verteilte Verarbeitung entwickelt. Hier helfen Konzepte wie Tenant Sharding, bei der die Daten des Service auf mehrere Datenbanken und auch auf mehrere Datenbankserver verteilt werden können. Auch eine Master/Slave-Konfiguration von Datenbanken, bei denen lesende Zugriffe von mehreren Servern übernommen werden, schreibende Zugriffe von einer vor Ausfall besonders abgesicherten Instanz gewährleistet werden, ist eine Möglichkeit. Daten zwischen den lesenden und dem schreibenden Node werden hierbei synchronisiert.

Peer-To-Peer-Konzepte nutzen ein ähnliches Schema, nur kann hier jeder Server lesende und auch schreibende Zugriffe entgegennehmen. Die Synchronisation der Datenbankinhalte wird dadurch komplexer. Auch die Wahrscheinlichkeit, dass ein Read nicht den aktuellen Datenstand wiederspiegelt, ist gegeben. Hier muss abgewägt werden, ob ein diesbezügliches Verhalten für den Service akzeptabel ist.

Fazit

Die Architektur von hochverfügbaren und skalierenden "Software as a Service"-Anwendungen sollte nicht alleinig im technischen Bereich mit Auswahl von Komponenten und Aufstellung einer ausfallsicheren Architektur beginnen.

Durch die Berücksichtigung von "Graceful Service Degredation" kann mit deutlich geringeren Kosten und Aufwand ebenfalls ein ausfallsicherer und skalierender Service entwickelt und betrieben werden. (cvi)