End-to-End-Skalierbarkeitsplanung mit Appian

In puncto Skalierbarkeit und Performance kann es sich lohnen, die Aussagen Ihrer Anbieter zu hinterfragen – die Wahrheit könnte Sie überraschen.

Einführung

Was bedeutet Skalierbarkeit im Kontext von Software? Die Antwort auf diese scheinbar einfache Frage gestaltete sich bisher überraschend kompliziert, war der Begriff doch lange Zeit von Fehlinformationen, Missverständnissen und undurchsichtigem Marketing geprägt. In diesem Artikel soll anhand einer differenzierten Analyse des Themas Skalierbarkeit mit diesen Verwirrungen aufgeräumt werden.

Was fällt (nicht) in den Geltungsbereich der Skalierbarkeit?

In einem ersten Schritt gilt es, zu bestimmen, was genau sich hinter dem Stichwort „skalierbare Software“ verbirgt.

Das fällt in den Geltungsbereich der Skalierbarkeit

Der Begriff der Skalierbarkeit wird auf unterschiedlichste Weise ausgelegt. Auf Wikipedia heißt es beispielsweise: „Unter Skalierbarkeit versteht man die Fähigkeit eines Systems, Netzwerks oder Prozesses zur Größenveränderung. Meist wird dabei die Fähigkeit des Systems zum Wachstum bezeichnet.“ Gartner definiert Skalierbarkeit hingegen als „die Messgröße für die Fähigkeit eines Systems, Leistung und Kosten im Zuge sich verändernder Anwendungs- und Systemverarbeitungsanforderungen zu erhöhen oder zu verringern.“ Dies sind nur zwei Beispiele, die auf eine weitaus größere Definitionsunschärfe hindeuten.

Trotz der zahlreichen Auslegungsmöglichkeiten des Begriffs „Skalierbarkeit“ stimmen die verschiedenen Definitionen in einigen Punkten überein. Beispielsweise herrscht Einigkeit darüber, dass Skalierbarkeit zwei Aspekte eines Systems betrifft: Hardware und Software.

Jede Plattform bringt – abhängig von der verwendeten Hardware – unterschiedliche Leistungsgrenzen mit sich. Geräte und Gerätenetzwerke arbeiten stets mit einer begrenzten Anzahl an CPUs, RAM, Speicherplatz usw. Im Hinblick auf Hardware beschreibt Skalierbarkeit daher die Anzahl der verfügbaren Ressourcen.

Im Bezug auf Software umfasst Skalierbarkeit die für eine ordnungsgemäße Funktion erforderlichen Bibliotheken und Codes. Jede Softwarelösung benötigt eine bestimmte Menge an Serverressourcen, um ihren Zweck zu erfüllen. Die Skalierbarkeit einer Softwarelösung hängt daher von der Höhe ihrer Betriebskosten ab.

Darüber hinaus bestimmt Skalierbarkeit, wie effektiv ein System an aktuelle und zukünftige Anforderungen angepasst werden kann. Obwohl diese Eigenschaft in vielen Bereichen zum Tragen kommt, ist es den meisten Unternehmen ein Anliegen, dass ihre derzeitigen Systeme auch den Herausforderungen der Zukunft gewachsen sind.

Das fällt nicht in den Geltungsbereich der Skalierbarkeit

