BlogAllgemeinCloud Computing 101, Teil 1: Was genau ist eigentlich Cloud-Computing?

Cloud Computing 101, Teil 1: Was genau ist eigentlich Cloud-Computing?

Ein Beitrag von Yannick Hochstuhl

Was ist Cloud-Computing?

Cloud Computing oder die Cloud ist in aller Munde. Zweifelsfrei hat das Konzept des Cloud-Computings die Art und Weise revolutioniert, wie Unternehmen und Einzelpersonen auf Computing-Ressourcen zugreifen und sie nutzen können. Es ermöglicht deutlich größere Flexibilität und Skalierbarkeit und reduziert gleichzeitig den Bedarf an kostspieliger physischer Infrastruktur und Wartung. Was Cloud Computing allerdings genau ist und was es ausmacht, das ist vielen sehr viel unklarer. Auf der Suche nach einer formalen Definition wird man beim US-amerikanischen National Institute of Standards and Technology (NIST) fündig. Das NIST, vergleichbar mit der deutschen Physikalisch-Technischen Bundesanstalt, liefert in der Special Publication 800-145 eine weitaus akzeptierte Definition des Begriffs Cloud-Computing:

Cloud computing is a model for enabling ubiquitous, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, and services) that can be rapidly provisioned and released with minimal management effort or service provider interaction.

Im Weiteren werden fünf essentielle Charakteristiken definiert, die ein System mindestens erfüllen muss, um als Cloud-Computing System zu gelten. Diese notwendigen Bedingungen sind:

  1. On-demand self-service
  2. Broad network access
  3. Resource pooling
  4. Rapid elasticity
  5. Measured service

Was bedeuten diese Bedingungen im Detail?

On-demand self-service bedeutet, dass ein Nutzer Kapazitäten (z.B. virtuelle Maschinen, Speicher, Datenbanken, Funktionen oder Netzwerke) ohne jegliche menschliche Interaktion bereitstellen kann. Bei den drei großen Cloud-Anbietern AWS, Azure und Google kann man über ein Web-Interface, die Command Line oder über APIs auf seinen Account zugreifen und on-demand entsprechende Ressourcen zur Verfügung stellen. Dies ist alles ohne die Notwendigkeit eines Tech-Support-Teams möglich oder ohne den Anbieter kontaktieren zu müssen. Ganz konkret bedeutet das: Ich kann jetzt im Moment des Schreibens meinen Browser öffnen, mich in meinen AWS Account einloggen und über die AWS Console innerhalb weniger Minuten eine voll funktionsfähige Virtuelle Maschine mit Betriebssystem, Speicher, virtuellen Netzwerkkarten etc. aufsetzen. Und ich muss dafür nicht wie noch vor einiger Zeit einen Vertrag mit einem Data Center schließen, Hardware auf bestimmte Zeit anmieten, etc.. Alles geschieht on-demand und per self-service.

Broad network access meint, dass die entsprechenden Kapazitäten über ein Netzwerk (das Internet) zur Verfügung gestellt werden und über Standardmechanismen auf sie zugegriffen werden kann. Standardmechanismen bedeutet in diesem Kontext HTTP, HTTPS, SSH, remote desktop oder über eine VPN-Verbindung. Das heißt, dass ich von überall, wo es eine Internetverbindung gibt, auf die virtuelle Maschine Zugriff erhalte.

Resource pooling meint, dass Ressourcen gepooled werden, um ein multi-tenant Modell zu verfolgen. Das heißt, dass auf einem Rack oder einer Hardware mehrere Ressourcen unterschiedlicher Nutzer laufen können. Dies macht es dem Betreiber deutlich einfacher, seine Ressourcen zu skalieren. Allerdings habe ich dann als Nutzer keinen 100-prozentigen Einfluss darauf, wo und wie meine bereitgestellten Ressourcen gehostet werden. Ich kann zwar definieren, in welcher Region meine virtuelle Maschine oder mein Netzwerkspeicher deployed werden soll, beispielsweise um Anwendungen näher beim Kunden laufen zu lassen und somit die Latenz zu verringern. Aber in welchem Datencenter, auf welchem Rack und auf welcher Hardware die virtuelle Maschine dann läuft, darauf habe ich keinen – oder nur in geringem Maße – Einfluss.

Bild 1

Rapid elasticity bedeutet, dass Ressourcen schnell und elastisch bereitgestellt und freigegeben werden können, um je nach Bedarf in beide Richtungen zu skalieren. Stellen wir uns folgendes Szenario vor: Wir betreiben einen Online-Store, auf dem wir bestimmte Waren zum Verkauf anbieten. Über unsere Website können Kunden Artikel auswählen, in ihren virtuellen Warenkorb legen und bezahlen. Die Nutzerzahlen unseres Stores sind über das Jahr hinweg recht konstant und vorhersagbar, deswegen haben wir uns initial dafür entschieden, den Online-Store auf unserer eigenen Hardware zu hosten, zum Beispiel in einem Serverraum im Office. Wir antizipieren jährlich steigende Nutzerzahlen und kalkulieren das in unsere Budgetplanung und Hardwarebereitstellung mit ein. Dann passiert etwas Unvorhergesehenes: Wir schließen einen Exklusivvertrag mit einem Anbieter ab, werben damit und plötzlich explodieren die Nutzerzahlen schlagartig. Unter der Last bricht unser Store zusammen und Kunden können die Website nicht mehr erreichen. Worst case scenario. Hätten wir uns dafür entschieden, den Store in der Cloud zu hosten, wäre das aufgrund der rapid elasticity nicht passiert. Richtig konfiguriert erscheint es für uns als Betreiber so, als hätte die Cloud kein Kapazitätslimit. Es macht für uns keinen Unterschied, ob wir zehn, 100 oder 1000 virtuelle Maschinen benötigen, das Prinzip der rapid elasticity sorgt dafür, dass wir immer bedarfsgerecht versorgt werden.

Measured service bedeutet, dass Ressourcen überwacht, kontrolliert und gemessen werden können und somit eine Transparenz entsteht. Ganz pragmatisch bedeutet dies, dass es dem Nutzer innerhalb der Cloud möglich sein muss zu überwachen und zu überprüfen, dass er nur diejenigen Ressourcen benutzt, die er auch tatsächlich benötigt und dass er dann auch nur für diese Ressourcen tatsächlich bezahlt.

Bild 2

AWS setzt diese Anforderung beispielsweise mit verschiedenen Services um. Hauptbestandteil ist dabei Cloud Watch, ein Service, der es ermöglicht verschiedene Metriken zu tracken und visualisieren. Das Cloud Watch board ist in der Abbildung zu sehen. Analog gibt es in Azure und Google Cloud Services, die measured service ermöglichen.

Diese fünf Charakteristiken müssen also erfüllt sein, damit ein System als Cloud-Computing System gilt. Die drei großen Anbieter AWS, Azure und Google erfüllen diese Charakteristiken und noch mehr.

Ausblick

Nachdem wir nun wissen, was Cloud-Computing genau ist, gehen wir im nächsten Beitrag der Reihe auf einen der wichtigsten Vorteile des Cloud-Computing ein: nämlich die einfachere Realisierung von robusten und fehlertoleranten Software-Systemen, genauer wird es um die Begriffe Disaster Recovery, High Availability und Fault Tolerance gehen.