Achieving Enterprise Integration Patterns with Windows Azure Service Bus #TEE12

2012-06-29 | Toni Pohl

Clemens Vasters (@clemensv) von Microsoft hielt eigentlich drei Sessions mit dem zusammenfassenden Titel Achieving Enterprise Integration Patterns with Windows Azure Service Busund liefert Informationen und Erfahrungen über moderne Service-Architektur.

IMG_3447

Gleich zu Beginn eine Buchempfehlung: “Enterprise Integration patterns” von Gregor Hohpe und Bobby Woolf.

IMG_3450

ServiceBus ist ein mächtiges Messagesystem (es gab dazu eine eigene Session auf TechEd).

IMG_3451

Clemens erzählt darüber, wie wichtig Skalierung für Apps ist und hat einen sehr passenden Spruch hierzu:
“Enterprise Speeds up because the rest of the world speeds up constantly.” – Gefällt mir sehr gut.

IMG_3453IMG_3454

Der Informationsfluss in LOB Apps muss sichergestellt sein, beispielsweise wenn ein Unternehmen den Preis für ein bestimmtes Produkt in einer bestimmten Region ändert: Die neuen Informationen werden in Queues gestellt und dann per Rules umgesetzt. Das kann beispielsweise in einen BLOB Store erfolgen, wodurch weitere Schritte ausgelöst werden (siehe SaaS Bild). “On top” sitzen Services in Windows Azure, welche per Relay Informationen erhalten und weiterverarbeiten.

Clemens zeigt in Teil zwei eine Lösung mit eigener Hardware, einen Prototyp einer Klimaanlagensteuerung.

IMG_3462

Das Ziel ist, diese Systeme remote zu steuern, beispielsweise: Ein GPS-Empfänger im Auto informiert ein System darüber, dass beim Heimfahren im Haus die Klimaanlage eingeschalten werden soll. (Soeben ist im Süden der USA eine Hitzewelle mit über 40°C – Clemens ist froh, dass er in Seattle lebt. Zwinkerndes Smiley).

Das Devices-Szenario ist aber auch vor allem für Energielieferanten interessant: Wenn zehntausende Haushalte viel Strom für Aircondition verbrauchen würden, könnte die Stromzufuhr zusammenbrechen. Daher ist es für Energielieferanten wichtig, aktuelle Informationen zu erhalten und Geräte remote steuern zu können.

IMG_3465

“Scale Units” sind ein sehr wichtiges Konzept: “make everything predictiable”: Wenn man 10.000 Units steuern kann, kann man genauso 10 Millionen Units steuern! Beispiel: Facebook ist einfach zu partitionieren. Eine neue Nachricht wird an alle subscribed Users gepostet. Jede Unit muss in sich abgeschlossen sein. Das System muss skalieren.

Informationen (raw data) gelangen in einen Event Store. Der Energielieferant ist nicht an den Rohdaten interessiert, sondern an aggregierten Daten: Wie beeinflusst die Außentemperatur den Stromverbrauch (Aircondition) der Konsumenten – beispielsweise jede Minute. Das sind zehntausende Informationen (Events). HTTPS ist “heavy” (obwohl die .NET Microframeworks es unterstützen würden), daher wird hier ein anderes Protokoll verwendet: HTTP (mit einigen Besonderheiten, um es lightweigth zu machen: mit Präfix “P-“ und ohne entities; keine Serialisierung, kein JSON,… siehe Demo-code Hinweis unten)

Subscriptions werden automatisch in ein anderes Thema geliefert. So kann ein Tree eines Themas aufgebaut werden (hier ein Themamit drei Subscriptions):

IMG_3468 IMG_3469

Provisioning ist Voraussetzung für die Kommunikation. Jedes Device besitzt eindeutige IDs (mit zusätzlichem Hashcode damit etwas verscrambelt). Diese reporten an den Partition Allocator – und werden einer Partition zugewiesen. Auf einer Scale Unit liegen beispielsweise 10.000 Devices. von dort werden die Events weitergeleitet.

IMG_3471

Das ServiceBus Device-Demo (siehe Bild) ist ab Sonntag, 1. Juli, im MSDN Magazine downzuladen.

Im letzten Part zeigt Clemens Beispiele für Publishing Subscriptions.

IMG_3479 image

Das Beispiel zeigt Subscriptions und Filter (Audit rechts erhält alle Nachrichten, die Fenster darunter nur gefilterte Nachrichten). Message Sizes in ServiceBus sind limitiert (dzt. 250KB). Daher müssen größere Messages aufgeteilt werden (Splitter; dafür gibt es Session Support um die Nachrichten in den Receivers wieder zusammen zu führen. Messages werden mit SessionIDs gespeichert und verarbeitet). Clemens demonstriert dies in einem eigenen SessionMessagesSample.

ServiceBus bietet ein solides und skalierbares Messagesystem. Bald wird es Workflows in ServiceBus geben. Beispielsweise wird die nächste Version von SharePoint auf einem neuen Workflow Hosting Service in ServiceBus basieren. Architektur macht Spaß!



Categories: Azure, Cloud, Developer, Event, Microsoft

Source: https://blog.atwork.at/post/Achieving-Enterprise-Integration-Patterns-with-Windows-Azure-Service-Bus-TEE12