Im Modul «Cloud Softwareprogrammierung» des BSc Wirtschaftsinformatik an der OST Ostschweizer Fachhochschule setzen unsere Studierenden der Vertiefungsrichtung «Business Software Development» die folgende Architekturvision mit einem Datenobjekt praktisch um:

Details zu den Begriffen und Konzepten können Sie in meinem Lehrbuch «Architekturen Verteilter Softwarearchitekturen» nachlesen.

Visual Studio und Azure DevOps

Die Softwareentwicklung erfolgt mit Visual Studio, welche die Programmierung, das lokale Testen und das Deployment unterstützt. Azure DevOps Repos ermöglicht die zentrale Verwaltung aller Sourcen.

Blazor Web App

Die Microsoft Blazor-Technologie erlaubt es mit HTML/CSS und C# als Programmiersprache eine Web App zu entwickeln. Dabei lässt sich die Web App auf dem Client als PWA (Progressive Web App) installieren. Die Authentisierung und Autorisierung erfolgt via Azure Active Directory.

SOA (Service Oriented Architecture) mittels Web API

Mit ASP.NET C# lassen sich RESTful-Services entwickeln, welche über verschiedene Endpoints die gesamte Funktionalität einer Applikation als Web API anbietet. Postman bietet die Möglichkeit, den Service mittels OpenAPI zu entwerfen und nach der Programmierung manuell oder automatisiert zu testen.

Event-Driven Architecture

Bei der Event-Driven Architecture werden die programmierten Algorithmen in den einzelnen Software-Komponenten durch Ereignisse ausgelöst. In diesem Beispiel erfolgt dies durch zwei Bausteine:

  • Azure Service Bus als Message Broker
  • Azure Functions, welche auf bestimmte Ereignisse hin programmiert sind

DaaS (Database as a Service)

Das Web API trennt die Bilddaten von den strukturierten Daten:

  • Die NoSQL Azure CosmosDB ist für das Speichern von schemalosen Daten geeignet.
  • Die Azure SQL Server DB eignet sich für das Speichern von strukturierten Daten.

CQRS (Command and Query Responsibility Segregation) mit Event-Sourcing

Das Web API trennt die Persistenz-Aufrufe:

  • DB-verändernde Befehle (Commands) wie hinzufügen, ändern und löschen von Datenobjekten
  • Abfragen von Datenobjekten

Das Web API sendet die Befehle und dazugehörigen Daten als Message in ein JSON-Objekt verpackt an die entsprechende Queue des Azure Service Bus. Über die sessionbehaftete DBResponse-Queue erhält das Web API die jeweilige Antwort.

FaaS (Function as a Service)

Mit Azure Functions lassen sich Event-gesteuerte Funktionen in C# entwickeln.

  • Mit einem CosmosDB-Trigger erstellt die Funktion bei jeder DB-Änderung ein Vorschaubild und speichert dieses in der CosmosDB.
  • Mit dem Azure Service Bus-Trigger nehmen die entsprechenden Funktionen die Command- bzw. Query-Anweisungen entgegen und verarbeiten diese. Der Zugriff auf die SQL-DB erfolgt über das Entity Framework, welches als ORM (Objekt Relational Mapper) fungiert.

Deployment in die Azure Cloud

Die Softwareengineers containerisieren die einzelnen Komponenten und testen diese lokal mit Docker. Das Deployment automatisieren sie via Azure DevOps Pipeline. In Azure sind die containerisierten Komponenten mittels Container Registry verwaltet. Alle installierten Komponenten laufen somit in der Azure Cloud als serverless Microservices.


0 Kommentare

Schreibe einen Kommentar

Avatar-Platzhalter

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert