cloudhistory.jpg

Eine kurze Geschichte der Cloud

28.09.2021 | 18:57 Uhr
Mogee

Vom Mainframe zur App

 

Heute sind mobile Applikationen so selbstverständlich, dass die Zeiten fast vergessen sind, als Großrechner (Mainframe Computer) wie der IBM-704 noch zu den absoluten Neuheiten im Computing zählten. Das war 1954. Als erster in geringer Stückzahl hergestellter Mainframe beherrschte der IBM Gleitkommaarithmetik – eine endliche Arithmetik, die entwickelt wurde für numerische Berechnungen mit binären Rechnern. In der Zeitspanne nur eines Menschenlebens entwickelte sich der Mainframe mit Bandlaufwerk zu modernem Cloudcomputing. Aber wie genau hat sich das abgespielt und wie sieht die Zukunft aus?

 

Der erste Großrechner für den Massenmarkt

 

Das erste Großrechnersystem für den Massenmarkt war ein wichtiger Meilenstein für Softwareanwendungen. Nachdem IBM 1964 das System/360 (S/360) einführte, legte das Unternehmen das Fundament dafür, spätere Upgrade-Versionen zu portieren. Diese mussten nun nicht mehr komplett neu geschrieben werden. Großrechner wurden fortan als leistungsfähige zentrale Computersysteme konzipiert, auf die Benutzer gleichzeitig zugreifen konnten über ein Terminal aus Tastatur und Monitor. Weiterer Vorteil: sie konnten sich die Rechenzeit teilen.

 

Mit der Einführung des Mikroprozessors 1977 begann die Zeit der Personal Computer (PC). Drei Microcomputer für den Massenmarkt kämpften zunächst um den ersten Platz: der Apple II, der Commodore PET 2001 und der TRS-80 von Tandy. Doch so richtig in Schwung kam der Markt erst 1981, als IBM sein PC-Modell 5150 vorstellte. Die Rechenleistung wurde verlagert von gemeinsam genutzten Großrechnern, als zentrale Verarbeitungssysteme, hin zur verteilten Verarbeitung mit Workstations und PCs. Durch das Aufkommen der PCs hat sich auch die Softwareentwicklung verändert: Mehrere Betriebssysteme und verschiedene Hochsprachen begannen nun, um Marktanteile zu konkurrieren. Ende der 1980er-Jahre wurde in Unternehmen zudem das Client-Server-Modell populär, da es eine bessere Ressourcenplanung erlaubte und die Arbeit intelligent auf verschiedene PCs verteilt hat. Das führte zu einem weiteren Effekt auf Softwaredesign: Ein Teil der Aufgaben wurde auf einem zentralen Server erledigt und Clients leiteten die Arbeitslasten an den Server weiter, wodurch die Server- und Client-Anwendungen miteinander kommunizieren mussten.

 

On-Premise versus Hosting

 

Mit zunehmender Beliebtheit des Internets traten dann in den späten 1990er- und frühen 2000er-Jahren Application-Service-Provider (ASP) auf den Plan: Anwendungsdienstleister bieten Anwendungen zum Informationsaustausch über ein öffentliches oder privates Datennetz an und kümmern sich um die gesamte Administration (Datensicherung, Einspielen von Patches, etc.). Dadurch wurde Software zentral auf einer Serverumgebung ausgeführt und über http abgerufen. In der Folge konnten viele Benutzer gleichzeitig bedient werden.

 

Einen nächsten Evolutionsschritt markierte das Software-as-a-Service-Modell (SaaS). Mehrere Mieter konnten damit gleichzeitig dieselben Ressourcen nutzen und sich deren Kosten teilen. Für App-Anbieter standen dadurch eine Reihe von Entscheidungen an, die sich darauf auswirkten, wie die Anwendungen optimal verfügbar waren – etwa, wo sie gehostet werden sollten: bei einem Hosting-Anbieter oder „on premise“? „On premise“, also das Anschaffen und Installieren von Software auf eigenen Servern vor Ort, bindet Rechenleistung, Arbeitsspeicher und Speicherressourcen. Daher mussten Anbieter ständig darüber nachdenken, wie weit Ihre Infrastruktur reicht um die Nachfrage nach Ihren Produkten zu befriedigen. Zudem mussten sie sich über alle Aspekte Ihrer Webdienste Gedanken machen, insbesondere über Sicherheit, Datensicherheit und Redundanz.

 

Zu den Vorteilen zählt, dass On-Premise-Software leichter an die eigenen, oft sehr individuellen Anforderungen anpassbar ist. Insbesondere große Unternehmen und Konzerne legen starken Wert darauf, alle Daten in ihrer Hoheit zu halten und Software umfassend in ihr bestehendes IT-System zu integrieren und unmittelbar mit anderer Software zu verknüpfen. Dazu bedarf es jedoch des entsprechenden technischen Know-hows, da hier Monitoring, Wartung und Backups selbst geleistet werden müssen. Diese Variante ist für kleinere Unternehmen meist kaum umsetzbar aufgrund der hohen Softwarelizenzkosten und des Ausfallrisikos der eigenen Serverumgebung.

 

