140 likes | 299 Views
Event-Driven SOA on Grails. Paul Citarella. About Me . Software Engineer Enterprise Architect IT Executive Founder Consultant. The Problem. The Solution. More Problems. Next Generation SOA. Traditional SOA isn’t without challenges Coupling (spaghetti architecture) Temporal coupling
E N D
Event-Driven SOA on Grails Paul Citarella
About Me • Software Engineer • Enterprise Architect • IT Executive • Founder • Consultant
Next Generation SOA • Traditional SOA isn’t without challenges • Coupling (spaghetti architecture) • Temporal coupling • ESBs attempted to solve these problems • Implementation isn’t trivial • Proprietary development models • Event-driven SOA is a better solution • Completely eliminates both types of coupling • Message bus = Enterprise Service Bus
30K Ft View Service (Durable Subscriber) Business Process Service (Durable Subscriber) Service (Durable Subscriber) Business Process Service (Durable Subscriber) Service (Durable Subscriber) JMS (Single Pub-Sub Topic)
10K Ft View AbcProcess Service NewOrder NewXyz Order Router Service XyzProcess Service Auth Request Charge Authed Get: /orders/123 Order Service Billing Service Other Services
Standard Message Format { "eventName": "NewOrder", "referenceId": "/order/1", "published": "2012-09-11T15:42:05Z" "details": { "foo": "bar" } }
Correlation: PCID • Pattern: Propagating Composite Identifier eventName: NewOrder referenceId: /order:123 eventName: NewXyzOrder referenceId: /order:123/xyz eventName: AuthRequest referenceId: /order:123/xyz eventName: ChargeAuthed referenceId: /order:123/xyz/charge:789
Subscription Selectors • Router eventName: NewOrder referenceId: * • XyzProcess eventName: * referenceId: ‘like %/xyz/%’ • Billing eventName: AuthRequest referenceId: *
Implementation • Service = Grails app • Synchronous services are REST/JSON • Async are JMS/JSON via JMS plugin • Custom plugins for common functionality • Testing • Spock (Unit and Integration) • Geb (Functional) • Betamax • Deployed in WebLogic and Standalone w/ embedded Tomcat
Proof-of-Concept Demo • Backbone • Router • Simple Order Process • Tools • Sponge (Support Console) • Harness (Testing and Respository) • Plugins • Event-Driven • Service Security UI
Resources • Full POC available on GitHub • http://github.com/enterprise-grails/utopia • Enterprise Integration Patterns • http://www.eaipatterns.com • Email • paul@enterprise-grails.com