© vasabii/Shutterstock.com
Eine Lösung für bedarfsgerechte Cloud-Computing-Kapazitäten

Serverless-Code in der Cloud


Azure Functions ist das Serverless-Computing-Angebot von Microsoft Azure. Doch was genau ist Serverless Computing, und haben wir damit wirklich keine Server mehr? Diese Fragen soll dieser Artikel beantworten und erklären, wie und für was wir Azure Functions nutzen können.

Als Entwickler ist es meist unsere Hauptaufgabe, Geschäftslogiken zu implementieren. Tatsächlich verbringen wir einen großen Teil der Zeit damit, Probleme um die eigentliche Geschäftslogik herum zu lösen. Sei es das Handling von Datenbankverbindungen oder die Frage, wie wir am effektivsten eingehende Nachrichten bearbeiten oder unser Programm am stabilsten als Dienst betreiben können. Und wenn wir dann schon beim Betrieb sind: Wie skalieren wir eigentlich? Azure Functions ist das Serverless-Angebot, oft auch Function as a Service (FaaS) genannt, von Microsoft Azure. Im Gegensatz zu anderen Computing-Angeboten, wie zum Beispiel virtuellen Maschinen oder Azure App Service, beleuchtet Azure Functions nicht nur die Betriebsseite, sondern bietet auch ein alternatives Entwicklungsmodell.

Auch wenn bei Azure Functions Server im Hintergrund laufen, so kommt man mit diesen kaum bis gar nicht mehr in Kontakt. Azure Functions befindet sich also auf einer sehr hohen Abstraktionsebene, bei der wir uns weder um Hardware und Betriebssystem noch um die Skalierung kümmern müssen. Ziel ist es, kleinen Code, Functions genannt, hochzuladen und diesen einfach laufen zu lassen. Neben der einfachen und automatischen Ausführung und Skalierung ist ein weiterer großer Unterschied, dass Functions je nach genutztem Plan pro Aufruf/Aufrufdauer bezahlt werden. Dadurch ist man in der Lage, erhebliche Kosten einzusparen, da man nicht 24/7 für Ressourcen bezahlt, die nur einen Teil der Zeit genutzt werden.

Hostingoptionen

In Azure Functions gibt es für das Cloudhosting drei Optionen/Pläne (Tabelle 1) mit unterschiedlichen Leistungs- und Preismerkmalen. Beim Consumption-Plan wird jeder Function-Anwendung 1,5 Gigabyte RAM und ein vCore zur Verfügung gestellt. Die Ausführungszeit einer Function ist auf zehn Minuten limitiert. Wird diese Zeit überschritten, wird die Ausführung der Function abgebrochen. Im Consumption-Plan gibt es keine Skalierungsoptionen, da die Function-Anwendung automatisch nach Bedarf auf beliebig vielen Nodes/Servern horizontal skaliert wird. Der Preis wird nach Anzahl der Ausführungen sowie des genutzten RAM pro Ausführungsdauer errechnet. Dank eines Freikontingents und der günstigen Ausführungspreise sind Azure Functions mit einem Consumption-Plan oft günstiger als eine klassische Web-App/APIs. Der größte Nachteil des Consumption-Plans ist, dass die komplette Function-Anwendung herunterfährt, wenn sie eine gewisse Zeit nicht genutzt wird. Dadurch verzögert sich der nächste Aufruf einer Function, da die Anwendung erst wieder gestartet werden muss. Man nennt das Cold-Start-Problematik.

Beim Dedicated-Plan läuft die Function-App als Web-App in einem App-Service-Plan. Der verfügbare RAM und die vCores werden durch diesen bestimmt. Im Dedicated-Plan gibt es keine Ausführungszeitbegrenzung, und die Function-App wird bei Nichtnutzung nicht heruntergefahren, sofern die „Always On“-Einstellung in der Web-App aktiviert ist. Dafür verliert man allerdings die automatische Skalierung sowie das Pay-per-Use-Preismodell. Die Nutzung des Dedicated-Plans kann sinnvoll sein, wenn man bereits einen App-Service-Plan hat und die Function-Anwendung nicht skalieren muss.

Als dritte, neue und aktuell noch in Preview befindliche Option gibt es den Premium-Plan. Dieser ist eine Mischung aus Consumption- und Dedicated-Plan. Man hat hier die Auswahl a...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang