Skalierbarkeit und Elastizität: Was Sie brauchen, um Ihr Unternehmen in die Cloud zu bringen

Wir freuen uns, die Transform 2022 am 19. Juli und virtuell vom 20. bis 28. Juli wieder persönlich zu präsentieren. Nehmen Sie an aufschlussreichen Gesprächen und spannenden Networking-Möglichkeiten teil. Registrieren Sie sich heute!


Bis 2025, 85 % der Unternehmen wird ein Cloud-First-Prinzip haben – eine effizientere Möglichkeit, Daten statt lokal zu hosten. Die durch COVID-19 und Remote Work verstärkte Umstellung auf Cloud Computing hat Unternehmen eine ganze Reihe von Vorteilen gebracht: niedrigere IT-Kosten, gesteigerte Effizienz und zuverlässige Sicherheit.

Da dieser Trend weiter boomt, wächst auch die Gefahr von Serviceunterbrechungen und -ausfällen. Cloud-Anbieter sind sehr zuverlässig, aber sie sind „nicht immun Versagen.” Im Dezember 2021, Amazon berichtet mehrere Amazon Web Services (AWS)-APIs betroffen waren und innerhalb von Minuten viele weit verbreitete Websites ausfielen.

Wie können Unternehmen also das Cloud-Risiko mindern, sich auf den nächsten AWS-Engpass vorbereiten und plötzliche Nachfragespitzen bewältigen?

Die Antwort lautet Skalierbarkeit und Elastizität – zwei wesentliche Aspekte des Cloud Computing, von denen Unternehmen in hohem Maße profitieren. Lassen Sie uns über die Unterschiede zwischen Skalierbarkeit und Elastizität sprechen und sehen, wie sie auf Cloud-Infrastruktur-, Anwendungs- und Datenbankebene aufgebaut werden können.

Verstehen Sie den Unterschied zwischen Skalierbarkeit und Elastizität

Beide Skalierbarkeit und Elastizität beziehen sich auf die Anzahl der Anfragen, die gleichzeitig in einem Cloud-System gestellt werden können – sie schließen sich nicht gegenseitig aus; beide müssen möglicherweise separat unterstützt werden.

Skalierbarkeit ist die Fähigkeit eines Systems, reaktionsfähig zu bleiben, wenn die Anzahl der Benutzer und der Datenverkehr im Laufe der Zeit allmählich zunehmen. Strategisch geplant ist daher ein langfristiges Wachstum. Die meisten B2B- und B2C-Anwendungen, die zunehmend genutzt werden, erfordern dies, um Zuverlässigkeit, hohe Leistung und Verfügbarkeit zu gewährleisten.

Mit ein paar geringfügigen Konfigurationsänderungen und Tastenklicks kann ein Unternehmen sein Cloud-System innerhalb weniger Minuten mühelos nach oben oder unten skalieren. In vielen Fällen kann dies durch Cloud-Plattformen automatisiert werden, wobei Skalierungsfaktoren auf Server-, Cluster- und Netzwerkebene angewendet werden, wodurch die Arbeitskosten für das Engineering reduziert werden.

Elastizität ist die Fähigkeit eines Systems, während kurzfristiger Bursts oder hoher sofortiger Lastspitzen reaktionsfähig zu bleiben. Einige Beispiele für Systeme, die regelmäßig mit Elastizitätsproblemen konfrontiert sind, sind NFL-Ticketing-Anwendungen, Auktionssysteme und Versicherungsunternehmen bei Naturkatastrophen. 2020 war die NFL in der Lage sich auf AWS stützen um seinen virtuellen Entwurf live zu streamen, als es viel mehr Cloud-Kapazität benötigte.

Ein Unternehmen, das mit unvorhersehbaren Workloads konfrontiert ist, aber keine vorgeplante Skalierungsstrategie möchte, sucht möglicherweise nach einer flexiblen Lösung in der Public Cloud mit geringeren Wartungskosten. Dies würde von einem Drittanbieter verwaltet und über das öffentliche Internet mit mehreren Organisationen geteilt.

Hat Ihr Unternehmen also vorhersehbare Workloads, stark schwankende Workloads oder beides?

Erarbeiten Sie Skalierungsoptionen mit Cloud-Infrastruktur

Wenn es um Skalierbarkeit geht, müssen Unternehmen auf Über- oder Unterversorgung achten. Dies geschieht, wenn Tech-Teams keine quantitativen Metriken zu den Ressourcenanforderungen für Anwendungen bereitstellen oder die Back-End-Idee der Skalierung nicht auf die Geschäftsziele ausgerichtet ist. Um eine Lösung in der richtigen Größe zu ermitteln, sind fortlaufende Leistungstests unerlässlich.

Führungskräfte, die dies lesen, müssen mit ihren Technikteams sprechen, um herauszufinden, wie sie ihre Cloud-Bereitstellungsschemata entdecken. IT-Teams sollten die Reaktionszeit, die Anzahl der Anfragen, die CPU-Auslastung und die Speicherauslastung kontinuierlich messen, um die mit den Cloud-Ausgaben verbundenen Warenkosten (COG) zu überwachen.

Organisationen stehen je nach Geschäftsanforderungen und technischen Einschränkungen verschiedene Skalierungstechniken zur Verfügung. Werden Sie also vergrößern oder verkleinern?

Vertikale Skalierung beinhaltet das Hoch- oder Herunterskalieren und wird für Anwendungen verwendet, die monolithisch sind, oft vor 2017 erstellt wurden und möglicherweise schwierig zu überarbeiten sind. Es beinhaltet das Hinzufügen weiterer Ressourcen wie RAM oder Rechenleistung (CPU) zu Ihrem vorhandenen Server, wenn Sie eine erhöhte Arbeitslast haben, aber dies bedeutet, dass die Skalierung basierend auf der Kapazität des Servers begrenzt ist. Es sind keine Änderungen an der Anwendungsarchitektur erforderlich, da Sie dieselbe Anwendung, dieselben Dateien und dieselbe Datenbank auf einen größeren Computer verschieben.

Horizontale Skalierung umfasst das Hinein- oder Herausskalieren und das Hinzufügen weiterer Server zur ursprünglichen Cloud-Infrastruktur, um als ein einziges System zu funktionieren. Jeder Server muss unabhängig sein, damit Server separat hinzugefügt oder entfernt werden können. Es beinhaltet viele Architektur- und Designüberlegungen rund um Lastenausgleich, Sitzungsverwaltung, Caching und Kommunikation. Die Migration älterer (oder veralteter) Anwendungen, die nicht für verteiltes Computing ausgelegt sind, muss sorgfältig umgestaltet werden. Die horizontale Skalierung ist besonders wichtig für Unternehmen mit Hochverfügbarkeitsdiensten, die minimale Ausfallzeiten und hohe Leistung, Speicher und Arbeitsspeicher erfordern.

Wenn Sie sicher sind, welche Skalierungstechnik besser zu Ihrem Unternehmen passt, müssen Sie möglicherweise eine Cloud-Engineering-Automatisierungsplattform eines Drittanbieters in Betracht ziehen, um Ihre Skalierungsanforderungen, -ziele und -implementierung zu verwalten.

Wägen Sie ab, wie sich Anwendungsarchitekturen auf Skalierbarkeit und Elastizität auswirken

Nehmen wir eine einfache Gesundheitsanwendung – die auch für viele andere Branchen gilt – um zu sehen, wie sie über verschiedene Architekturen hinweg entwickelt werden kann und wie sich dies auf Skalierbarkeit und Elastizität auswirkt. Die Gesundheitsdienste standen stark unter Druck und mussten während der COVID-19-Pandemie drastisch skaliert werden und hätten dies auch tun können davon profitiert cloudbasierte Lösungen.

