Cloud – Infrastruktur im Abo
Cloud Computing, Server/Serverless, IaaS und Web Services – alles Buzzwords die seit geraumer Zeit kursieren. Doch was bedeuten sie überhaupt?
Wir bei Codeatelier beschäftigen uns Tag für Tag intensiv mit genau diesen Themen. Cloud ist für uns nicht nur ein abstrakter Begriff sondern unser täglich Brot. In diesem Blogartikel erklärt unser Cloud-Experte Björn, was Cloud ist und welche Möglichkeiten Amazon Web Services, einer der größten Cloudanbieter der Welt, uns und damit auch euch zu bieten hat.
Was ist ein Server?
Am Anfang war der Personal Computer, und er war gut 😇 – bis der Mensch beschloss: „Verdammt ist der langsam. Ich brauch was schnelleres!“ Auch heute sind Server nichts anderes als vernetzte Computer mit enormer Rechenkapazität. Ihr Aufgabenbereich reicht vom Ausliefern einer einfachen Website bis hin zur Simulation des Wetters auf der gesamten Erdoberfläche.
Für das Hosten einer Website werden natürlich deutlich weniger Ressourcen benötigt als für eine aufwändige Simulation. Aus diesem Grund laufen auf einem Hardware Server meist mehrere virtuelle Maschinen, die logisch voneinander getrennt sind und jeweils unterschiedliche Aufgaben bearbeiten können. Umgekehrt gibt es aber natürlich auch Berechnungen, für die mehrere Server zusammenarbeiten müssen.
On-Premises vs. Cloud
Lange Zeit hatte jedes mittlere bis große Unternehmen sein eigenes Rechenzentrum (On-Premises; wtl. auf dem Gelände) mit etlichen Serverschränken auf denen Datenbankanwendungen, Buchhaltungssysteme oder Netzwerkspeicher für die gesamte Firma bereitgestellt wurden.
Auch heute gibt es noch viele Unternehmen, die ihre eigene Infrastruktur betreiben – sei es aus Compliance-Gründen oder weil man das eben „schon immer“ so gemacht hat. Dennoch geht der Trend immer mehr zu Infrastructure as a Service (IaaS), also Infrastruktur betrieben von einem Dienstleister. Denn ein eigenes Rechenzentrum zu unterhalten erfordert nicht nur einiges an Know-how, sondern ist auch sehr kostenintensiv.
Dank Click-to-Deploy und nutzungsbasierter Abrechnung ist es auch für kleinere Unternehmen, Startups und sogar Privatpersonen ohne viel technisches Hintergrundwissen oder finanziellen Aufwand möglich eigene Anwendungen in der Cloud laufen zu lassen. Hinzu kommt das große Angebot an Software as a Service (SaaS), wie zum Beispiel der Cloudspeicher bei Dropbox & Co. oder individualisierte E-Mail Domains bei Gmail.
Nicht doch lieber Serverless?
Wenn man von Cloud Computing spricht, ist generell gemeint, dass eine Anwendung oder ein Dienst auf fremder Hardware betrieben wird. Dabei muss unterschieden werden, wie sich der Kunde und der Dienstleister, der die Hardware bereitstellt, die Verantwortungen und die Verwaltungsaufgaben teilen.
Die meiste Kontrolle behält der Kunde bei Infrastructure as a Service (IaaS). Hier stellt der Dienstleister lediglich die Hardware zur Verfügung. Der Kunde kann in seiner virtuellen Maschine machen, was er will, muss sich aber im Gegenzug um Dinge wie Software-Updates etc. selbst kümmern.
Bei Container as a Service (CaaS) fällt die Verwaltung des Betriebssystems weg. Hier muss der Kunde lediglich ein Paket (Container) mit seiner Software und deren Abhängigkeiten bereitstellen und diese pflegen.
Bei Platform as a Service (PaaS) fällt auch Letzteres weg. Hier wird die Laufzeitumgebung (Python, Java, Node.js, …) vom Dienstleister bereitgestellt und der Kunde steuert nur noch seine Anwendung bei.
Den geringsten Aufwand hat ein Entwickler mit Function as a Service (FaaS). Dieses Modell unterscheidet sich grundlegend von den andern Nutzungsmodellen. Hier gibt es keine Anwendung, die durchgehend läuft und damit Kosten verursacht. Stattdessen stellt der Kunde lediglich den Programmcode für eine sogenannte Serverless Function bereit. Dieser Code wird vom Dienstleister nur bei Bedarf ausgeführt und läuft zusammen mit hunderten oder gar tausenden anderen Funktionen auf einer geteilten Hardware, sicher voneinander getrennt.
Für den Dienstleister hat dies den großen Vorteil, dass er seine Ressourcen viel effizienter zuweisen kann. Anstatt mit einigen, sich größtenteils im Leerlauf befindenden, virtuellen Maschinen, kann er durch eine intelligente Verteilung der serverlosen Funktionen seine Hardware maximal ausreizen. Das ist nicht nur kostengünstiger, sondern auch umweltfreundlicher. Dieser Kostenvorteil überträgt sich natürlich auch auf den Kunden. Er zahlt nur für die Rechenzeit, die er tatsächlich nutzt. Bei führenden Cloudanbietern sind das momentan gerade einmal ein Bruchteil eines Cents pro Sekunde. Das Betreiben eines eigenen Datencenters erscheint im Vergleich dazu unbezahlbar.
Ein weiterer Vorteil und ein wichtiges Merkmal von Serverless ist die Skalierbarkeit. Skalierung bei Servern (egal ob Hardware oder virtuell) ist immer mit einem deutlichen zeitlichen und auch finanziellen Aufwand verbunden. Selbst mit Containertechnologie dauert es einige Sekunden, bis die angeforderten Ressourcen bereitstehen. Hinzu kommen technische Hürden wie Lastverteilung. Serverlose Funktionen können im Gegensatz dazu, wenn benötigt nahezu beliebig oft parallel laufen – und das ohne Verzögerung.
Neben der Codeausführung bieten Clouddienstleister noch eine Reihe weiterer Serverless Lösungen an. Dazu zählen unter anderem Datenbanken und Web Hosting. Bei diesen Diensten handelt es sich um fertige Anwendungen. Sie fallen unter die Kategorie Software as a Service (SaaS). Weitere Beispiele, die ebenfalls nicht auf Konsumenten abzielen, wären beispielsweise Spracherkennung, Robotikanwendungen oder Flottenmanagement.
AWS – die eierlegende Wollmilchsau
AWS steht für Amazon Web Services und ist einer der größten Cloudanbieter der Welt. Er steht in direkter Konkurrenz zu Google Cloud und Microsoft Azure. Jeder dieser Anbieter bietet eine Vielzahl von Diensten, in mehreren Datenzentren überall auf dem Globus, an.
Dienste der Amazon Elastic Compute Cloud lassen sich der Kategorie IaaS zuordnen. Mit ihnen ist es möglich klassische virtuelle Server zu mieten und zu vernetzen. Im Elastic Container Service können Docker Container gehostet werden (CaaS) und Elastic Beanstalk stellt komplette Laufzeitumgebungen für Kundenanwendungen bereit (PaaS). Beanstalk ist besonders geeignet, um Legacy Anwendungen zu hosten, die keine Abhängigkeiten im Betriebssystem haben. Dabei entfällt das Einrichten eines ganzen Serversystems lediglich die Anwendung muss gepflegt werden.
Der große Star ist aber AWS Lambda. Das ist Amazons Version des Function as a Service Ansatzes. In Kombination mit dem Dienst API Gateway lassen sich serverlose REST APIs implementieren.
Das alles ist aber nur die Spitze des Eisbergs. AWS bietet mit 175 verschiedenen Services für jeden erdenklichen Anwendungsfall ein Produkt, zum Beispiel Datenbanken, Cloudspeicher, DNS (Domain Name System) und CDN (Content Delivery Network), Media Streaming, Blockchain, Machine Learning, Kundenmanagement, IoT, usw. Die Liste erscheint endlos.