Einfach ausgedrückt haben jegliche Aspekte, die nicht mit der Fähigkeit eines Systems zusammenhängen, Anforderungen mithilfe einer bestimmten Menge an Ressourcen zu erfüllen, nichts mit Skalierbarkeit zu tun. Leider wimmelt es im Internet quasi vor Fehlinformationen rund um den Begriff. Anbei nur einige Beispiele:

  • Skalierbarkeit betrifft auch die Sicherheit – Obwohl Sicherheit für jede Lösung eine entscheidende Rolle spielt, sollten effektive Sicherheitsrichtlinien und -verfahren stets unabhängig von der restlichen Systemimplementierung befolgt werden. Insofern sollten Sicherheitsbedenken nicht in Ihre Skalierbarkeitsstrategie mit einfließen.
  • Hochverfügbarkeit hat einen Einfluss auf die Skalierbarkeit – Diese Annahme könnte nicht weiter von der Wahrheit entfernt sein. Hochverfügbarkeit spiegelt lediglich die Zuverlässigkeit Ihrer Plattform und nicht die Leistung bei bestimmten Workloads wider.
  • Automatische Skalierung führt zu Skalierbarkeit – Die Verwirrung in dieser Hinsicht ist durchaus nachvollziehbar: Denn auch, wenn sie von Vorteil ist – automatische Skalierung ist nicht gleich Effizienz. Tatsächlich kann automatische Skalierungsarchitektur sogar ohne Auswirkungen auf die Effizienz eingesetzt werden.
  • Skalierbarkeit bezieht sich auf die Systemfunktionen – Die Funktionen einer Plattform sollten stets nur im Vergleich zu denen anderer Plattformen bewertet werden – für Ihre Skalierbarkeitsstrategie sind sie nicht von Belang. Während einzelne Funktionssätze unterschiedliche Leistungseigenschaften aufweisen, haben sie keine Auswirkungen auf die ganzheitliche Performance eines Systems.

Jedes Mal, wenn ein Anbieter versucht, Ihnen derartige Fehlinformationen zu vermitteln, sollten Sie dessen Glaubwürdigkeit hinterfragen. Halten Sie stattdessen Ausschau nach Anbietern, die Ihnen helfen, die Skalierbarkeit Ihrer jeweiligen Lösung zu ermitteln.

Zu berücksichtigende Aspekte bei der Bestimmung der Skalierbarkeit

Bei der Ermittlung der Skalierbarkeit einer Softwareplattform sollten Sie folgende vier Aspekte berücksichtigen:

  • Anzahl gleichzeitiger Benutzer – Wie viele Benutzer benötigen gleichzeitig Zugriff auf das System? Berücksichtigen Sie dabei auch über Dienstkonten oder andere automatisierte Systeme angeforderte Transaktionen.
  • Durchschnittliche Anzahl von Anfragen pro Benutzer – Dies umfasst beispielsweise die Anzahl an Aufrufen eines bestimmten Services oder die interne Kommunikation zwischen Plattformservices.
  • Durchschnittlicher Umfang jeder Anfrage – Wie umfangreich sind die einzelnen Anfragen? Meistens variiert der Umfang von Anfrage zu Anfrage. Werden die tatsächlichen Anforderungen in diesem Bereich nicht richtig eingeschätzt, kann dies zu unrealistischen Skalierbarkeitsberechnungen führen.
  • Größe des Rechners, auf dem die Plattform läuft – Unterschiedliche Hardwarekonfigurationen weisen unterschiedliche Leistungen auf. Führen Sie Tests auf einem System durch, das Ihrem eigenen stark ähnelt. Berücksichtigen Sie dabei die Anzahl an Prozessoren, die Größe des Arbeitsspeichers und den Festplattenspeicher. Ob beim Upscaling oder Downscaling: Für eine erfolgreiche Implementierung ist es unentbehrlich, die passende Systemgröße zu ermitteln.

Diese vier Aspekte ermöglichen es Ihnen, die Skalierbarkeit eines Systems zu bewerten. Stellen Sie sich zur Veranschaulichung ein System vor, das von zehn Benutzern gleichzeitig genutzt wird, die pro Tag 100 Vorgänge mit einem durchschnittlichen Umfang von jeweils 1 MB Daten ausführen. Angenommen, diese Vorgänge verbrauchen 10 % der verfügbaren Hardwareressourcen. Würden zehn weitere Benutzer in diesem Fall lediglich weitere 10 % der Systemressourcen verbrauchen? Wenn ja, ist diese Plattform linear skalierbar.

Mithilfe von Parallelisierung kann Software über die lineare Skalierbarkeit hinausgehen, doch dieses Thema würde den Rahmen dieses Beitrags sprengen. Bitte beachten Sie außerdem, dass eine Lösung, die zu einem bestimmten Zeitpunkt linear skalierbar ist, es nicht zwingend für immer bleibt. Wenn Linearität früher oder später an ihre Grenzen stößt, liefern auch zusätzliche Ressourcen nicht mehr die erhofften Ergebnisse.

Eine Frage der Kosten

