IaaS versus PaaS, versus Container

Immer mehr Unternehmen gehen dazu über, Cloud-native Anwendungen zu entwickeln. Denn insbesondere SaaS- und Web-Applikationen müssen von Grund auf neu entwickelt werden, um von einer Cloud-Umgebung zu profitieren. [...]

IaaS, PaaS und Container-Technologien unterscheiden sich grundlegend in ihren Charakteristika. Bei IaaS handelt es sich um die unterste Schicht des Cloud-Service-Modells. Sie bildet die Basis und stellt die grundlegenden Dienste wie Rechenleistung, Speicherplatz und Netzwerkkapazitäten bereit. Der IaaS-Anbieter stellt diese Ressourcen in einer virtualisierten Form wie virtuelle Maschinen oder VLANs bereit, auf die anhand von APIs zugegriffen wird. Eine Cloud-Infrastruktur ist so konzipiert, dass sie in Zeiten von Spitzenlasten dynamisch skalieren kann und sich damit an unterschiedliche Auslastungen anpasst. Ein IaaS-Anbieter übernimmt lediglich Verantwortung auf Infrastrukturebene. Er kümmert sich um den Betrieb und die Wartung der Rechenzentren sowie der physikalischen Umgebung und sorgt dafür, dass Kunden die virtuellen Ressourcen jederzeit anfordern können. Alles, was auf den höheren Ebenen passiert, liegt zu 100 Prozent im Verantwortungsbereich des Kunden.

PaaS repräsentiert die mittlere Schicht des Cloud-Service-Modells. Ein PaaS-Anbieter stellt eine Umgebung für die Entwicklung und den Betrieb von Web-Applikationen zur Verfügung. Diese Umgebung umfasst alles, vom vollständigen Stack des Betriebssystems über Datenbanken bis hin zu den jeweiligen Laufzeitumgebungen und weiteren Microservices, die bei der Anwendungsentwicklung unterstützen. Auf dieser Plattform lassen sich Webapplikationen entwickeln, testen und betreiben und damit der vollständige Lebenszyklus einer Anwendung verwalten. Anhand von APIs wird auf die Ressourcen und Services der PaaS-Plattform zugegriffen. Mit der Infrastruktur kommt ein Anwender niemals in Berührung und muss auch nicht für die notwendige Ressourcenbereitstellung sorgen, das übernimmt die PaaS-Umgebung automatisch.

Container werden verwendet, um Applikationen in einer gekapselten Form automatisiert bereitzustellen. Hierzu nutzen Technologien wie Docker oder CoreOS „rkt“ die Eigenschaften des Linux-Kernels. Dabei werden Ressourcen wie Prozessor, RAM, Netzwerk oder Block-Speicher voneinander isoliert, ohne auch nur eine einzige virtuelle Maschine zu starten. Applikationen werden von ihrer jeweiligen Umgebung inklusive der Prozesse, Dateisysteme oder des Netzwerks vollständig getrennt und damit autonom innerhalb eines Containers betrieben. Durch das Aufheben dieser externen Abhängigkeiten lassen sich Applikationen damit über unterschiedliche Systeme hinwegbewegen. Hierzu kapseln Container die eigentliche Anwendung und ihre notwendigen Abhängigkeiten so wie Bibliotheken in einer virtuellen Umgebung ab. Diese können dann auf jedem beliebigen Linux- und Windows-System ausgeführt werden, wo eine Laufzeitumgebung für die entsprechende Container-Technologie existiert. Dies erhöht den Portabilitätsgrad und die Flexibilität der Anwendung.

Für die Entwicklung und den Betrieb von Applikationen in der Cloud lassen sich sowohl IaaS, PaaS als auch Container-Technologien nutzen. Jede Deployment-Variante hat indes ihre speziellen Eigenschaften, die es zu berücksichtigen gilt.

Der Erfolg von IaaS lässt sich an mehreren Eigenschaften festmachen. Angefangen dabei, dass Entwicklern damit umgehend Ressourcen zur Verfügung stehen, um eine Idee umzusetzen. Wenn die Idee von Erfolg gekrönt war, kann über weitere Server der Footprint erweitert werden. Sollte sich die Idee hingegen nicht bewähren, lässt sich die Infrastruktur innerhalb von Minuten abschalten, ohne weitere Kosten zu verursachen. Zudem war es vorher nicht möglich, anhand eines AutoScaling-Mechanismus eine Web-Infrastruktur je nach Last und Anforderungen bei Bedarf wachsen beziehungsweise schrumpfen zu lassen. Hinzu kommt, dass mit IaaS jedem Entwickler eine vollständig automatisierte Infrastruktur zur Verfügung steht, um Konzepte wie „Infrastructure as Code“ zu nutzen.

