Nach und nach veröffentlicht eBay kritische Element seiner selbsterstellten Infrastruktur als Opensource Software; nach ql.io wurden auch die Javascript IDE VJET und die SOA Plattform Turmeric freigegeben. Letztere will ich kurz vorstellen, für eine detaillierte Einführung ist dies Blog kein geeigneter Rahmen.
Überblick
Service Oriented Architecture, SOA, ist ein Buzzword mit zwei großen, erfolgreichen Umsetzungen als Werbung: eBay und Amazon. ebay setzt dabei IIRC komplett auf Turmeric – alle Services werden dagegen entwickelt. Die Plattform selbst ist in java geschrieben, dabei aber komplett standardbasiert (WSDL SOAP/REST, XACML, XML, JSON, …) - Konsumenten und angebotene Dienste können also in anderen standardbasierten Umgebungen geschrieben werden.
Natürlich ist es aber so, dass die Entwicklung in Java von der Plattform bevorzugt behandelt wird. Im einzelnen besteht Turmeric aus
- der Laufzeitumgebung Bringt alles zusammen Out of the Box können Daten zwischen Konsumenten und Diensten in einigen Formaten ausgetauscht werden: XML, JSON, binary XML, Name-Value
- Eclipse Plugins
- Services Entwicklung
- Consumer Entwicklung
- Type libraries
- Error libraries
- WSDL-Assertion Service Eclipse kann die Service Definition auf Einhaltung bestimmter Eigenschaften prüfen
- Monitoring
- konfigurierbare Metriken
- Echtzeitauswertung von Metriken auf Client und Server Seite
- Storageprovider die die Daten von den App-servern zum Monitoring "pushen"
- Übersicht über alle beteiligten Knoten
- Konsole
- Security Services
- Policy Konsole Editieren der Policies, die der Security Service überwacht
- Repository Service Überwacht den kompletten Lebenszyklus eines Dienstes, inklusive seiner Abhängigkeiten
Einblick
Turmeric ist ein komplettes System, das alle Aspekte einer SOA-Umgebung abdeckt. Ein Blick in die Repositoryliste auf Github verrät, dass hier orthogonale Aspekte der Architektur auch getrennt voneinander entwickelt werden.
Wichtig ist die Unterscheidung zwischen Registry und Repository. Die Registry enthält den Dienstekatalog: Wer kann was. Das Repository deckt den Lebenszyklus eines Dienstes ab: Start, Stop, Update, Rollback, …). Konsumenten können auch beantragen im Falle einer Änderung eines Dienstes benachrichtigt zu werden.
Die Plattform arbeitet vollständig Policy basiert; d.h. welcher Konsument welche Services nutzen darf, wird fein granuliert gesteuert. Auch die generierte Last von Konsumenten kann durch RateLimiter über Policies begrenzt werden.
Das Monitoring erfolgt in vier Oberpunkten: Dienste, Konsumenten, Policies und Fehler; für Entwickler und Resourcenplaner ein sinnreiches Vorgehen.
Einige Informationen, und einen weitergehenden Einblick verschafft ein Blick in die Github Repositories. Ein (Chef) Entwickler von Turmeric, Sastry Malladi, spricht mit Simon Phipps (Ex-SUN Entwickler) und Dan Lynch in Episode 201 von FLOSS Weekly über sein Baby (und läßt sich ein paar wenige Einblicke in interna von eBay entlocken – aber nicht viele).
Ausblick
Wer sich mit SOA befasst, und an der Implementierung einer SOA Infrastruktur arbeitet, sollte sich Turmeric anschauen – auch wenn der barocke Javastil nicht allen Freude machen wird, steckt die Plattform voller Inspirationen für Lösungen für die allgemeinen Probleme einer Service Orientierten Architektur – und es ist kein Projekt, das bisher auf zwei Webhosting Servern läuft und drei bis vier Nutzer bedient – eBay hat einige hundert Dienste im produtiven Einsatz, setzt also buchstäblich das eigene Portemonnaie darauf (ein sehr, sehr großes Portemonnaie…).