Dieses Jahr habe ich am European Collaboration & Cloud Summit 2021 in Düsseldorf teilgenommen. Geplant war die Konferenz für 2020 und initial auch nur im Rahmen des Collaboration Summit. Aufgrund von Corona und etlichen terminlichen Verschiebungen wurde sie nun in Präsenz abgehalten. Als kleinen Bonus hierzu wurde der Cloud Summit ebenfalls gleichzeitig ausgetragen. Hierdurch haben sich einige interessante Einblicke ergeben.
Auf die aus meiner Sicht interessantesten Vorträge gehe ich in diesem Blog-Beitrag ein, teile meine Eindrücke und Key-Take-Aways mit euch.
Überblick
Der European Collaboration Summit hat sich in den letzten Jahren immer weiterentwickelt und bietet aufgrund der prominent besetzten Speaker eine attraktive Konferenz für die Besucher. So ist die Konferenz primär auf Microsoft ausgerichtet und auch durch entsprechende Key Account Manager vertreten. Auch einige Microsoft-MVPs sind hier als Speaker unterwegs. Dieses Jahr hat sich allerdings auch Google angemeldet und ist mit einigen Keynotes und Speakern vertreten. Das erweitert durchaus die Sicht auf die Cloud-Technologien und gibt auch nochmal die Möglichkeit, sich in Bereiche einzufinden, die nicht zum Tagesgeschäft des Entwicklers aus dem Microsoft-Umfeld gehört.
Exploring Flow Architecutres
Die Keynote von Clemens Vasters (Microsoft, Principal Architect, Messaging Services and Standards) drehte sich um die grundsätzlichen Konzepte des Messagings. Darin wurden nicht nur unterschiedliche Einblicke in umgesetzte Projekte und den damit verbunden Architekturen gegeben, sondern auch auf die Grundsätze des Eventings eingegangen. So beschrieb Clemens Vasters, dass bei der Verwendung von Messaging-Systemen zunächst betrachtet werden muss, wie die Daten erfasst werden und was diese Daten ausmacht. Erst im weiteren Verlauf werden die Daten in den Kontext von Zeit gesetzt und für eine weitere Verarbeitung zur Verfügung gestellt.
Die erwähnten Messaging Systeme, welche z.B. Azure anbietet, sollte man in diesem Zuge auch nicht exklusiv betrachten, sondern als Ergänzung zueinander, da ein Event Grid beispielsweise andere Funktionalitäten bereitstellt, als ein Service Bus.
Der aus meiner Sicht interessanteste Aspekt der Keynote war die Erwähnung des sogenannten CloudEvents. Hierbei geht es um die Spezifikation von Events in der Cloud – unabhängig vom Anbieter der Cloud. Das bedeutet durch diesen Standard können Gemeinsamkeiten der Events gefunden und gesetzt werden, um so eine Verwendung von Events über die Softwareherstellergrenzen hinweg zu bieten. Microsoft hat hierbei große Anteile bei der Ausarbeitung der Spezifikation gehabt.
Testing (Feature Flags)
Edin Kapic beschrieb in seiner Keynote, wie man in einer ASP.NET Core App neue Features testen kann. Im Prinzip kann man sich hierbei eine Feature-Entwicklung mit einem if-Statement vorstellen. Dabei wird gesteuert, ob ein Benutzer ein bestimmtes neues Feature nutzen kann und somit beispielsweise einzelne Komponenten der Anwendung mit neuen Features ausgeliefert werden. Durch entsprechendes Auswerten von Logs und u.Ä. kann man somit z.B. ein klassisches A-B-Testing durchführen und die Features dann für alle Nutzer ausrollen.
Dabei kann ein Framework unterstützen, um zum einen die Entwicklung zu vereinfachen und zum anderen können hierdurch noch weitere Funktionalitäten genutzt werden. So kann z.B. auch definiert werden, wie viel Prozent der Benutzer bereits ein neues Feature ausgeliefert bekommen. Bestimmte Benutzergruppen bzw. Benutzer können auch die neuen Features zuerst nutzen.
Bei der Verteilung neuer Features sollten unterschiedliche Deployment-Rings berücksichtigt werden. So sollte auf dem Canary-Ring bspw. nur für freiwillige Nutzer Features ausgerollt werden oder z.B. auch Entwickler.
Desto näher man sich demnach Richtung produktivem Einsatz bewegt, desto weniger neue Features sind in der Regel aktiviert, da hier die Auswirkung eines fehlerhaften Features am stärksten wäre. In Summe erhält man durch Feature Flags in ASP.NET Core App ein Framework, um diese teilweise auch konfigurativ zu aktiveren zu können. Diese kann man dann auch nach dem Deployment dynamisch in Azure aktivieren und deaktivieren.
Durable Functions
Zum Thema Azure Functions gab es auf dem Collab- und CloudSummit gleich mehrere Keynotes unterschiedlicher Speaker. Interessant waren für mich die Keynotes zu Durable Functions. Meistens ging es um die Grundsätze von Durable Functions und die unterschiedlichen Anwendungsmuster.
Der Hauptunterschied zu der klassischen Azure Function ist die Auftrennung der Verarbeitungslogik. Hierbei besteht nach wie vor eine Function, die durch einen HTTP-Call gestartet werden kann. Diese Function wiederum startet eine Orchestrator-Function. Die Implementierung darf nur deterministisch sein, da die Orchestrator-Function eine oder mehrere Activity-Functions ausführt und die Ergebnisse dieser zusammenführt und nach dem erfolgreichen Beendigen der Aufrufe zurückgibt. Der initiale Aufruf auf die Start-Function der Durable-Function ist somit asynchron. Die Zustände des jeweiligen Runs werden im entsprechenden Storage-Account der Azure-Function-Ressource gehalten. Hierüber können die Activity-Functions auch unterschiedliche Status austauschen.
Ein Anwendungsmuster kann z.B. die Verwendung der Funktionsverkettung sein. Das bedeutet, man führt eine Activity-Function aus, wartet auf das Ergebnis und übergibt dieses an die nächste Activity-Function.
Beispielcode der Microsoft-Docs-Seite:
[FunctionName("Chaining")]
publicstaticasyncTask<object> Run(
[OrchestrationTrigger] IDurableOrchestrationContext context){
try{
varx = awaitcontext.CallActivityAsync<object>("F1", null);
vary = awaitcontext.CallActivityAsync<object>("F2", x);
varz = awaitcontext.CallActivityAsync<object>("F3", y);
returnawaitcontext.CallActivityAsync<object>("F4", z);
}
catch (Exception)
{
// Error handling or compensation goes here.}
}</object></object></object></object></object>
Durable Functions bieten somit Lösungen u.a. für langläufige Funktionsaufrufe, welche für gewöhnlich durch einen HTTP-Timeout beschränkt werden.
Multi Cloud mit Google Anthos
Wie bereits erwähnt, waren neben zahlreichen Microsoft-Vertretern auch einige wenige Google-Mitarbeitende vor Ort, wenn auch stark unterrepräsentiert. Dabei waren die Keynotes der Speaker nicht minder interessant. So hat beispielsweise Ted Schönbeck (Head of Cloud Technology – Google Cloud Sweden) einen Einblick in Googles Lösungsidee für eine Multicloud-Strategie gegeben.
Google verfolgt hierbei den Ansatz die Anwendungen mithilfe von Kubernetes und dem plattformunabhängigen Service Mesh Istio und Knative zu verwalten und auszuführen. Ähnliche Konzepte bietet Microsoft auch in Azure. Google setzt hierbei allerdings auf ihr Produkt Anthos. Mit Anthos stellt man ein Management-Tool bereit, um seine Anwendungen auf einer Cloud seiner Wahl ausführen und managen zu können. Es spielt hierbei keine Rolle, ob die Anwendungen auf einem OnPrem-System, in der Azure und/oder in der Google Cloud gehosted sind.
Mit dieser Lösung sollen bestehende Anwendungen weiterentwickelt, gewartet und ausgeführt werden. Googles Ansatz hierbei ist es, den Kunden unabhängig vom Einsatz der Laufzeitumgebung zu betreuen. Somit sind neben der Verwendung von Anthos bei einem einzelnen Cloud-Anbieter oder dem reinen OnPrem-Einsatz auch die Verwendung von mehreren Cloud-Umgebungen und/oder Teilen davon in einem OnPrem-Umfeld möglich. Somit stellt Anthos die Lösung von Google für eine Multi- oder auch Hybrid-Cloud-Lösung dar.
MS Teams, Yammer, Microsoft Viva etc.
Natürlich gab es auch Keynotes zu neuen Funktionen in MS Teams, SharePoint, OneDrive und Microsoft Viva. Viele dieser Features waren schon aus der Microsoft Ignite bekannt und wurden bereits ausgerollt (u.a. Antworten auf Nachrichten in Teams Desktop). Die Keynotes fokussierten sich hierbei oft auf das Thema der User-Adaption in Unternehmen. Weitere Features welche erwähnenswert waren, sind u.a. Shared Channels, Verfügbarkeit von Microsoft Viva und SharePoint Syntex.
Fazit
Der European Collaboration und Cloud Summit hat einen sehr guten Überblick der aktuellen Entwicklung in den entsprechenden Bereichen gegeben. Mit den technischen Keynotes mit Live-Coding-Anteilen konnte man einen guten Einblick in die grundsätzliche Funktionsweise der Technologie erhalten. Allerdings war ein DeepDive in die Materie oft nicht möglich, aufgrund der knapp bemessenen Zeit für jede Session. Allerdings verwiesen die Speaker auf mögliche Fragerunden außerhalb der Session, so konnte man auch mit konkreten Problemstellungen in die Diskussion mit den Speakern gehen. Und das macht natürlich eine Konferenz in Präsenz attraktiv: der direkte Austausch mit den Speakern.
Interessant war aus meiner Sicht auch die Teilnahme von einigen Google-Vertretern, die auch einen anderen Blickwinkel auf einige Gesichtspunkte der Cloud-Technologien gegeben haben. Ich hoffe, dass dies in Zukunft zunehmen wird und man hierdurch nicht nur den reinen Microsoft-Fokus z.B. auf Azure erhält, sondern auch andere Technologien und Lösungsmöglichkeiten von Google oder aber auch AWS sehen kann. Für mich war es eine sehr interessante Konferenz, auf der ich bestimmt nicht zum letzten Mal war.