IAAS FÜR MEHR KONTROLLE UND LEGACY

Das IaaS-Modell stellt Unternehmen und Entwicklern also Basis-Ressourcen wie Rechenleistung, Speicherplatz und Netzwerk zur Verfügung, mit denen sich eine eigene virtuelle Infrastruktur aufbauen lässt, um Applikationen zu betreiben. Es handelt sich dabei um einen ähnlichen Ansatz wie beim Betrieb der Infrastruktur im eigenen Rechenzentrum. Mit dem kleinen Unterschied, dass ausschließlich der IaaS-Anbieter Kontrolle über die physikalische Umgebung und deren Management-Software besitzt. Allerdings bietet eine IaaS-Umgebung insofern einen hohen Kontrollgrad, da sich auf den virtuellen Maschinen prinzipiell alles selbst installieren und zu 100 Prozent konfigurieren lässt. Dennoch ist für jede IaaS-Umgebung ein spezielles Wissen über die Cloud-Infrastruktur eine Grundvoraussetzung, um anhand von Tools die Umgebung und Applikation zu verwalten.

Je nach Anbieter lassen sich auf einer IaaS-Umgebung sowohl Cloud-native als auch Legacy-Anwendungen betreiben. Anbieter wie AWS und Microsoft unterstützen anhand ihrer Plattform-Services bei der Entwicklung moderner Anwendungen, um bedingungslos von den Eigenschaften ihrer Cloud-Infrastrukturplattform zu profitieren. Diese Umgebungen bieten jedoch auch bestehenden Anwendungen ein Zuhause. Hierbei müssen dann das Design der jeweiligen Cloud-Architektur entsprechend angepasst und Themen wie unter anderem das Sicherheitsmodell, Load Balancing, gegebenenfalls Speicherplatz, das Design des Netzwerks, DNS-Routing sowie das AutoScaling der Server berücksichtigt werden.

PAAS FÜR CLOUD-NATIVE ENTWICKLUNG UND CONVENIENCE

Das PaaS-Modell abstrahiert die darunterliegende Infrastruktur von der Applikation. Dies führt dazu, dass sich Entwickler und Applikationsmanager nicht um den Aufbau und die Verwaltung der Infrastruktur kümmern müssen, die für die Applikation erforderlich ist. Hierfür stellt eine PaaS-Umgebung eine standardisierte Plattform bereit, die zur Entwicklung, dem Test und Deployment dient und Funktionen für das Konfigurationsmanagement beinhaltet, um damit die Continuous Integration und das Continuous Development zu unterstützen. Diese Erleichterung im Rahmen der Anwendungsentwicklung und dem Management kommen mit dem Kompromiss einher, dass die meisten PaaS-Umgebungen nur spezifische Funktionen eines Anbieters enthalten, um Applikationen zu entwickeln und bereitzustellen. Trotz eines einfachen und kontrollierbaren Entwicklungsprozesses müssen Entwickler auf andere Ressourcen und Tools wie zum Beispiel externe APIs und Microservices, Middleware und native APIs zurückgreifen.

Auf PaaS-Umgebungen lassen sich idealerweise Cloud-native Applikationen entwickeln und betreiben. Für Legacy-Anwendungen kommt ein PaaS hingegen weniger infrage, da der Programmcode für die PaaS-Umgebung angepasst werden muss, was eine Migration erschwert. Insbesondere bei den Themen Skalierbarkeit und dem Application Lifecycle Management (ALM) bieten PaaS-Umgebungen deutliche Vorteile. So lässt sich die Anzahl von Application Workers mit nur einem Befehl erhöhen beziehungsweise minimieren. Im Vergleich dazu bietet eine IaaS-Umgebung nur wenige Möglichkeiten, eine Instanz zu skalieren. Ausgehend davon, dass sich die Applikationsserver hinter einem Load Balancer befinden, können dahinter weitere Instanzen hochgefahren werden, auf denen dann die Anwendung bereitgestellt wird. Hinzu kommt, dass die Instanzen in den meisten Fällen für jedes Release zum Teil manuell (via Skripting) neu angepasst werden müssen. Eine PaaS-Umgebung bietet hier einen deutlichen Zeitvorteil – je nach optimierter Konfiguration der Virtual Machine Images in einem Verhältnis von 15 Minuten bei IaaS und etwa 15 Sekunden bei PaaS.