Hosting beziehungsweise Software-as-a-Service ermöglicht dagegen, die Software und Daten bei einem externen Anbieter zu abonnieren. Dadurch verringert sich der finanzielle und technische Aufwand am Anfang. Monatliche Nutzungsgebühren ersetzen hohe Anschaffungskosten für eigene Server sowie für Softwarelizenzen. Auch die Wartungs-, Monitorings- und Backupaufgaben liegen hier beim Hostinganbieter. Insbesondere kleinere Unternehmen, ohne dem nötigen technischen Knowhow und den finanziellen Ressourcen, profitieren von den niedrigeren Setupkosten und der flexiblen Nutzung. Unterschiedliche Abo-Modelle bieten häufig unterschiedliche Leistungsumfänge beim Speicherplatz und den Funktionalitäten an, die sich je nach Bedarf vermindern oder erweitern lassen. Neben dem geringeren Aufwand und den risikoarmen Einsatz fällt zudem die Möglichkeit ins Gewicht, schnell zu skalieren und SaaS-Lösungen so in bestehende Systeme zu integrieren, dass sie nicht mit anderer Software kollidieren.

 

Die Cloud: Von Generation eins zu Cloud-native

 

Um Entwicklern eine IT-Infrastruktur auf Abruf anzubieten startete Amazon 2006 seine Web-Services (AWS). Im Fokus standen dabei vornehmlich Unternehmen und weniger Endanwender. Mit Amazon S3 Simple Storage Service führte das von Jeff Bezos gegründete Unternehmen einen weiteren Meilenstein ein: zur Virtualisierung von Rechenleistung und Speicherplatz. Was später als Cloud-Computing bezeichnet werden sollte, abstrahierte die physische Welt von der virtuellen. Dadurch konnten Anwendungen Ressourcen nahtlos zuweisen und skalieren, ohne dass dafür dedizierte Server erforderlich waren – quasi ein Pool verbundener Ressourcen mit intelligenten Lastverteilern. Zudem gab es eine breite Palette verwalteter Dienste, wodurch die genutzten Ressourcen nach Bedarf skaliert werden konnten und die Sicherheits- und Redundanzfunktionen bedarfsgerecht nutzbar wurden.

 

Um die Vorteile von Cloudarchitekturen optimal zu nutzen, haben Unternehmen ihre Anwendungsentwicklungs- und Bereitstellungsmodelle mit der Entwicklung der Cloud neu überdacht. Cloud-Provider der ersten Generation, wie AWS, Microsoft Azure, Google Cloud Engine und andere, verfolgten in erster Linie "Lift-and-Shift"-Ansätze: Applikationen und die zugehörigen Daten wurden auf eine Cloud-Plattform verschoben ohne das Applikationsdesign zu verändern. Dabei wurden On-Premise-Apps und -Infrastruktur auf eine „unmanaged“-Standardplattform verlagert, um Kosten für Hardware und IT-Overhead zu sparen. Eine Weiterentwicklung dessen ist der „Cloud-native“-Ansatz. Dieser nutzt die Vorteile der Cloud-Architektur, vereint mit der Microservice-Architektur und Container-Technologien. Damit bietet dieser neue Ansatz die notwendigen Optionen, um das Potential von Anwendungsarchitekturen in einer cloudbasierten Welt voll auszuschöpfen.

 

Cloud-native App-Strategien haben eine Revolution in der IT ausgelöst, erfordern jedoch eine neue Denkweise um die Leistungsfähigkeit der Cloud optimal zu nutzen.

 

Drei Säulen cloudnativer Anwendungen

 

Die gängige Definition einer cloudnativen Anwendung umfasst drei Hauptsäulen: Erstens, dass die Anwendung verpackt ist in eine Container-Technologie wie Docker. Zweitens, dass sie aus einer Reihe von Microservices besteht, die Daten und logische Prozesse in diskreten Komponenten bereitstellen. Und drittens, dass sie dynamisch verwaltet wird von einem Supervisor, der die Prozesse für Funktionalität und Skalierung orchestriert und zusammenführt. Miteinander kombiniert lösen diese drei Säulen jede Menge Probleme für IT-Organisationen, Software- und Appentwickler. Dazu zählen etwa einfache Skalierung, hohe Anwendungssicherheit und verteilte Strukturen.

 

Symbiose von Infrastruktur und Anwendungsdesign

 

Um diese optimal nutzen zu können, bedarf es Anwendungsdesigns, die bestmöglich auf die Use Cases und die bereitgestellte Cloudinfrastruktur angepasst sind. Eine Symbiose von Infrastruktur und Anwendungsdesign kann Komplexität reduzieren, Abhängigkeiten von Spezialisten verringern, Silos abschaffen und Kollaboration fördern, woraus Unternehmen und Entwicklern neue Freiräume erwachsen. Freiräume, die sie dazu nutzen können, ihre kreative Schaffenskraft zu fokussieren: auf das Entwickeln neuer, innovativer Software und cloudnativer Apps.