Im Rahmen eines Microsoft Cloud Native Days wurde die Gegenwart und Zukunft der Azure-Cloud-Entwicklung mit Microservices durch Azure-Spezialisten nähergebracht. Es wurden Technologien diskutiert, welche Entwickler nutzen können, um Cloud-Applikationen der Zukunft zu entwickeln und die Herausforderungen von Morgen zu bewältigen. Im Nachgang habe ich in diesem Blogpost die aus meiner Sicht relevantesten Themen zusammengefasst.
Herausforderungen bei der Entwicklung von Microservices
Microservices sind eine leistungsstarke Methode zur Softwarearchitektur. Sie ermöglichen eine klare Trennung von Verantwortlichkeiten, Modularität, Skalierbarkeit und einfache Wartung. Die Entwicklung und Bereitstellung können unabhängig voneinander erfolgen, was den Einsatz verschiedener Technologien und Frameworks (pro Microservice) ermöglicht. Wenn eine Komponente ausfällt, ist das gesamte Programm nicht unbrauchbar. Das sind bedeutende und wertvolle Vorteile. Über Microservices haben wir übrigens schon 2018 in der Cloud-Native-Serie und 2020 im Kafka-Blog berichtet.
Allerdings bringen Microservices auch ihre eigenen Herausforderungen mit sich. Wie können wir die Aufrufe und Ereignisse zwischen den Services beobachten, um Probleme in der Produktion zu diagnostizieren? Wie entdecken wir andere Services und rufen deren Methoden und Funktionen auf? Wie sichern wir die Kommunikation zwischen den Services?
Um diese und andere Herausforderungen anzugehen, stehen heute verschiedene Tools für Entwickler zur Verfügung. Dapr ist eine portable, ereignisgesteuerte Laufzeitumgebung zur Erstellung verteilter Anwendungen über Cloud und Edge. Der Dapr Sidecar abstrahiert die Komplexität der Servicekommunikation und bietet eine konsistente API-Schnittstelle Dies ist besonders hilfreich für Pub/Sub-, Request/Response- und ereignisgesteuerte Workflows. Darüber hinaus bietet Dapr einen lokalen Entwicklermodus, der das Verhalten der Dapr-Runtime emuliert und Testing und Debugging mit Dapr-Funktionalitäten ermöglicht. Entwickler können die Interaktionen mit anderen Services und Building Blocks simulieren. Auch die Überwachung ist mithilfe des Dapr Sidecars mithilfe des OpenTelemetry Collectors und Azure Application Insights möglich. Für mehr Informationen empfehle ich einen Blick auf die offizielle Darp Dokumentation: https://docs.dapr.io/concepts/overview/
Entwicklung datenintensiver Anwendungen
Im Zeitalter der Information sind Daten in grosser Menge vorhanden und werden immer genauer und detaillierter. Dies birgt Herausforderungen und Chancen für Unternehmen und Entwickler. Wie können wir weiterhin agile oder noch agilere Software entwickeln und gleichzeitig die Sicherheit und Zuverlässigkeit erhöhen? Hier kommt Azure Cosmos DB ins Spiel.
Azure Cosmos DB ist ein Datenbank-Service, der NoSQL und relationale Datenbanken offeriert. Es offeriert , je nach individuellem Bedarf, mit minimalem Aufwand. Es bietet fünf klar definierte Konsistenzmodelle mit expliziten Abwägungen. Diese Modelle ermöglichen es Entwicklern, so viel Geschwindigkeit und Synchronisierung wie nötig zu erreichen, ohne mehr zu opfern als erforderlich.
Eine der grossen Herausforderungen besteht in der Echtzeit-Personalisierung. Echtzeit-Personalisierung bedeutet, dass Inhalte, Produkte oder Dienstleistung in Echtzeit, also praktisch unmittelbar an individuelle Nutzer angepasst werden. Wenn ein Nutzer beispielsweise auf einer Videoplattform runterscrollt und auf ein Video klickt, dann können dem Nutzer anschliessend gleich angepasste weitere Videos basierend auf seinen vorherigen Vorlieben vorgeschlagen werden. Wenn ein Nutzer also heute vorzugsweise Coding-Videos schaut, dann können ihm als nächstes gleich noch weitere Coding Videos vorgeschlagen werden. Gestern bevorzugte derselbe Nutzer aber Katzenvideos. Entsprechend wurden ihm in Echtzeit weitere Katzenvideos vorgeschlagen. Echtzeit-Personalisierung hat aber auch viele andere Anwendungsfälle wie Online-Shopping, Game-Plattformen wie Steam, in Social Media, Reiseziele oder Kundensupport. Mit Hilfe von Cosmos DB und Azure Machine Learning lässt sich eine Empfehlungsengine mühelos erstellen. Logic Apps können Kunden Angebote oder Aktionen in Echtzeit vorschlagen, während Bot Services eine sofortige Interaktion mit Chatbots ermöglichen, um erste Anfragen zu bearbeiten. Durch die Messung der Reaktionen der Kunden auf Angebote und Aktionen können wertvolle Erkenntnisse gewonnen werden.
Entwicklung (wirklich) intelligenter Anwendungen
Künstliche Intelligenz (KI) steht insbesondere in diesem Jahr im Fokus. Grosse Sprachmodelle (Large Language Models, LLM) und Transformer haben die Möglichkeiten von Sprach- und Chatbots revolutioniert und eine Welle von wirklich nützlichen KI-Anwendungen ausgelöst. Dabei haben wir erst an der Oberfläche des Potenzials dieser schnell voranschreitenden Technologie gekratzt.
Diverse Firmen nutzen bereits einige dieser Möglichkeiten, und diejenigen, die es noch nicht tun, werden es bald wollen. Typische Szenarien sind Knowledge Mining, Dokumentenverarbeitung, Sprachübersetzung, Sprachtranskription und -analyse. Entwickler können diese Kundenanforderungen mithilfe von Azure AI erfüllen, ohne eigene Modelle erstellen zu müssen. Diese Modelle sind nicht statisch festgelegt. Entwickler können die Modelle individuell anpassen, um perfekt zu passen. Dazu gehören auch OpenAI-Dienste wie GPT, Codex und DALL-E.
Die KI-Dienste können problemlos in Azure Functions orchestriert oder über eine REST-API konsumiert werden. Im Beispiel von FAQs auf einer Website kann stattdessen ein QnA-Bot (Question and Answer Bot) auf viel mehr dynamisch gestellte Fragen eines Organisationsmitglieds oder eines Studenten antworten. Da der QnA-Bot auf einer grossen Menge von selektierten Daten trainiert werden kann, kann somit der Aufwand zur Beantwortung von Fragen durch Mitarbeiter um ein Vielfaches verkleinert werden. Organisationsmitglieder, Studenten oder Kunden einer Firma müssen dadurch auch keine Antwortwartezeiten für ihre Fragen in Kauf nehmen.
Auch etwas für deine (Leuchter)-Software?
Gerne sind wir für dich da, wenn Du weitere Informationen zu Cloud Native, Microservices, Big Data, KI oder anderen Technologien wünschst oder dir die Frage stellst, inwiefern diese Techniken in eurer Leuchter-Software Vorteile bringen könnten. Kontaktieren Sie uns ungeniert!