Datum
12.10.2009
Dieser Beitrag wurde verfasst von:
Meinen ersten Blogeintrag begann ich mit einem Crashkurs zu WebSphere MQ und schloss ich mit dem Fazit, dass ein Programm in Kombination mit einem Messagingsystem nahezu alle Anforderungen an eine moderne Filetransferlösung erfüllen könnte.
Eben diese Idee, nur zugegebenermaßen etwas früher, hatten auch einige IBM-Mitarbeiter. Das Programm, welches dabei entstand, nannten sie MQ FTE Agent um die enge Beziehung zu WebSphere MQ zu verdeutlichen.
Diese lässt sich mit den beiden zugegebenermaßen recht simplen Formeln erfassen:
WebSphere MQ FTE (Server-Version) = WebSphere MQ + MQ FTE Server Agent
WebSphere MQ FTE (Client-Version) = MQ FTE Client Agent
Alle WebSphere MQ FTE-Dateitransfers, werden über die WebSphere MQ
Messaginginfrastruktur abgewickelt. Der Agent ist eine javabasierte Anwendung, die in zwei Ausführungen verfügbar ist. Diese kann direkt über die Kommandozeile oder mittels einer grafischen Oberfläche angesteuert werden und dient der Einleitung von Dateitransfers. Eine indirekte Dateitransfereinleitung ist ebenfalls möglich. Hierzu platziert eine Fremdanwendung eine XML-Datei in einem spezifizierten XSD-Format in einer Queue, welche vom Agenten überwacht wird.
Alle Dateitransferinformationen werden an eine zentrale Log-Instanz versendet. Um Übersichtlichkeit und Flexibilität der WebSphere MQ FTE Dateitransfer-Lösung zu gewährleisten, existiert eine eindeutig definierte Basisarchitektur. Diese besteht aus drei Queue Manager-Typen.
- Coordination Queue Manager
- Command Queue Manager
- Agent Queue Manager
Coordination Queue Manager
Innerhalb einer MQ FTE Architektur gibt es genau einen Coordination Queue Manager. An diesen sendet jeder MQ FTE Client / Server Agent Informationen über die von ihm versandte Datei. Sie können mittels Publish-Subscribe prinzipiell jeder Anwendung zur Verfügung gestellt werden.
Command Queue Manager
Jedem MQ FTE Server / Client Agent wird genau ein Command Queue Manager zugeordnet. Dieser empfängt Dateitransferbefehle der WebSphere MQ FTE-Kommandozeilentools oder des GUI-Explorer Plugins für den MQ-Explorer und leitet sie an das WebSphere MQ-Netz weiter.
Agent Queue Manager
Jedem MQ FTE Server / Client Agent wird genau ein Agent Queue Manager zugeordnet. Der Agent ist ein Prozess, der bestimmte Queues überwacht, welche zuvor mittels eines MQSC-Skriptes auf dem Agent Queue Manager erstellt wurden.
MQ FTE Client Agent / MQ FTE Server Agent
Nun ist noch der Unterschied zwischen MQ FTE Server Agent und MQ FTE Client Agent zu klären. Bei der Server-Version befinden sich Agent und Agent Queue Manager auf demselben System. Der Agent ist im Bindungsmodus mit dem Queue Manager verbunden. Anders verhält es sich bei der Clientversion. Hier befindet sich der Agent Queue Manager auf einem entfernt liegendem System. Der lokale Agent ist über einen Serverchannel mit dem entfernt liegenden Queue Manager verbunden. Grundsätzlich ist immer der MQ FTE Server Agent zu bevorzugen, da dieser die Vorteile des MQ-Backbones besser ausnutzt.
Die MQ FTE Basisarchitektur garantiert besonders bei umfassenden Filetransferlösungen die Übersichtlichkeit. Zugleich können weniger umfassende Lösungen sehr schnell entwickelt werden.
Als Belege folgende zwei Beispiele:
Ein kleines Unternehmen möchte zwischen seiner Vertriebsstelle und seiner Produktionsstätte täglich Dateien verschicken (Auftragseingänge, Abholbescheinigungen, …).
Auf dem Computersystem Vertrieb wird lediglich ein MQ FTE Client Agent benötigt. Dieser trägt den Namen A_VERTRIEB und ist über den Serverchannel SVRCONN mit dem Queue Manager auf dem Computersystem Produktion verbunden.
Auf dem Computersystem Produktion wird eine MQ FTE Server Agent Installation benötigt. Dieser Agent wird hier beispielhaft A_PRODUKTION genannt. Zusätzlich muss WebSphere MQ V7 oder höher installiert sein. Dies ist erforderlich, da der Coordination Queue Manager die Pub-Sub Funktion nutzt, welche erst ab Version 7 verfügbar ist. Es ist ausreichend einen Queue Manager anzulegen. Dieser übernimmt neben der Funktion des Agent Queue Managers und des Command Queue Managers der beiden Agenten A_PRODUKTION und A_VERTRIEB auch die Funktion des Coordination Queue Managers. Dateien werden zwischen den beiden Systemen über den Serverchannel mit den Namen SVRCONN transferiert.
Häufig wird die Zahl der potentiellen Sender und Empfänger größer als zwei sein. Um bei sehr großen Teilnehmerzahlen den Überblick behalten zu können bietet die MQ FTE-Architektur prinzipiell zwei Hierarchiestufen. Teilnehmer mit hohem Sende-und Empfangsaufkommen werden mit WebSphere MQ und einem MQ FTE Server Agent ausgestattet, welcher sich mit einem lokal angelegten Queue Manager verbindet und Dateien über Sender- und Receiverchannel beziehungsweise Clusterchannel erhält, beziehungsweise versendet. Teilnehmer mit niedrigem Sende- und Empfangsaufkommen werden mit dem MQ FTE Client Agent ausgestattet, welcher sich mit einem entfernt liegendem Queue Manager verbindet und Dateien über einen Serverchannel empfängt beziehungsweise sendet.
Ein größeres Unternehmen unterhält die Hauptniederlassung in Berlin und Zweigniederlassungen in Tokio sowie New York. Zusätzlich dazu verfügt das Unternehmen über ein dichtes Filialnetz in Japan, USA und Deutschland. Ziel ist es alle gewonnenen Aufträge zentral zu erfassen um Geschäftszahlen einzelner Filialen besser vergleichen zu können.
Auf dem Computersystem Filiale1 USA wird lediglich ein MQ FTE Client Agent installiert. Alle MQ FTE Client Agents der Filialen in den USA werden über einen Serverchannel mit dem Queue Manager auf dem Computersystem Zweigniederlassung USA verbunden.
Die beiden Computersysteme Zweigniederlassung USA und Zweigniederlassung Japan weisen eine identische Konfiguration auf. Es wird eine WebSphere MQ Installation in der Version 6 oder höher benötigt um einen Queue Manager anzulegen. Dieser übernimmt die Rolle des Agent- und Command Queue Managers für die MQ FTE Client Agents der zugeordneten Filialen und den lokal installierten MQ FTE Server Agent. Um die Dateitransferinformationen an den Coordination Queue Manager schicken zu können, muss zu diesem ein Sender- und Receiverchannel eingerichtet werden. Er befindet sich auf dem Computersystem Zentrale Deutschland und dient zugleich dem MQ FTE Server Agent A_ZENTRALE als Command und Agent Queue Manager.
Einordung Cloud Computing
Das heutige Buzzword ist „Cloud Computing“ – ein neues Hype-Thema, getrieben von Herstellern und Analysten. Aber SOA und Cloud Computing können viel zur zukünftigen Gestaltung der Geschäftswelt beitragen.
Worüber reden wir hier eigentlich? Buzzword-Bingo? Oder echter Nutzen?
Wahrscheinlich zutreffende These: Wer ständig hohle Begriffe verwendet, landet bei bedeutungslosen Ergebnissen – mit entsprechenden Auswirkungen auf Erfolg und Reputation.
Doch was ist „Cloud Computing“? Ist es wirklich? Innovativ? Nur eine aktuelle Welle? Eine zukünftige Welle? Kosteneffizient? Interoperable? Findet es heute Verwendung? Bringt es Nutzen? Ja, z.B. bei IBM, Amazon, Google, …!
Können Unternehmen (auch mittelständische!) schon heute von den verfügbaren Modellen, Diensten und Anwendungen profitieren? Ja, denn auch „private Cloud“-Ansätze auf Basis von etablierten Virtualisierungslösungen werden heute in mittelständischen Unternehmen untersucht und „public Clouds“ können genutzt werden: zum Beispiel mittels Amazon EC2 dynamische WebSphere Application Server Workloads für intensive Softwaretest von eigenen J2EE Applikationen auf Pay-per-Use Basis zu nutzen. Schneller Nutzen ohne hohe Kosten.
Also was ist „Cloud Computing“? Ist es Grid Computing? Organic Computing? Utility Computing? Oder Software-as-a-service? Oder – gar SOA?
Nein – „Cloud Computing“ ist anders – mehr –
In Kürze: “Cloud Computing ist ein Service-Management Modell (Plattform), welche eine transparente Infrastruktur mit geringen Managementkosten zur Verfügung stellt.“
Cloud Computing ist bisher nicht allgemeingültig oder gar eindeutig definiert. Jedoch existieren eine Reihe von Definitionsansätzen:
Exkurs: Zitate zur Cloud Definition aus Sekundärquellen – in der rechten Marginalie.
Demzufolge geht Cloud Computing über andere gegenwärtig diskutierte Ansätze (siehe oben) und Konzepte (Virtualisierung, Konsolidierung) hinaus.
Nutzbarkeit und Wert
Aber hier soll nicht weiter auf die allgemeine Cloud Thematik eingegangen werden, sondern auf die Nutzbarkeit und den Wert den dieser Ansatz für Unternehmen haben kann.
Dieser wird jedoch im Wesentlichen durch die spätere Software bestimmt, welche die Geschäftprozesse unterstützt und so die Menschen produktiv und effektiv ihre Arbeitet gestalten lässt. Diese Anwendungen sollten so flexibel und agil reagieren können, wie dies auch die Menschen – wenn Sie denn hinreichend motiviert sind – es täglich unter Beweis stellen. Die Softwareindustrie stellt heute Anwendungssysteme zur Verfügung, welche diese Agilität besitzen. Die zugrunde liegende Software Architektur orientiert sich an der etablierten Arbeitsteilung und Dienstestruktur und fasst dies über die Serviceorientierte Architektur (SOA) zusammen. Reale Umsetzung nutzen heute die seit über einer Dekade bestehenden Erfahrungen in der asynchronen Kommunikation – wenn sinnvoll – an heutigen Standards orientiert. Damit entstanden (und entstehen weiterhin täglich) Integrationslandschaften, die auf stabilen Enterprise Service Bus Implementierungen fußen und diese SOA in einen praktischen Nutzen für Unternehmen umsetzten.
Wenn doch die Cloud alles transparent macht – wieso sollte es dann Implikationen auf die Anwendungssysteme geben?
Dazu erlauben Sie die Frage, ob Sie die Aufwände kennen, welche Unternehmen in die Nutzung von Legacy-Anwendungen (z.B. Cobol oder RPG basiert) und Plattformen (z.B. Mainframes, AS400- oder Tandem-Systeme) in der heutigen verteilten, heterogenen Welt vornehmen mussten? Worin war und ist dies begründet? Einerseits in den wertvollen Bestandslösungen, die einen Investitionsschutz erfordern und andererseits in den Chancen, welche in der Nutzung innovativer Techniken liegen. Da passten nun die ehemaligen und heutigen, bzw. zukünftigen Modelle, z.B. in der Softwarearchitektur, nicht zusammen. Vielfach erfolgreich umgesetzte Lösungskonzepte sehen hier heute die oben genannten SOA Konzepte und Realisierungen vor.
Wolkige Herausforderungen
Nun stehen mit den wolkigen Versprechungen neuartige Konstellationen ins Haus, welche die Kommunikation von Anwendungen innerhalb einer Cloud und über die Grenzen hinweg vor neue Herausforderungen stellt. Warum?
Weil – und bitte verzeihen Sie, dass nun ein bisschen an der Oberfläche der Details gekratzt werden muss – z.B. ein sinnvolles Programmiermodells (REST) für die Cloud nicht mit den Konzepten des üblichen SOA Programmiermodell (SOAP) übereinstimmt. Sollte uns dies sorgen? Ist eines schlechter oder besser? Nein! Nur angepasst auf die Umgebung – und das ist gut so!
SOAP ist eine Weiterentwicklung des XML-RPC und stellt damit die standardisierte Interprozesskommunikation analog zum altenehrwürdigen Remote Procedure Protocol in der SOA zur Verfügung – sprich für die verteilte, heterogene Welt.
REST steht für Representational State Transfer und bezeichnet einen Architekturstil in dem jede Ressource eigenständig (mit einer eigenen URI) verfügbar ist. Enorm erfolgreich im World Wide Web. REST sieht wohldefinierte Operationen vor, die auf alle Ressourcen angewendet werden können (z.B. GET, POST, PUT und DELETE).
Eine SOA kann ebenso RESTful sein, wobei hier ein Mapping von logischen Ressourcen und Diensten notwendig ist (REST handelt mit Ressourcen, nicht mit Services). Eine architekturelle Wahl, keine Implementierungsentscheidung.
Dieses (einfache) Beispiel zum Programmiermodell ist nur eine der Implikationen, die durch ein anderes Betriebs- und Managementmodell zu betrachten sind.
Allgemein sind wesentliche Überlegungen zur Interopearbilität von Multi-tier Anwendungslandschaften zu tätigen und für die eigene Situation zu bewerten. Ob von operativer Seite oder gar hinsichtlich der End-to-End Prozessverfolgung, sprich Nachrichtenverfolgung über die Grenzen der eigen- und fremdbetriebenen Systeme hinweg. Die gute Nachricht: dazu gibt es heute bereits Lösungen, da dies z.B. im Bereich von verteilten Integrationsumgebungen (federated ESBs) hinsichtlich der Inter-/Intra-ESB Interaktionen und des Government, sprich der Ansätze zu Domain-bezogenen Service Registries, in konkreten Projekten erarbeitet wurde.
Die schlechte Nachricht: es wird durch Connectivity-as-a-Service oder Integration-as-a-Service Ansätze nicht weniger komplex – die gute Nachricht dazu im Kontext der schlechten: die konsequente Arbeit der letzen Jahre im Bereich SOA hilft hierzu die richtigen Antworten zu formulieren.
Doch nur Buzzword-Bingo?
Aber was hat das mit der heutigen Praxis zu tun? Wie steht es mit dem Nutzen? Dazu ein Beispiel eines Kunden:
Er hat seine Integrationslandschaft – sein Rückgrat seiner SOA – seit Jahren bei einem großen Outsourcing Partner im Betrieb und wechselt nun diesen. Dabei stellt er fest, dass viele der Applikationen Abhängigkeiten von anderen haben, welche nicht im Detail dokumentiert oder bewusst bekannt und damit auch nicht automatisiert sind. Somit muss nun eine entsprechende Analyse diese Details zusammentragen, die Implikationen und Abhängigkeiten bewerten, für den Übergang die notwendigen Infrastrukturbedingungen schaffen und den Aufbau im neuen Environment automatisiert generieren.
Wie sähe eine Lösungsmöglichkeit mit einer Private Cloud heute aus: Die oben beschriebenen Abhängigkeiten, etc würden heute in der privaten Cloud konfiguriert sein und im eigenen Rechenzentrum oder beim alten Partner betrieben werden – als elastische Workloads. Beim Wechsel könnte dies logisch als Einheit transferiert werden oder gar bei saisonalen Erfordernissen zusätzlich verteilt werden.
Kann dies nicht schon heute so erfolgen? Ja – zum Teil – über Virtualisierungslösungen (z.B. mit Systemen wie VMware, oder den entsprechenden IBM Hypervisors auf System p oder z, …)
Warum nur zum Teil, bzw. warum wird es nicht mehr und stringent genutzt? Weil viel Aufwand in die Erstellung der „Verskriptung“ zum Aufbau der Umgebung, zur Installation der Applikationsserver, zum automatischen Hoch- und Runterfahren der (Anwendungs-)Systeme, etc. zu stecken ist. – Viel Gelegenheit für Fehlersituationen, geringe Wiederverwendbarkeit in anderen Umbegungen – Viel Arbeit!
“Take this labour out!” – von Regenmachern und Wolkenbrüchen
Also braucht es auf die Virtualisierungslösungen aufbauende Konzepte und Produkte und hier setzt Cloud Computing an. Wenn dann noch die Applikationsschicht automatisiert verteilbar ist und die Services korrekt, sicher, zuverlässig und performant kooperieren können, kommen wir der schönen, neuen SOA/Cloud Welt einen Schritt näher. Die Architekturimplikationen sind mannigfach – doch SOA birgt die notwendigen Antworten und im Bereich des Deployments gibt es nun einen weiteren Schritt der helfen kann, das Platform-as-a-Service Versprechen einzulösen.
Die zum Thema Cloud Computing passende Produktankündigung auf der Impact 2009 in Las Vegas war WebSphere Cloudburst. Bei der IBM WebSphere CloudBurst Appliance handelt es sich um ein Komplettsystem, um die Installation und Inbetriebnahme (Roll Out) von neuen Applikationen in einer Cloud Infrastruktur zu vereinfachen und zu beschleunigen (Minuten vs. Wochen) und damit dieses Deployment produktiv und zuverlässig abzuwickeln. Die Grundlage hierfür ist, dass mit dieser Appliance die Images von virtuellen Maschinen komplett gemanagt werden können (insbesondere wichtig: die geschützte Speicherung), solange sie WebSphere Application Server Hypervisor Edition zur Grundlage haben. Diese Images repräsentieren also spezielle WebSphere Anwendungen.
Ist das reell? Reell ist die Anforderung, und die Umsetzung von Szenarien – wie im obigen Kundenbeispiel beschrieben, wird zeigen in welcher Konstellation dies Arbeit, Zeit und Kosten spart.
Es gab weitere Cloud Offerings auf der Impact – BlueWorks als cloud-basiertes Werkzeug zur Modellierung von Geschäftsprozessen und deren weitere Übersetzung in IT-gerechte Arbeitschritte, um unkompliziert diese Techniken auszuprobieren. Und IBMs Innov8 (gesprochen Innovate), ein „ernsthaftes Spiel“ zur Simulation realer Geschäftsabläufe, sowie weitere mit dem Cloud Computing zusammenhängende SaaS Ansätze wie z.B. LotusLive. Auf diese Punkte gehen wir zu einem späteren Zeitpunkt ein.
Schluss
SOA und Cloud Computing werden helfen, Verbraucher und Herausgeber von Diensten zusammenzubringen. Wie beschrieben kann dies enorme Implikationen auf die Art haben, wie wir Systeme bauen aber auch unsere Organisationen führen, denn solch eine Technologie kann neue unternehmerische Ansätze und organisatorische Transformationen ermöglichen.
P.S. Die Möglichkeiten an Flexibilität und Agilität die nun im Cloud Computing versprochen werden, lassen die Cloud als Erweiterung der SOA in die physische Welt erscheinen – ja, insofern „wächst SOA in die Cloud“ hinein!
Weitere Informationen:
Eine umfangreiche Diskussion zur Cloud IT unter Above the Clouds: A Berkeley View of Cloud Computing