Auf hoher Ebene gibt es zwei Arten von Architekturen: monolithische und verteilt. Monolithisch (oder geschichteter, modularer Monolith, Pipeline und Mikrokernel) architektonisch sind nicht nativ auf effiziente Skalierbarkeit und Elastizität ausgelegt – alle Module sind im Hauptteil der Anwendung enthalten, sodass die gesamte Anwendung als Ganzes bereitgestellt wird. Es gibt drei Arten von verteilten Architekturen: ereignisgesteuert, Mikrodienste und weltraumbasiert.

Die einfache Gesundheitsanwendung verfügt über:

  • Patientenportal – für Patienten zur Registrierung und Terminbuchung.
  • Ärzteportal – für medizinisches Personal, um Gesundheitsakten einzusehen, medizinische Untersuchungen durchzuführen und Medikamente zu verschreiben.
  • Office-Portal – für die Buchhaltung und Support-Mitarbeiter, um Zahlungen einzuziehen und Anfragen zu beantworten.

Die Dienstleistungen des Krankenhauses sind sehr gefragt, und um das Wachstum zu unterstützen, müssen die Module zur Patientenregistrierung und Terminplanung skaliert werden. Das heißt, sie müssen nur das Patientenportal skalieren, nicht die Arzt- oder Praxisportale. Lassen Sie uns aufschlüsseln, wie diese Anwendung auf jeder Architektur erstellt werden kann.

monolithische Architektur

Tech-fähige Startups, auch im Gesundheitswesen, entscheiden sich aufgrund des Vorteils der schnellen Markteinführung häufig für dieses traditionelle, einheitliche Modell für das Softwaredesign. Aber es ist keine optimale Lösung für Unternehmen, die Skalierbarkeit und Elastizität benötigen. Dies liegt daran, dass es eine einzige integrierte Instanz der Anwendung und eine zentralisierte Einzeldatenbank gibt.

Für die Anwendungsskalierung führt das Hinzufügen weiterer Instanzen der Anwendung mit Lastenausgleich dazu, dass die anderen beiden Portale sowie das Patientenportal skaliert werden, obwohl das Unternehmen dies nicht benötigt.

Die meisten monolithischen Anwendungen verwenden eine monolithische Datenbank – eine der teuersten Cloud-Ressourcen. Cloud-Kosten wachsen exponentiell mit der Skalierung, und diese Anordnung ist teuer, insbesondere im Hinblick auf die Wartungszeit für Entwicklungs- und Betriebsingenieure.

Ein weiterer Aspekt, der monolithische Architekturen für die Unterstützung von Elastizität und Skalierbarkeit ungeeignet macht, ist die Mean-Time-to-Startup (MTTS) – die Zeit, die eine neue Instanz der Anwendung benötigt, um zu starten. Aufgrund des großen Umfangs der Anwendung und Datenbank dauert es in der Regel mehrere Minuten: Ingenieure müssen die unterstützenden Funktionen, Abhängigkeiten, Objekte und Verbindungspools erstellen und die Sicherheit und Konnektivität zu anderen Diensten gewährleisten.

Ereignisgesteuerte Architektur

Ereignisgesteuerte Architektur ist für Skalierung und Elastizität besser geeignet als monolithische Architektur. Zum Beispiel veröffentlicht es ein Ereignis, wenn etwas Auffälliges passiert. Das könnte so aussehen, als würden Sie in einer geschäftigen Zeit auf einer E-Commerce-Website einkaufen, einen Artikel bestellen, aber dann eine E-Mail erhalten, die besagt, dass er nicht vorrätig ist. Asynchrones Messaging und Warteschlangen bieten Gegendruck, wenn das Front-End skaliert wird, ohne das Back-End durch Warteschlangenanforderungen zu skalieren.