Geht es um das ALM, bieten PaaS-Umgebungen deutlich mehr Komfort als IaaS-Umgebungen. Wer den IaaS-Weg beschreitet, muss sich selbst um eine Lösung für das Applikationsmanagement kümmern: von der Provisionierung der Infrastruktur über die Bereitstellung der Änderungen der Applikationen bis hin zur Skalierung der Applikationsinstanzen. Hingegen bieten PaaS-Umgebungen eine einheitliche Schnittstelle, um das Applikationsmanagement vorzunehmen. Die PaaS-Umgebung ist dabei als Blackbox implementiert und übernimmt die Aufgaben automatisch.

CONTAINER FÜR EINE BESSERE PORTABILITÄT UND LEGACY

Container stellen Möglichkeiten bereit, um paketierte Software-Stacks portabel einzusetzen. Ein Großteil traditioneller PaaS-Umgebungen setzt auf Container-Technologien als Basis, um Multi-Tenant Applikationen auf einer Shared-Infrastructure zu ermöglichen. Hierbei nutzen sie in den meisten Fällen Web-Container für eine bestimmte Programmiersprache wie Java, Rails, Ruby, Python, Django oder NodeJS, um darin den Programmcode zu speichern. Technologien wie Docker oder LXC kommen zum Einsatz, um die Container zu verwalten, und sorgen für die Isolation zwischen den einzelnen Web-Containern. Diese Form der Architektur bietet sich gut für Web-Applikationen an, die aus einem Web-Front-End und entsprechenden Datenbanken im Backend bestehen. Aber Container können nicht nur für Web-Applikationen eingesetzt werden, sondern bieten sich ebenfalls für jede Art von Applikation wie Microservices, Big Data, Analytics und auch Legacy-Anwendungen an. Der Einsatz von Containern in Kombination mit Orchestration-Lösungen wie Kubernetes, Heat oder Cloudify helfen beim automatisierten Verpacken, Bereitstellen und Verwalten von Anwendungen auf IaaS-Umgebungen. Die Kombination von Containern und Orchestration eröffnet zudem eine bessere Flexibilität auf Infrastrukturebenen, indem eine Abstraktionsschicht zwischen der Applikation und der darunterliegenden Infrastruktur eingezogen wird. Denn IaaS-Umgebungen werden anhand von Skripten automatisiert betrieben. Das bietet den Vorteil, dass in dem Skript genau zu sehen ist, welche Schritte ausgeführt werden und was passiert, wenn es ausgeführt wird. Hierdurch wird es einfacher, Fehler zu identifizieren.

Ein weiterer Vorteil ist, dass ein Skript replizierbar ist und auf einfache Weise geteilt, vervielfacht, angepasst oder neu geschrieben werden kann. Damit ist der Grad an Kontrolle und Flexibilität auf einer IaaS-Umgebung deutlich größer als bei einem PaaS. Allerdings wird diese Flexibilität mit einer sehr geringen Portabilität und einer höheren Komplexität der Anwendung bezahlt, da diese auf viele externe Abhängigkeiten angewiesen ist. An dieser Stelle kommt die Kombination von Containern und Automatisierung ins Spiel. Container erlauben einen höheren Kontrollgrad und eine bessere Portabilität, indem sie die Komplexität reduzieren und Abhängigkeiten verringern. Die Automation kommt im besten Fall nur dann zum Einsatz, um die Abhängigkeiten zwischen einzelnen Services und Ebenen der Applikation zu handhaben und für die notwendige Skalierbarkeit und Ausfallsicherheit zu sorgen.
 
Rene Büst|Crisp Research


Mehr Artikel

News

KI in der Softwareentwicklung

Der “KI Trend Report 2025” von Objectbay liefert Einblicke, wie generative KI entlang des Software Engineering Lifecycle eingesetzt wird. Dafür hat das Linzer Softwareentwicklungs-Unternehmen 9 KI-Experten zu ihrer Praxiserfahrung befragt und gibt Einblicke, wie der Einsatz von KI die IT-Branche verändert wird. […]

News

F5-Studie enthüllt Lücken im Schutz von APIs

APIs werden immer mehr zum Rückgrat der digitalen Transformation und verbinden wichtige Dienste und Anwendungen in Unternehmen. Gerade im Zusammenhang mit kommenden KI-basierten Bedrohungen zeigt sich jedoch, dass viele Programmierschnittstellen nur unzureichend geschützt sind. […]

News

VINCI Energies übernimmt Strong-IT

VINCI Energies übernimmt Strong-IT in Innsbruck und erweitert damit das Leistungsspektrum seiner ICT-Marke Axians. Strong-IT schützt seit mehr als zehn Jahren Unternehmen gegen digitale Bedrohungen, während Axians umfassende IT-Services einbringt. […]

Be the first to comment

Leave a Reply

Your email address will not be published.


*