aktualisiert am 9. Juni 2026von Stefan Sørensen
Event Driven Architecture mit Azure Event Grid
Wie du eine skalierbare E-Commerce-Architektur mit Azure Event Grid und Azure Functions aufbaust.
AzureEvent GridEvent Driven ArchitectureAzure Functions
Sarah möchte eine skalierbare und eventgesteuerte Architektur für ein E-Commerce-System aufbauen, das mehrere Services integriert. Das Ziel ist ein flexibles, wartbares und gut skalierbares System, das in Echtzeit auf Bestellungen, Zahlungen und Lagerbestände reagieren kann.
Grundlagen
Schritt 1: Definition der Events und Microservices
Beispiele für Events:
- OrderPlaced
- PaymentProcessed
- InventoryUpdated
- OrderShipped
Typische Services:
- Order Service
- Payment Service
- Inventory Service
- Shipping Service
Schritt 2: Architektur-Setup mit Azure Services
- Azure Event Grid
- Azure Functions
- Azure Service Bus
- Azure Cosmos DB
- Azure Logic Apps
Schritt 3: EDA Workflow
Order Placement
- Order Service veröffentlicht OrderPlaced.
- Inventory Service verarbeitet das Event.
- InventoryUpdated wird veröffentlicht.
Payment Processing
- Payment Service verarbeitet OrderPlaced.
- PaymentProcessed oder PaymentFailed wird veröffentlicht.
Order Shipping
- Shipping Service verarbeitet PaymentProcessed.
- OrderShipped wird veröffentlicht.
Schritt 4: Überwachung und Skalierung
Azure Monitor und Application Insights überwachen die Lösung. Azure Functions skaliert automatisch.
Beispiel mit Azure Event Grid und Azure Functions
Voraussetzungen
- Azure-Konto
- Azure CLI
- Azure Functions Core Tools oder VS Code Erweiterung
Azure Event Grid Topic erstellen
RESOURCE_GROUP="sarah-ecommerce-rg"
LOCATION="westeurope"
EVENT_GRID_TOPIC_NAME="sarah-order-events-topic"
az group create --name "$RESOURCE_GROUP" --location "$LOCATION"
az eventgrid topic create --name "$EVENT_GRID_TOPIC_NAME" --resource-group "$RESOURCE_GROUP" --location "$LOCATION"
OrderPlacedFunction
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.EventGrid;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json.Linq;
public static class OrderPlacedFunction
{
[FunctionName("OrderPlacedFunction")]
public static void Run(
[EventGridTrigger] JObject eventGridEvent,
ILogger log)
{
log.LogInformation($"OrderPlaced event received: {eventGridEvent}");
}
}
PaymentProcessedFunction
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.EventGrid;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json.Linq;
public static class PaymentProcessedFunction
{
[FunctionName("PaymentProcessedFunction")]
public static void Run(
[EventGridTrigger] JObject eventGridEvent,
ILogger log)
{
log.LogInformation($"PaymentProcessed event received: {eventGridEvent}");
}
}
OrderShippedFunction
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.EventGrid;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json.Linq;
public static class OrderShippedFunction
{
[FunctionName("OrderShippedFunction")]
public static void Run(
[EventGridTrigger] JObject eventGridEvent,
ILogger log)
{
log.LogInformation($"OrderShipped event received: {eventGridEvent}");
}
}
Deployment
func azure functionapp publish order-placed-func
func azure functionapp publish payment-processed-func
func azure functionapp publish order-shipped-func
Event Grid Endpoint
https://<EVENT_GRID_TOPIC_NAME>.<region>-1.eventgrid.azure.net/api/events
Zugriffsschlüssel abrufen
az eventgrid topic key list --name "$EVENT_GRID_TOPIC_NAME" --resource-group "$RESOURCE_GROUP"
Event mit curl senden
curl -X POST -H "aeg-sas-key: <EVENT_GRID_TOPIC_KEY>" -H "Content-Type: application/json" -d '[{
"id": "1234",
"subject": "OrderPlaced",
"data": {
"OrderId": "1234"
},
"eventType": "OrderPlaced",
"eventTime": "2025-04-10T12:00:00Z",
"dataVersion": "1.0"
}]' https://<EVENT_GRID_TOPIC_NAME>.<region>-1.eventgrid.azure.net/api/events
Fazit
Azure Event Grid und Azure Functions ermöglichen eine skalierbare Event-Driven-Architecture, die Services entkoppelt und die Wartbarkeit erhöht.
Quellen

Stefan Sørensen
Cloud Enterprise Architect
