Serverless Computing wie Function-as-a-Service (FaaS) bietet neue Möglichkeiten in der Cloud. In diesem Blogbeitrag gebe ich einen kurze Überblick für Cloudeinsteiger zu FaaS, dessen Mehrwert sowie den dazugehörigen Limitierungen.
Was ist FaaS?
Mit Function-as-a-Service (FaaS) bieten die Cloudprovider eine Möglichkeit des Serverless Computing an. Anders als bei den verbreiteten Cloud Angeboten wie Iaas, PaaS oder CaaS übernehmen die Cloudprovider bei FaaS die komplette Bereitstellung und Administration der notwendigen Serverinfrastruktur. Oder anders ausgedrückt, der Entwickler kann sich rein auf seinen Code fokussieren und muss sich nicht um die Installation oder die Serverkonfiguration kümmern. Eine FaaS Lösung ist eventgetrieben, wodurch nur Kosten entstehen wenn die entsprechende Funktion genutzt wird. Von Natur aus sind FaaS skalierbar. Egal ob eine Funktion fünf oder tausendmal in der Minute Aufgerufen wird, der Cloudprovider stellt die notwendige Infrastruktur zur Verfügung. Während mittels Software-as-a-Service (SaaS) ganze Softwarelösungen bezogen werden können ist FaaS darauf ausgerichtet kleine serverlose Funktionen bereitzustellen. In Kombination mit weiteren serverlosen Angeboten wie Datenbank- und Storage-Lösungen lassen sich mit FaaS ganze serverlose Architekturen designen und mit minimalem Aufwand betreiben.
Anbei die FaaS Angebote der wohl grössten drei Cloudprovider:
Mehrwert von FaaS
Durch FaaS lassen sich operativen Kosten reduzieren. Die Funktion wir nur bei Bedarf geladen, wodurch auch nur Kosten anfallen, wenn die Funktion aufgerufen wird und auch nur für die Zeit die sie benötigt wird. Da die Infrastruktur durch den Cloudprovider automatisch provisioniert und auf den benötigten Level hochskaliert wird, können Code Änderungen und neue Funktionen schnell bereitgestellt werden (Time to market). Mittels der automatischen Skalierung muss keine HA-Infrastruktur vorgehalten werden. Der Cloudprovider stellt die geforderte Rechenleistung bei Bedarf zur Verfügung. Dank FaaS lassen sich operative Aufgaben einfacher Verwaltung. Die Paketierung und ein Deployment entfällt, da der Code während dem Betrieb aktualisiert werden kann. Die Cloudprovider stellen dafür entsprechende Schnittstellen und Tools zur Verfügung.
Limitierungen von FaaS
Die fehlende Infrastruktur Kontrolle verhindert es Konfigurationsoptimierungen für den Code vorzunehmen, entsprechend muss der Code robust geschrieben werden. Durch die Auswahl eines Cloudproviders entsteht die Gefahr eines Vendor lock-in. Jeder FaaS Anbieter hat seine Eigenheiten, welche im Code und dem Deployment berücksichtigt werden muss. Ein Providerwechsel bedeutet, je nach Umgebung, viel Aufwand. FaaS ist ausgelegt auf schnelle, skalierbare, Event getriggerte Funktionen. Log-running-applications werden nicht unterstützt. Je nach Cloudprovider und Serviceoptionen ist die maximale Ausführungszeit pro Funktionsaufruf eingeschränkt (~5 Minuten). Auch muss der Kaltstart der Funktion in der gesamt Lösung berücksichtigt werden. Mit dem Kaltstart ist die Zeit gemeint, in welcher der Cloudprovider für die Bereitstellung der Funktion benötigt. Wird eine Funktion nur selten aufgerufen, so muss diese erst bereitgestellt werden.
Fazit
Mit FaaS lassen sich Funktionen serverlos und mit wenig Aufwand bereitstellen und weiterentwickeln. Dies kann helfen die Kosten und den Betriebsaufwand gering zu halten. Bei Neuentwicklungen gilt es FaaS unbedingt zu berücksichtigen. Gerade in Kombination mit weiteren serverlosen Lösungen entsteht hier ein grosser Synergienutzen. Bei einer Migration von einer bestehenden Lösung gilt es genau darauf zu achten, dass die Limitierungen nicht zu Problemen werden. Dies trifft jedoch für alle Cloud-Migrationen zu.