Azure Functions – Wrap-up

14. August 2019

Dieser Beitrag schließt meine Serie über Azure Functions und bringt noch einige Ergänzungen und Hinweise.

Ich denke, mit dieser Serie alle allgemein relevanten Themen aufgegriffen zu haben:

  1. Azure Functions – Eine kurze Einführung
  2. Azure Functions – Der App Service Plan
  3. Azure Functions – Die Skalierung begrenzen
  4. Azure Functions – Trigger und Bindings
  5. Azure Functions – Optionale Parameter und eigene Erweiterungen
  6. Azure Functions – Security

Der erste Beitrag gibt eine kurze Einführung sowie eine Liste von Best Practices aus der Praxis. Die nächsten beiden Beiträge widmen sich dem Betrieb und der Skalierung von Azure Functions. Die Beiträge 4 und 5 adressieren Schnittstellen einer Function, ihre Verbindung zur Laufzeitumgebung und zur Außenwelt. Der obligatorische Beitrag zu Security rundet das Thema Azure Functions ab.

Das einzige Thema, das ich bewusst unter den Tisch habe fallen lassen, ist Monitoring mit Application Insights. Azure Functions ist hier natürlich voll integriert; andererseits ist dies aber kein spezifisches Azure Functions-Thema, weshalb ich diese Auslassung für gerechtfertigt halte.

Der Vollständigkeit halber

Die Serie ist über einen längeren Zeitraum entstanden, und der Veröffentlichungsprozess fordert auch seinen Tribut; währenddessen ist die Weiterentwicklung von Azure Functions nicht stehengeblieben. So bleibt es nicht aus, dass einige Aussagen in meinen Beiträgen zwischenzeitlich von der Realität überholt wurden. Daher hier noch ein paar Ergänzungen und Korrekturen.

Premium plan

Der Premium plan ist ein neuer App Service Plan. Bislang hatte man die Wahl zwischen Consumption Plan mit dynamischer Skalierung der Instanzen einer Function App und dem “klassischen” App Service Plan, bei dem man die Anzahl der Instanzen vorgibt. Der neue Premium Plan ergänzt nun einen App Service Plan, bei dem man die minimale und die maximale Anzahl der Instanzen angeben kann. So kann man auch mit einem App Service Plan von den Skalierungsfähigkeiten von Azure Functions profitieren. “Vorgewärmte Instanzen” und VNET Integration sind weitere Neuerungen im Premium Plan.

Hier sind weiterführende Links zur Ankündigung und der Dokumentation.

Dependency Injection

Die zweite “große” Neuerung ist Dependency Injection, worauf ich im 5. Beitrag kurz eingegangen bin. Azure Functions unterstützt dies nun von Hause aus, was nicht nur weniger Aufwand für uns Entwickler bedeutet, sondern auch deutlich eingängiger gelöst ist, als dies bisher möglich war.

Im Kern beruht das natürlich darauf, dass eine Function nicht mehr durch eine statische Methode umgesetzt werden muss, sondern durch eine normale Instanz-Methode. Dependency Injection funktioniert dann wie üblich über Konstruktor-Parameter. Das Ganze basiert auf ASP.NET Core Dependency Injection.

Die Dokumentation zeigt dies recht anschaulich.

Sonstiges

Es gibt noch einige weitere Neuerungen, die auf der diesjährigen Build vorgestellt wurden, von Netzwerkthemen, über Azure Functions in Kubernetes (KEDA), bis DevOps-Integration.

Auf diese Neuerungen, sowie mehr Hintergründe zu den beiden angesprochen Themen, geht ein entsprechender Vortrag auf der Build ein. Ein Thema, das ich in meiner Serie nur kurz angeschnitten hatte, ist Durable Functions. Auch hier gibt es mit Version 2.0 einige Neuerungen. Ein Vortag beleuchtet das Thema insgesamt.

Und wem die Vorträge zu lang oder zu unhandlich sind: Ein Blog-Beitrag fasst das alles zusammen und bietet weiterführende Links.

Fazit zu Azure Functions

Das einfache und dadurch mächtige Programmiermodel, der kosteneffiziente Einsatz und die Skalierbarkeit machen Azure Functions – meiner Meinung nach – zum idealen Ansatz für jede Art von Hintergrundverarbeitung. Ob als Backend für Mobile Apps, um Last aus einer Web-App auszulagern, Datenimports im Hintergrund durchzuführen – Azure Functions machen eine gute Figur.

Natürlich hat das alles seine Grenzen oder kommt nicht schlüsselfertig – in meinen Beiträgen habe ich mich bemüht, gerade auf diese Dinge hinzuweisen. Deshalb lohnt sich eine detailliertere Auseinandersetzung mit dem Thema (wie bei jeder anderen Technologie auch). Ich hoffe, dass ich dies mit dieser Serie bieten konnte.

Nebenbei: Es sollte niemandem entgangen sein, dass ich bekennender Fan von Azure Functions bin. 😉