Die Gründe, weshalb es sich lohnt, die Skalierbarkeit einer Plattform zu ermitteln, sind finanziellen Ursprungs. Es geht darum, zu bestimmen, wie viel Arbeit ein Unternehmen so effizient wie möglich erledigen kann. Eine Lösung mit hervorragender Leistung ist nur dann wirklich von Vorteil, wenn sie auch in puncto Kosteneffizienz überzeugt.

Ich habe mir kürzlich die öffentlich zugänglichen Skalierbarkeitsdaten eines anderen Anbieters angesehen. Einerseits enthielten die Daten zwar eine Reihe wirklich beeindruckender Kennzahlen, andererseits wurden die zugrunde liegenden Tests von dem betreffenden Anbieter auf einem Zentralrechner im Wert von 26 Millionen USD durchgeführt. Zum Vergleich: Amazon bietet eine erstklassige Cloud-Lösung für rund 4,50 USD pro Stunde an. Diese könnte 660 Jahre lang betrieben werden, bevor ein derartig aufwändiger Zentralrechner überhaupt als kosteneffektive Alternative in Frage käme. Für Ihre Zwecke spielt es keine Rolle, ob das System dieses Anbieters 10.000 oder 100.000 Personen hosten kann. So oder so hätten Sie ein schlechtes Geschäft gemacht.

Ein weiterer Fallstrick, vor dem Sie sich in Acht nehmen sollten, sind Anbieter, die Ihnen ausgedachte Skalierbarkeits-Herausforderungen vorgaukeln, beispielsweise in Form von Gebühren für einzelne Transaktionen oder Lösungseinheiten. Angebote mit dieser Art von Preisstruktur mögen auf den ersten Blick verlockend wirken, doch als Kunde werden Sie praktisch gezwungen, schlechte Designentscheidungen zu treffen.

Stellen Sie sich vor, Ihnen wird pro API-Aufruf eine Gebühr berechnet. In diesem Fall wäre es Ihnen nicht zu verdenken, wenn Sie versuchen würden, die Nutzlast jedes Anrufs auszureizen, um ein Maximum an Effizienz zu erzielen. Doch was passiert, wenn Ihr spezifischer Anwendungsfall über einen längeren Zeitraum hinweg eine hohe Anzahl an Anrufen voraussetzt? In diesem Fall müssen Sie entscheiden, ob Sie sich mit einer überlasteten Lösung zufriedengeben, die eine riesige Nutzlast bewältigen muss, oder ob Sie zusätzliche Gebühren in Kauf nehmen, um eine zufriedenstellende Lösung zu erhalten.

Ähnlich verhält es sich mit objektbasierten Gebühren. Wer pro Objekt eine Gebühr bezahlt, versucht wahrscheinlich, Designs auf möglichst wenige Schritte zu begrenzen. Dies hat oft kontraproduktive Folgen, da die wenigen vorhandenen Elemente einer Lösung derart „überdesignt“ werden, dass die Leistung darunter leidet.

Unter den oben beschriebenen ist die Verschleierung von Aufrufumfang und Transaktionsnummern die beste Methode, Leistungsdaten zu verfälschen. Anbieter sind versiert. Sie wissen, dass die Erhebung von Gebühren in diesen Bereichen eine effektive Methode ist, um über die tatsächlichen Kosten einer Lösung hinwegzutäuschen.

Die Lösung des Problems

Was lernen wir aus den oben genannten Punkten? Unter der Annahme, dass die Informationen in diesem Beitrag der Wahrheit entsprechen, haben wir einige mehr oder weniger allgemeingültige Best Practices zur Bewertung der Skalierbarkeit einer Plattform ausgearbeitet.

Basisdaten bestimmen

Zunächst einmal ist es wichtig, zu wissen, wo Sie stehen. Unabhängig von Ihrem spezifischen Anwendungsfall sollten Sie sowohl die Benutzerzahl als auch den konkreten Zweck Ihrer Lösung kennen. Auf dieser Grundlage können Sie die Ressourcen ermitteln, die jeder einzelne Benutzer benötigt. Entscheiden Sie sich schließlich für eine passende Hardwarekonfiguration für den Betrieb Ihrer Lösung.

Testen, testen, testen

Testen Sie die Lösung auf der Grundlage dieser Basisdaten. Wie hat sie abgeschnitten? Nach einem ersten Test können Sie Ihre Voraussetzungen anpassen und es erneut versuchen. Welche Auswirkungen hat es auf die Leistung, wenn Sie die Benutzerzahl verdoppeln? Wie sieht es mit einer zehn oder sogar 50 Mal höheren Benutzerzahl aus? Testen Sie auch, was passiert, wenn Sie einen neuen Vorgang hinzufügen, indem Sie die Anzahl der Aufrufe und/oder den Umfang eines Aufrufs erhöhen. Ab wann erbringt die Hardware nicht mehr die erforderliche Leistung? Was passiert, wenn Sie die Hardware durch Upscaling oder Outscaling ausbauen?

Verborgene Kosten erkennen

Machen wir uns nichts vor: Wenn es um Skalierbarkeit geht, sind gute Testergebnisse noch lange nicht das Ende vom Lied. Ein Test verrät Ihnen zwar, ob eine Lösung skalierbar ist, sagt jedoch nichts über ihre Kosteneffizienz aus. Achten Sie auf verborgene Kosten wie Transaktionsgebühren oder zusätzliche Objekt- oder Einheitsgebühren. Nur, weil Ihr System in der Lage ist, eine bestimmte Nutzlast zu bewältigen, heißt das nicht, dass Ihr Geldbeutel es auch ist.

Wer ist für die Gewährleistung einer skalierbaren Lösung verantwortlich?

Wahrscheinlich hätten Sie nie gedacht, Folgendes einmal von einem Softwareanbieter zu hören, doch Fakt ist: Skalierbarkeit ist Ihre Verantwortung. Egal, ob Sie eine eigene Lösung entwickeln oder einen Drittanbieter beauftragen, Sie müssen mit den Konsequenzen des Endergebnisses leben.

Jede Softwareplattform kann eine mangelnde Skalierbarkeit aufweisen. Im Umkehrschluss können Sie mit einem unbegrenzten Hardwarebudget jede noch so schlecht skalierbare Lösung zum Laufen bringen.

Wenn Ihnen ein Anbieter versichert, eine bestimmte Lösung sei skalierbar, sollten Sie diese Behauptung hinterfragen. In meinen Augen bietet Appian eine der leistungsstärksten Plattformen auf dem Markt an. Im Vergleich zu unseren Mitbewerbern basieren unsere Services auf einem leistungsfähigeren Framework. Darüber hinaus können Appian-Bewertungen parallel durchgeführt werden – eine Funktion, die andere Anbieter nicht vorweisen können. Allerdings profitieren Appian-Benutzer auch über diese Funktionen hinaus von weiteren Vorteilen. Unabhängig von der Backend-Leistung unserer Plattform ist es uns ein Anliegen, mit Ihnen zusammenzuarbeiten, um zu gewährleisten, dass Sie möglichst leistungsstarke skalierbare Anwendungen erstellen können.

Ihre Vorteile mit Appian

Appian unterstützt Sie bei der Entwicklung einer möglichst skalierbaren und kostengünstigen Lösung. Sie müssen uns nicht blind beim Wort nehmen – wir überzeugen Sie lieber live von unseren Vorteilen.

Wenn Sie sich dennoch konkrete Zahlen zur Leistung von Appian wünschen, lesen Sie unser Whitepaper zum Thema Skalierbarkeit. Darin erfahren Sie, wie gut unsere Plattform auf drei verschiedenen Hardware-Instanzen läuft.

Nachdem Sie das Whitepaper gelesen haben, können Sie sich gerne an unser Vertriebsteam wenden. Sie werden sehen, dass wir stets bemüht sind, Ihr Vertrauen zu gewinnen und zu Ihrer ersten Wahl in puncto Unternehmenslösungen zu werden. Wir bringen Ihnen unsere Plattform gerne im Detail näher und helfen Ihnen dabei, unsere Produkte möglichst effektiv einzusetzen.

Die Skalierung von Unternehmensanwendungen auf missionskritischen Systemen ist kein leichtes Unterfangen. Verraten Sie uns Ihre Anforderungen und wir helfen Ihnen, Appian erfolgreich zu skalieren.

APPIAN WEEKLY! abonnieren