In dieser Fallstudie zur Anwendung im Gesundheitswesen würde diese verteilte Architektur bedeuten, dass jedes Modul sein eigener Ereignisprozessor ist; Es besteht die Flexibilität, Daten über ein oder mehrere Module zu verteilen oder gemeinsam zu nutzen. Es gibt eine gewisse Flexibilität auf Anwendungs- und Datenbankebene in Bezug auf die Skalierung, da die Dienste nicht mehr gekoppelt sind.

Microservices-Architektur

Diese Architektur betrachtet jeden Service als Service für einen einzigen Zweck und gibt Unternehmen die Möglichkeit, jeden Service unabhängig zu skalieren und den unnötigen Verbrauch wertvoller Ressourcen zu vermeiden. Für die Datenbankskalierung kann die Persistenzschicht exklusiv für jeden Dienst zur individuellen Skalierung entworfen und eingerichtet werden.

Zusammen mit der ereignisgesteuerten Architektur kosten diese Architekturen mehr Cloud-Ressourcen als monolithische Architekturen bei geringer Auslastung. Bei steigender Last, Multi-Tenant-Implementierungen und bei Traffic-Bursts sind sie jedoch wirtschaftlicher. Auch die MTTS ist sehr effizient und kann durch feinkörnige Dienste in Sekunden gemessen werden.

Aufgrund der schieren Anzahl von Diensten und der verteilten Natur kann das Debuggen jedoch schwieriger sein und es können höhere Wartungskosten anfallen, wenn die Dienste nicht vollständig automatisiert sind.

Weltraumbasierte Architektur

Diese Architektur basiert auf einem Prinzip namens Tuple-Spaced Processing – mehrere parallele Prozessoren mit gemeinsam genutztem Speicher. Diese Architektur maximiert sowohl die Skalierbarkeit als auch die Elastizität auf Anwendungs- und Datenbankebene.

Alle Anwendungsinteraktionen finden mit dem In-Memory-Datengrid statt. Aufrufe an das Grid sind asynchron und Ereignisprozessoren können unabhängig skaliert werden. Bei der Datenbankskalierung gibt es einen Datenschreiber im Hintergrund, der die Datenbank liest und aktualisiert. Alle Einfüge-, Aktualisierungs- oder Löschoperationen werden vom entsprechenden Dienst an den Datenschreiber gesendet und in die Warteschlange gestellt, um abgeholt zu werden.

MTTS ist extrem schnell und dauert normalerweise einige Millisekunden, da alle Dateninteraktionen mit In-Memory-Daten erfolgen. Alle Dienste müssen jedoch eine Verbindung zum Broker herstellen, und die anfängliche Cache-Ladung muss mit einem Datenlesegerät erstellt werden.

In diesem digitalen Zeitalter möchten Unternehmen die IT-Ressourcen je nach Bedarf erhöhen oder verringern, um den sich ändernden Anforderungen gerecht zu werden. Der erste Schritt ist der Wechsel von großen monolithischen Systemen zu einer verteilten Architektur, um sich einen Wettbewerbsvorteil zu verschaffen – das haben Netflix, Lyft, Uber und Google getan. Die Wahl der Architektur ist jedoch subjektiv, und Entscheidungen müssen auf der Grundlage der Fähigkeiten der Entwickler, der mittleren Auslastung, der Spitzenauslastung, der Budgetbeschränkungen und der Wachstumsziele des Unternehmens getroffen werden.

Sashank ist ein Serienunternehmer mit großem Interesse an Innovation.

DatenEntscheider

Willkommen in der VentureBeat-Community!

DataDecisionMakers ist der Ort, an dem Experten, einschließlich der technischen Mitarbeiter, die mit Daten arbeiten, datenbezogene Erkenntnisse und Innovationen austauschen können.

Wenn Sie über innovative Ideen und aktuelle Informationen, Best Practices und die Zukunft von Daten und Datentechnologie lesen möchten, besuchen Sie uns bei DataDecisionMakers.

Sie könnten sogar in Betracht ziehen Beitrag eines Artikels von dir selbst!

Lesen Sie mehr von DataDecisionMakers

Leave a Comment

Your email address will not be published.