diff --git a/KN00/x_res/Servicemodelle.md b/KN00/x_res/Servicemodelle.md new file mode 100644 index 0000000..7071fc7 --- /dev/null +++ b/KN00/x_res/Servicemodelle.md @@ -0,0 +1,175 @@ +**Servicemodelle in der Cloud** + +Der Begriff "Cloud" ist längst in die Alltagssprache eingezogen, doch die +wenigsten können im Detail erklären, was genau damit gemeint ist. Tatsächlich +gibt es eine Definition des NIST, die vier Servicemodelle beschreibt. Welche +sind das? + +**Der Begriff "Cloud" ist längst in die Alltagssprache eingezogen, doch die +wenigsten können im Detail erklären, was genau damit gemeint ist. Tatsächlich +gibt es eine Definition des NIST, die vier Servicemodelle beschreibt. Welche +sind das?** + +Das US-amerikanische National Institute of Standards and Technology (NIST) hat +eine Definition geschaffen, was unter "Cloud" zu verstehen ist. Darin sind unter +anderem vier Servicemodelle beschrieben, die sich unter dem Begriff XaaS +zusammenfassen lassen, was üblicherweise als Anything as a Service gelesen wird. + +**Infrastructure as a Service (IaaS)** + +Das erste dieser Servicemodelle ist Infrastructure as a Service (IaaS). Es +beschreibt das Geschäftsmodell, Infrastruktur zu vermieten, statt sie zu +verkaufen. Für viele Unternehmen rechnet sich der Betrieb eigener Hardware in +einem eigenen Rechenzentrum nämlich nicht, da das teuer und aufwendig ist und +dafür in der Regel ein eigenes Team benötigt wird. + +Anders als beim Webhosting in den 90er-Jahren geht es bei IaaS aber nicht mehr +darum, Hardware physisch zu buchen, denn auch das ist langsam, aufwendig, +umständlich und schlecht skalierbar. Stattdessen werden Server als virtuelle +Maschinen angeboten und um andere virtualisierte Ressourcen ergänzt, +beispielsweise virtuelle Netzwerke. Die gesamte Infrastruktur wird also +softwaredefiniert bereitgestellt. + +Weil das softwaredefiniert erfolgt, lässt sich Infrastruktur auch automatisiert +und "on demand" per API aufsetzen. Die Abrechnung erfolgt dabei als +Pay-per-Use-Modell, auf lange Vertragslaufzeiten wird verzichtet. + +Bekannt ist dieses Modell unter anderem von Amazon, die mit AWS (Amazon Web +Services) einen Dienst anbieten, über den sich Ressourcen aus den Rechenzentren +von Amazon buchen lassen. Aber auch andere Anbieter bedienen diesen Markt, +beispielsweise Digital Ocean, Microsoft Azure oder die Google Cloud Platform. + +Insgesamt lässt sich sagen, dass IaaS damit die Grundlage für die Cloud +darstellt, die sich nun aber in verschiedenen Schritten nach und nach +abstrahieren lässt. + +Youtube + +**Platform as a Service (PaaS)** + +Auch wenn sich IaaS nicht mehr mit physischer Hardware befasst, ist das +Servicemodell immer noch weit weg von der Anwendungsentwicklung. In der +Entwicklung will man sich nicht zwingend mit Servern, Storage, Load-Balancing & +Co. beschäftigen, sondern eher auf der Ebene des Betriebssystems und einer +Laufzeitumgebung wie Node.js oder .NET Core arbeiten. + +Genau das adressiert Platform as a Service (PaaS), was letzten Endes eine +fertige Softwareumgebung zur Verfügung stellt, auf deren Basis man Anwendungen +entwickeln und vor allem ausführen kann. Die Idee dabei ist, sich nicht mehr um +die zugrunde liegende Hardware und das Deployment kümmern zu müssen. Auch das +Einspielen von Updates für das Betriebssystem oder die Laufzeitumgebung +entfällt. Um all diese Aspekte kümmert sich der PaaS-Anbieter. + +Dadurch lässt sich der Fokus auf die eigentliche Anwendungsentwicklung legen, +die Bereitstellung erfolgt anschließend automatisiert und transparent. Man legt +nur noch fest, auf welcher Plattform die eigene Anwendung laufen soll, muss sich +aber nicht mehr um das "wie" der Bereitstellung kümmern. Auch Aspekte wie +Storage oder Netzwerk sind abstrahiert und können über APIs angesprochen werden. + +Häufig werden darüber hinaus ergänzende Dienste wie Datenbanken oder Message +Queues, die für die Anwendungsentwicklung unerlässlich sind, als Service +bereitgestellt. Auch PaaS-Angebote lassen sich über APIs ansteuern, und auch +hier erfolgt die Abrechnung On-Demand und als Pay-per-Use. + +Einer der bekanntesten Anbieter in diesem Bereich ist Heroku, es gibt aber wie +bei IaaS auch noch zahlreiche weitere Anbieter. Da PaaS auf IaaS basiert, sind +häufig die Anbieter von IaaS auch im PaaS-Markt aktiv, beispielsweise Amazon mit +AWS Elastic Beanstalk. Damit Anwendungen mit PaaS zusammenpassen, müssen sie +allerdings einige Aspekte erfüllen, beispielsweise sollten die [Regeln der 12 +Factor Apps](https://www.youtube.com/watch?v=UBh8Rp2secQ) berücksichtigt werden. + +Youtube + +**Software as a Service (SaaS)** + +Das dritte Servicemodell, Software as a Service (SaaS), beschreibt schließlich +die Bereitstellung vollständiger Anwendungen über die Cloud. Als UI wird häufig +der Webbrowser genutzt, in nahezu jedem Fall gibt es auch bei SaaS wiederum +APIs, über die sich die Anwendungen anbinden und integrieren lassen. Typische +Beispiele für Cloud-Software sind unter anderem Office 365, Slack, Dropbox oder +auch GitHub. + +Analog zu IaaS und PaaS wird auch bei SaaS die Vermietung als Geschäftsmodell +angestrebt: Software wird also nicht mehr gekauft, sondern im Abonnement +erworben, wobei in aller Regel pro Anwenderin beziehungsweise pro Anwender +monatlich abgerechnet wird. + +Das bietet eine ganze Reihe von Vorteilen, beispielsweise Einfachheit und +Flexibilität. Aufwendige und fehleranfällige Vorgänge wie Installation, +Konfiguration, das Einspielen von Updates und Sicherheitspatches, oder die +Skalierbarkeit entfallen, beziehungsweise werden vollständig in die Hände des +Anbieters gelegt. Das ermöglicht es, sich stärker auf das eigene Kerngeschäft zu +konzentrieren. + +SaaS hat aber auch Nachteile, allen voran die Abhängigkeit von einem Anbieter +(Vendor-Lock-In) und die in aller Regel geringe Anpassbarkeit der Software an +die eigenen Bedürfnisse. Um den Vendor-Lock-In zu vermeiden, sind die Verwendung +offener Standards und offener Formate essenziell wichtig. Außerdem ist bei SaaS +mehr noch als bei IaaS und PaaS der Datenschutz zu beachten, es gilt also, sich +mit Themen wie der DSGVO besonders gründlich auseinanderzusetzen. + +**Function as a Service (FaaS)** + +Bei Function as a Service (FaaS) wird nochmals eine Abstraktionsschicht +eingezogen. Die Infrastruktur, das Betriebssystem, die Laufzeitumgebung und +sogar die eigentliche Anwendung sind bereits gegeben – es gilt, nur noch die +Geschäftslogik zu ergänzen, quasi als eine Art "Plug-in". Das erfolgt in Form +von einzelnen Funktionen, die in einen fertigen Anwendungsrahmen eingebunden +werden, beispielsweise als Route in einen vorgefertigten Webserver. + +Als Entwicklerin oder Entwickler muss man sich dann nur noch mit dem Schreiben +ebendieser Route beziehungsweise der Funktion befassen, alles andere wird vom +Cloud-Anbieter bereitgestellt und kann über APIs angesprochen werden. Da diese +Funktionen üblicherweise zustandslos sind, lassen sie sich leicht skalieren. + +Außerdem können sie sehr kostengünstig betrieben werden, da kein dedizierter +Server vorgehalten werden muss: Die Funktion wird nach Aufrufen abgerechnet. +Finden keine Aufrufe statt, fallen auch keine Kosten an. Das macht FaaS für +viele Szenarien zu einer günstigen Alternative, zudem lassen sich die Funktionen +auf Grund ihrer einfachen Struktur auch leicht warten und aktualisieren. + +Weil man mit dem eigentlichen Server in diesem Fall nicht mehr in Berührung +kommt, hat sich für FaaS auch der Begriff Serverless eingebürgert, was aber +letzten Endes falsch ist, da dieser Begriff impliziert, dass es keinen Server +mehr gäbe – dem ist aber selbstverständlich nicht so. + +Verwendet wird FaaS häufig, um Anwendungen miteinander zu verbinden, oder als +einfaches Backend für Single-Page-Anwendungen (SPA). Bekannte Angebote hierfür +sind beispielsweise AWS Lambda von Amazon und Azure Functions von Microsoft. Der +größte Nachteil ist auch hier wieder der Vendor-Lock-In, was nochmals die +Relevanz von offenen Formaten und offenen Standards unterstreicht. + +Youtube + +**X as a Service (XaaS)** + +Selbstverständlich ist über diese vier vom NIST definierten Servicemodelle noch +mehr möglich. Dementsprechend haben sich zahlreiche Angebote entwickelt, die +sich nicht klar einer der vier zuvor genannten Varianten zuordnen lassen. Dabei +handelt es sich häufig um Aspekte, die orthogonal zur eigentlichen +Anwendungsentwicklung stehen und somit Cross-Cutting-Concerns darstellen, +beispielsweise das Bereitstellen von Datenbanken (DBaaS) oder Message-Queues +(MQaaS). + +Doch neben produktbezogenen Angeboten gibt es auch servicebasierte Angebote, die +einen bestimmten Funktionsbereich übernehmen, zum Beispiel Identity as a +Service, Logging as a Service oder Content as a Service. Die Grenze zu SaaS ist +dabei allerdings fließend. Eine Hilfe zur Einordnung könnte sein, dass sich +diese Angebote eher an Entwicklerinnen und Entwickler richten, wohingegen +"echtes" SaaS eher auf nicht in der Entwicklung tätige Anwenderinnen und +Anwender abzielt. + +**Fazit** + +Die Cloud hat die Art, wie Software entwickelt und vor allem bereitgestellt +wird, in den vergangenen zehn Jahren gravierend verändert. Trotzdem hat sie die +lokale Ausführung von Software nicht überflüssig gemacht. Es ist daher kein +"entweder oder", sondern vielmehr ein "sowohl als auch". Es ist also ratsam, die +Cloud als Erweiterung des bisherigen Werkzeugkastens zu sehen und nicht als +Ersatz. + +Dabei ist allerdings zu beachten, dass – wie mehrfach betont – offene Formate +und offene Standards essenziell sind, um einen Vendor-Lock-In zu vermeiden. Nur +wer unabhängig vom jeweiligen Cloud-Anbieter denkt und Lösungen entwickelt, die +unabhängig von einem konkreten Angebot funktionieren, behält sich langfristig +die Möglichkeit bei, zwischen verschiedenen Anbietern wechseln zu können diff --git a/KN00/x_res/~$rvicemodelle.md b/KN00/x_res/~$rvicemodelle.md new file mode 100644 index 0000000..55247d1 Binary files /dev/null and b/KN00/x_res/~$rvicemodelle.md differ